From 555b32b5dc9ffae3ea3ecac7876640910ce8aa36 Mon Sep 17 00:00:00 2001 From: Francesco Gatti Date: Sat, 14 Mar 2020 17:22:58 +0100 Subject: [PATCH] Refactoring Signed-off-by: Francesco Gatti --- src/NetworkRT.cpp | 46 +++++++++++---------------- tests/yolo3_tiny/yolo3_tiny.cpp | 2 +- tests/yolo3_tiny512/yolo3_tiny512.cpp | 2 +- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/NetworkRT.cpp b/src/NetworkRT.cpp index 711f079..17f32bf 100644 --- a/src/NetworkRT.cpp +++ b/src/NetworkRT.cpp @@ -306,33 +306,19 @@ ILayer* NetworkRT::convert_layer(ITensor *input, Pooling *l) { 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); - checkNULL(lRT); - lRT->setName( "MaxPoolingFixedSize" ); return lRT; } 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}); checkNULL(lRT); lRT->setPadding(DimsHW{l->paddingH, l->paddingW}); lRT->setStride(DimsHW{l->strideH, l->strideW}); return lRT; - } } @@ -450,20 +436,24 @@ ILayer* NetworkRT::convert_layer(ITensor *input, Shortcut *l) { //std::cout<<"New plugin Shortcut\n"; 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); - // checkNULL(lRT); - - return lRT; + if(l->backLayer->output_dim.c == l->output_dim.c) + { + IElementWiseLayer *lRT = networkRT->addElementWise(*input, *back_tens, ElementWiseOperation::kSUM); + 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) { diff --git a/tests/yolo3_tiny/yolo3_tiny.cpp b/tests/yolo3_tiny/yolo3_tiny.cpp index f06fab0..e6491c6 100644 --- a/tests/yolo3_tiny/yolo3_tiny.cpp +++ b/tests/yolo3_tiny/yolo3_tiny.cpp @@ -55,7 +55,7 @@ int main() { 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::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::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY); diff --git a/tests/yolo3_tiny512/yolo3_tiny512.cpp b/tests/yolo3_tiny512/yolo3_tiny512.cpp index b3a6d03..cd6444f 100644 --- a/tests/yolo3_tiny512/yolo3_tiny512.cpp +++ b/tests/yolo3_tiny512/yolo3_tiny512.cpp @@ -52,7 +52,7 @@ int main() { 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::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::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);