+18
-28
@@ -306,33 +306,19 @@ ILayer* NetworkRT::convert_layer(ITensor *input, Pooling *l) {
|
|||||||
|
|
||||||
if(l->maxpoolfixedsize)
|
if(l->maxpoolfixedsize)
|
||||||
{
|
{
|
||||||
IPlugin *plugin = new MaxPoolFixedSizeRT(l->output_dim.c, l->output_dim.h, l->output_dim.w, l->output_dim.n, l->strideH, l->strideW, l->winH, l->winH-1);
|
IPlugin *plugin = new MaxPoolFixedSizeRT(l->output_dim.c, l->output_dim.h, l->output_dim.w, l->output_dim.n, l->strideH, l->strideW, l->winH, l->winH-1);
|
||||||
|
|
||||||
IPluginLayer *lRT = networkRT->addPlugin(&input, 1, *plugin);
|
IPluginLayer *lRT = networkRT->addPlugin(&input, 1, *plugin);
|
||||||
|
|
||||||
checkNULL(lRT);
|
checkNULL(lRT);
|
||||||
lRT->setName( "MaxPoolingFixedSize" );
|
|
||||||
return lRT;
|
return lRT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(l->paddingH == 0 && l->paddingW == 0 && l->input_dim.h == l->output_dim.h && l->input_dim.w == l->output_dim.w)
|
|
||||||
{
|
|
||||||
IPlugin *plugin = new ResizeLayerRT( l->output_dim.c,l->output_dim.h+1,l->output_dim.w+1 );
|
|
||||||
IPluginLayer *lRT = networkRT->addPlugin(&input, 1, *plugin);
|
|
||||||
checkNULL(lRT);
|
|
||||||
lRT->setName( "Resize" );
|
|
||||||
|
|
||||||
input = lRT->getOutput(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
IPoolingLayer *lRT = networkRT->addPooling(*input, ptype, DimsHW{l->winH, l->winW});
|
IPoolingLayer *lRT = networkRT->addPooling(*input, ptype, DimsHW{l->winH, l->winW});
|
||||||
checkNULL(lRT);
|
checkNULL(lRT);
|
||||||
|
|
||||||
lRT->setPadding(DimsHW{l->paddingH, l->paddingW});
|
lRT->setPadding(DimsHW{l->paddingH, l->paddingW});
|
||||||
lRT->setStride(DimsHW{l->strideH, l->strideW});
|
lRT->setStride(DimsHW{l->strideH, l->strideW});
|
||||||
return lRT;
|
return lRT;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,20 +436,24 @@ ILayer* NetworkRT::convert_layer(ITensor *input, Shortcut *l) {
|
|||||||
//std::cout<<"New plugin Shortcut\n";
|
//std::cout<<"New plugin Shortcut\n";
|
||||||
|
|
||||||
ITensor *back_tens = tensors[l->backLayer];
|
ITensor *back_tens = tensors[l->backLayer];
|
||||||
|
|
||||||
// plugin version
|
|
||||||
IPlugin *plugin = new ShortcutRT(l->backLayer->output_dim);
|
|
||||||
ITensor **inputs = new ITensor*[2];
|
|
||||||
inputs[0] = input;
|
|
||||||
inputs[1] = back_tens;
|
|
||||||
IPluginLayer *lRT = networkRT->addPlugin(inputs, 2, *plugin);
|
|
||||||
checkNULL(lRT);
|
|
||||||
|
|
||||||
|
|
||||||
// IElementWiseLayer *lRT = networkRT->addElementWise(*input, *back_tens, ElementWiseOperation::kSUM);
|
if(l->backLayer->output_dim.c == l->output_dim.c)
|
||||||
// checkNULL(lRT);
|
{
|
||||||
|
IElementWiseLayer *lRT = networkRT->addElementWise(*input, *back_tens, ElementWiseOperation::kSUM);
|
||||||
return lRT;
|
checkNULL(lRT);
|
||||||
|
return lRT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// plugin version
|
||||||
|
IPlugin *plugin = new ShortcutRT(l->backLayer->output_dim);
|
||||||
|
ITensor **inputs = new ITensor*[2];
|
||||||
|
inputs[0] = input;
|
||||||
|
inputs[1] = back_tens;
|
||||||
|
IPluginLayer *lRT = networkRT->addPlugin(inputs, 2, *plugin);
|
||||||
|
checkNULL(lRT);
|
||||||
|
return lRT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ILayer* NetworkRT::convert_layer(ITensor *input, Yolo *l) {
|
ILayer* NetworkRT::convert_layer(ITensor *input, Yolo *l) {
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ int main() {
|
|||||||
|
|
||||||
tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true);
|
tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true);
|
||||||
tk::dnn::Activation a10(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a10(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX);
|
tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX, false, true);
|
||||||
|
|
||||||
tk::dnn::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true);
|
tk::dnn::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true);
|
||||||
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ int main() {
|
|||||||
|
|
||||||
tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true);
|
tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true);
|
||||||
tk::dnn::Activation a10(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a10(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX);
|
tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX, false, true);
|
||||||
|
|
||||||
tk::dnn::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true);
|
tk::dnn::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true);
|
||||||
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
|
|||||||
Reference in New Issue
Block a user