将环境准备好后,此处使用到Pytorch 版本的yolov4-tiny,初始yolov4-tiny训练出来的权重文件大小为23M左右。之后在原来模型上进行稍微到调整,训练后到权重文件大小为48M左右,差不多为原2倍左右。
程序移植
首先需要保证torch、torchvision、CUDA等版本的一致。
不同的环境缺少的包也不同,特别是换源问题,在上一篇有提到,换源后会出现安装指定版本失败等结果。建议使用自带源。
- 问题一:The _imagingft C module is not installed
这个问题可能是某些依赖包到版本不匹配,如pillow的版本不能太高,若使用更换后到源安装会导致不匹配,自动安装最新的,所以需要使用原始源进行安装,一般pillow<7 即可,最新的会出现兼容性问题。 - 问题二:程序检测用时过长
程序加载权重完成后等待输入图像数据时,明显在使用ubuntu桌面的时候会出现卡顿问题,毕竟桌面运行是要占取内存,总共才4GB,而且还是显卡和CPU共用,特别是在输入图像后,一次检测需要差不多两分钟。鼠标开启拉PPT模式,无论是在程序中使用CV2打开图像,还是桌面运行导致的,都是下一步需要优化的方向,以及使用一些程序优化手段。
问题解决
由于水平有限,受限于环境到版本、网络的改进,暂时先把问题搁置在这里。
yolov4
有隔壁描述可以运行yolov4,以此根据此大佬的步骤运行,不需要进行tensorrt自定义网络
步骤
- 首先git下整个文件夹
- 根据README中的Example操作即可
-
可能在这里会遇到以下几个问题
-
Failed to load module “canberra-gtk-module”
这是由于未安装依赖包,执行以下命令即可 -
no kernel image is available for execution on the device
这个问题是没有选择指定到GPU,需要在根目录下的CMakeLists.txt中 修改 set(GPU_ARCHS 53) 中的值,NX是62,Nano是53,不同的环境不同,Jetson平台可通过jtop查看
终端输入jtop,按6INFO查看
-
-
其他可根据以上github地址中操作
编译问题
注意:yolov4源码在不同的平台编译后,复制到另外一个平台不同直接用,需要直接编译,这是由于make时,是根据主机的环境进行编译,以下错误均是因为此原因。环境不同时,需要进行再次make编译
问题一:/usr/include/cuda_runtime.h:91:27: fatal error: builtin_types.h:
这是由于CUDA环境的不一致
问题二:error while loading shared libraries: libopencv_highgui.so.3.2;这是由于opencv版本不一致
模型转换
- darknet ->ONNX
python3 tools/yolo_to_onnx.py --cfg model/yolov4.cfg --weights model/yolov4.weights --out model/yolov4.onnx
- ONNX-> engine
./buildEngine -i model/yolov4.onnx -o model/yolov4.engine -b 1 -m 0