jetson配置yolov5(tensor加速版)出现的问题(killed+tensor+~)

1.在cmake生成engine引擎文件时,出现一系列报错

make
[ 20%] Building NVCC (Device) object CMakeFiles/myplugins.dir/myplugins_generated_yololayer.cu.o
/home/lin/yolov5-4.0/yolov5/yololayer.h(54): error: member function declared with "override" does not override a base class member

/home/lin/yolov5-4.0/yolov5/yololayer.h(54): warning: function "nvinfer1::IPluginV2::enqueue(int32_t, const void *const *, void *const *, void *, cudaStream_t)" is hidden by "nvinfer1::YoloLayerPlugin::enqueue" -- virtual function override intended?

/home/lin/yolov5-4.0/yolov5/yololayer.h(85): warning: function "nvinfer1::IPluginV2Ext::configurePlugin(const nvinfer1::Dims *, int32_t, const nvinfer1::Dims *, int32_t, const nvinfer1::DataType *, const nvinfer1::DataType *, const __nv_bool *, const __nv_bool *, nvinfer1::PluginFormat, int32_t)" is hidden by "nvinfer1::YoloLayerPlugin::configurePlugin" -- virtual function override intended?

/home/lin/yolov5-4.0/yolov5/yololayer.h(87): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::detachFromContext" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::detachFromContext"

/home/lin/yolov5-4.0/yolov5/yololayer.h(85): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::configurePlugin" is incompatible with that of overridden function "nvinfer1::IPluginV2IOExt::configurePlugin(const nvinfer1::PluginTensorDesc *, int32_t, const nvinfer1::PluginTensorDesc *, int32_t)"

/home/lin/yolov5-4.0/yolov5/yololayer.h(82): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::attachToContext" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::attachToContext"

/home/lin/yolov5-4.0/yolov5/yololayer.h(80): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::canBroadcastInputAcrossBatch" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::canBroadcastInputAcrossBatch"

/home/lin/yolov5-4.0/yolov5/yololayer.h(78): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::isOutputBroadcastAcrossBatch" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::isOutputBroadcastAcrossBatch"

/home/lin/yolov5-4.0/yolov5/yololayer.h(76): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getOutputDataType" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::getOutputDataType"

/home/lin/yolov5-4.0/yolov5/yololayer.h(74): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginV2::getPluginNamespace"

/home/lin/yolov5-4.0/yolov5/yololayer.h(72): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::setPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginV2::setPluginNamespace"

/home/lin/yolov5-4.0/yolov5/yololayer.h(70): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::clone" is incompatible with that of overridden function "nvinfer1::IPluginV2Ext::clone"

/home/lin/yolov5-4.0/yolov5/yololayer.h(70): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::clone" is incompatible with that of overridden function "nvinfer1::IPluginV2::clone"

/home/lin/yolov5-4.0/yolov5/yololayer.h(68): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::destroy" is incompatible with that of overridden function "nvinfer1::IPluginV2::destroy"

/home/lin/yolov5-4.0/yolov5/yololayer.h(66): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getPluginVersion" is incompatible with that of overridden function "nvinfer1::IPluginV2::getPluginVersion"

/home/lin/yolov5-4.0/yolov5/yololayer.h(64): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getPluginType" is incompatible with that of overridden function "nvinfer1::IPluginV2::getPluginType"

/home/lin/yolov5-4.0/yolov5/yololayer.h(60): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::supportsFormatCombination" is incompatible with that of overridden function "nvinfer1::IPluginV2IOExt::supportsFormatCombination"

/home/lin/yolov5-4.0/yolov5/yololayer.h(58): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::serialize" is incompatible with that of overridden function "nvinfer1::IPluginV2::serialize"

/home/lin/yolov5-4.0/yolov5/yololayer.h(56): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getSerializationSize" is incompatible with that of overridden function "nvinfer1::IPluginV2::getSerializationSize"

/home/lin/yolov5-4.0/yolov5/yololayer.h(52): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getWorkspaceSize" is incompatible with that of overridden function "nvinfer1::IPluginV2::getWorkspaceSize"

/home/lin/yolov5-4.0/yolov5/yololayer.h(50): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::terminate" is incompatible with that of overridden function "nvinfer1::IPluginV2::terminate"

/home/lin/yolov5-4.0/yolov5/yololayer.h(48): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::initialize" is incompatible with that of overridden function "nvinfer1::IPluginV2::initialize"

/home/lin/yolov5-4.0/yolov5/yololayer.h(46): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getOutputDimensions" is incompatible with that of overridden function "nvinfer1::IPluginV2::getOutputDimensions"

/home/lin/yolov5-4.0/yolov5/yololayer.h(41): error: exception specification for virtual function "nvinfer1::YoloLayerPlugin::getNbOutputs" is incompatible with that of overridden function "nvinfer1::IPluginV2::getNbOutputs"

