performance improvements for yolo based networks,significant reduction in inference time can be seen yolo4tiny ,yolo4 and minor reduction in inference time can be seen in yolo4_berkeley_f1 and yolo4_berkeley - tested with a batchsize of 1 and 2 and on gtx 1070,it is possible that the performance improvement is more signficant in newer hardware

This commit is contained in:
perseusdg
2022-01-03 13:52:16 +05:30
parent a4781244f4
commit dcf4054bc6
2 changed files with 57 additions and 44 deletions
+1 -1
View File
@@ -93,7 +93,7 @@ public:
nvinfer1::IPluginV2Layer* convert_layer(nvinfer1::ITensor *input, Region *l); nvinfer1::IPluginV2Layer* convert_layer(nvinfer1::ITensor *input, Region *l);
nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Shortcut *l); nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Shortcut *l);
nvinfer1::IPluginV2Layer* convert_layer(nvinfer1::ITensor *input, Yolo *l); nvinfer1::IPluginV2Layer* convert_layer(nvinfer1::ITensor *input, Yolo *l);
nvinfer1::IPluginV2Layer* convert_layer(nvinfer1::ITensor *input, Upsample *l); nvinfer1::IResizeLayer* convert_layer(nvinfer1::ITensor *input, Upsample *l);
nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, DeformConv2d *l); nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, DeformConv2d *l);
#if NV_TENSORRT_MAJOR > 5 && NV_TENSORRT_MAJOR < 8 #if NV_TENSORRT_MAJOR > 5 && NV_TENSORRT_MAJOR < 8
+15 -2
View File
@@ -504,6 +504,11 @@ ILayer* NetworkRT::convert_layer(ITensor *input, Activation *l) {
checkNULL(lRT); checkNULL(lRT);
return lRT; return lRT;
} }
else if(l->act_mode == CUDNN_ACTIVATION_ELU || l->act_mode == ACTIVATION_ELU){
IActivationLayer *lRT = networkRT->addActivation(*input,ActivationType::kELU);
checkNULL(lRT);
return lRT;
}
else { else {
FatalError("this Activation mode is not yet implemented"); FatalError("this Activation mode is not yet implemented");
return NULL; return NULL;
@@ -690,8 +695,9 @@ IPluginV2Layer* NetworkRT::convert_layer(ITensor *input, Yolo *l) {
return lRT; return lRT;
} }
IPluginV2Layer* NetworkRT::convert_layer(ITensor *input, Upsample *l) { IResizeLayer* NetworkRT::convert_layer(ITensor *input, Upsample *l) {
//std::cout<<"convert Upsample\n";
#if NV_TENSORRT_MAJOR < 8
auto creator = getPluginRegistry()->getPluginCreator("UpSample_tkDNN","1"); auto creator = getPluginRegistry()->getPluginCreator("UpSample_tkDNN","1");
std::vector<PluginField> mPluginAttributes; std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC{}; PluginFieldCollection mFC{};
@@ -705,6 +711,13 @@ IPluginV2Layer* NetworkRT::convert_layer(ITensor *input, Upsample *l) {
auto *lRT = networkRT->addPluginV2(&input, 1, *plugin); auto *lRT = networkRT->addPluginV2(&input, 1, *plugin);
checkNULL(lRT); checkNULL(lRT);
return lRT; return lRT;
#else
auto *lRT = networkRT->addResize(*input);
lRT->setResizeMode(ResizeMode::kNEAREST);
lRT->setOutputDimensions(Dims3{l->output_dim.c, l->output_dim.h, l->output_dim.w});
checkNULL(lRT);
return lRT;
#endif
} }
ILayer* NetworkRT::convert_layer(ITensor *input, DeformConv2d *l) { ILayer* NetworkRT::convert_layer(ITensor *input, DeformConv2d *l) {