/home/lin/yolov5-4.0/yolov5/yololayer.h(124): error: exception specification for virtual function "nvinfer1::YoloPluginCreator::getPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getPluginNamespace"

/home/lin/yolov5-4.0/yolov5/yololayer.h(119): error: exception specification for virtual function "nvinfer1::YoloPluginCreator::setPluginNamespace" is incompatible with that of overridden function "nvinfer1::IPluginCreator::setPluginNamespace"

/home/lin/yolov5-4.0/yolov5/yololayer.h(117): error: exception specification for virtual function "nvinfer1::YoloPluginCreator::deserializePlugin" is incompatible with that of overridden function "nvinfer1::IPluginCreator::deserializePlugin"

/home/lin/yolov5-4.0/yolov5/yololayer.h(115): error: exception specification for virtual function "nvinfer1::YoloPluginCreator::createPlugin" is incompatible with that of overridden function "nvinfer1::IPluginCreator::createPlugin"

/home/lin/yolov5-4.0/yolov5/yololayer.h(113): error: exception specification for virtual function "nvinfer1::YoloPluginCreator::getFieldNames" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getFieldNames"

/home/lin/yolov5-4.0/yolov5/yololayer.h(111): error: exception specification for virtual function "nvinfer1::YoloPluginCreator::getPluginVersion" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getPluginVersion"

/home/lin/yolov5-4.0/yolov5/yololayer.h(109): error: exception specification for virtual function "nvinfer1::YoloPluginCreator::getPluginName" is incompatible with that of overridden function "nvinfer1::IPluginCreator::getPluginName"

/home/lin/yolov5-4.0/yolov5/yololayer.cu(175): error: object of abstract class type "nvinfer1::YoloLayerPlugin" is not allowed:
            pure virtual function "nvinfer1::IPluginV2::enqueue" has no overrider

/home/lin/yolov5-4.0/yolov5/yololayer.cu(319): error: object of abstract class type "nvinfer1::YoloLayerPlugin" is not allowed:
            pure virtual function "nvinfer1::IPluginV2::enqueue" has no overrider

/home/lin/yolov5-4.0/yolov5/yololayer.cu(328): error: object of abstract class type "nvinfer1::YoloLayerPlugin" is not allowed:
            pure virtual function "nvinfer1::IPluginV2::enqueue" has no overrider

32 errors detected in the compilation of "/home/lin/yolov5-4.0/yolov5/yololayer.cu".
CMake Error at myplugins_generated_yololayer.cu.o.Debug.cmake:280 (message):
  Error generating file
  /home/lin/yolov5-4.0/yolov5/build/CMakeFiles/myplugins.dir//./myplugins_generated_yololayer.cu.o


make[2]: *** [CMakeFiles/myplugins.dir/build.make:65: CMakeFiles/myplugins.dir/myplugins_generated_yololayer.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:104: CMakeFiles/myplugins.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

1.1 原因分析

根据大佬tensorrtx/yolov5 at yolov5-v4.0 · wang-xinyu/tensorrtx 

的包中,他的配置条件是在tensoRT7.x的环境下部署的,而我的TensorRT是8.x版本的,这就很那个了。

1.2解决方法

 

https://github.com/wang-xinyu/tensorrtx/tree/b7a754e2de7b21989a868f2740b82d8417dad1cf/yolov5

把上述包里面的文件下下来,然后把之前yolov5文件下的文件全部替换成能支持tensoRT8的,然后就ok!

2.在jetson运行yolo5时会报错AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor

解决方法:参考大神YOLOV5 | AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘ 问题解决 亲测有效_yolov5-lite export.py attributeerror: 'upsample' o-CSDN博客

真的牛皮!!! 

3,运行爆显存killed

查看这位大神的,稳!

Jetson nano增加Swap分区大小操作指南_jetson 查看 swap 大小-CSDN博客 

tip:在我们进行make -jx 编译时,这个x表示运用的并行进程数,我们可以通过
 

nproc

来查看,这命令会返回你的CPU核心数,这通常可以作为 x 的最大值。

4.no module named tensorrt

在虚拟环境运行时,虚拟环境不能链接到系统环境的tensorRT8.x包,按照网上教程我本打算配置编译tensort模块,但是失败了,有待研究。

Installing TensorRT — NVIDIA TensorRT Documentation 

没有名为 tensorrt 的模块 ·问题 #344 ·王欣宇/TensorRTX  

Jetson安装Python3.8 tensorrt库_jetson tensorrt-CSDN博客

此文章为vip文章,想要免费文章可以联系小编。 (此文章有些细节需要注意,有时间会出一篇)

另一个方法,加入系统环境python版本和你的虚拟环境一样,你可以尝试下列方法:

玩转NVIDIA Jetson (26)--- 在python虚拟环境中快速使用tensorRT_jetson tensorrt python-CSDN博客

稳啦,稳啦! 

跑出来的检测效果为50帧左右!

你可能感兴趣的:(jetson学习,YOLO,jetson,cuda,tensor)