ubuntu18下使用TensorRT对yolov5加速记录
默认已经安装好了Vs2015,cuda,cudnn
一,安装TensorRT
1.对应自己的Cuda 与Cudnn版本
nvcc -V
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
我的版本信息如下
2.下载TensorRT
下载链接TensorRT
下载对应版本即可
3.安装TensorRT
参考:教程
二,使用tensorRT加速LeNet验证
主要步骤参考:https://github.com/wang-xinyu/tensorrtx/blob/master/tutorials/getting_started.md
补充:
1.cp [PATH-OF-pytorchx]/pytorchx/lenet/lenet5.wts .
在这一步中, [PATH-OF-pytorchx]并不是你的pytorch安装路径,应该是在上一步中git clone的pytorchx文件夹路径。觉得麻烦,也可以直接复制文件到对应文件夹。
2.需要修改tensorrtx/lenet/CMakeLists.txt内容
include_directories(/usr/include/x86_64-linux-gnu/)
link_directories(/usr/lib/x86_64-linux-gnu/)
修改为
include_directories(/home/xxxx/TensorRT-6.0.1.5/include/)
link_directories(/home/xxxx/TensorRT-6.0.1.5/targets/x86_64-linux-gnu/lib/)
即修改为你自己的trnsorRT的路径
三,使用TensorRT加速yolov5
1.
1)下载yolov5文件
此处要注意下载版本的问题,尤其是之后需要下载对应的.pt文件。yolov5目前已经更新到了V4版本,也可以复制修改这个链接:https://github.com/ultralytics/yolov5/releases/download/v3.0/yolov5s.pt
只需要修改v3.0处对应版本就行,进行下载。
2)下载编译库:https://github.com/wang-xinyu/tensorrtx
2.生成yolov5s.wts
拷贝tensorrtx/yolov5/gen_wts.py到yolov5文件夹下,并将.pt文件放置于weights文件夹下。运行gen_wts.py,生成yolov5s.wts文件。
3.编译yolov5
1).将yolov5s.wts文件拷贝到tensorrtx/yolov5文件夹下
2).更新一下 yololayer.h中的类别信息,当然要是你并没有训练自己的yolov5模型的话,使用默认的即可。CLASS_NUM=80
3)CMakeLists.txt文件类似上面修改一下
4)tensorrtx/yolov5文件夹输入
mkdir build
cd build
cmake ..
make
make时遇到的问题:
问题1:
tensorrtx/yolov5/calibrator.cpp:4:10: fatal error: opencv2/dnn/dnn.hpp: 没有那个文件或目录
#include <opencv2/dnn/dnn.hpp>
解决办法:原因是因为没有安装opencv和opencv的dnn模块。需要重新安装opencv+OpenCV-contrib。当然这又是一段辛酸经历!具体参考我的另一篇博客
安装结束后重新编译即可。
问题2:
/workspace/tensorrtx/yolov5/yololayer.h:6:10: fatal error: NvInfer.h: No such file or directory
#include "NvInfer.h"
解决办法:在tensorrt_release/include文件夹下打开终端,输入
sudo cp -r /XXXX/TensorRT-6.0.1.5/include/* /usr/local/include/tensorrt/
tensorrt_release:为tensorRt的安装地址。如果/usr/local/include/下没有tensorrt文件夹的话,直接复制文件到include文件夹下也可以。
问题3:
Linking CXX shared library libmyplugins.so
/usr/bin/ld: cannot find -lnvinfer
collect2: error: ld returned 1 exit status
解决方法:
tensorrt_release/lib文件夹下开启终端,输入
sudo cp -r /home/jun/TensorRT-6.0.1.5/include/* /usr/local/include/
路径修改为自己的就可以。
4.使用Yolov5
1)最开始时,使用命令:
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s
进行engine文件生成,但出现如下问题:
arguments not right!
./yolov5 -s // serialize model to plan file
./yolov5 -d ../samples // deserialize plan file and run inference
原因是因为我使用的是yolov5-v3.0版本代码,具体情况参考问题
更换对应版本代码即可。
打开对应tensorrtx/yolov5文件夹下的READMI.md,参考对应指令即可。
2).输入
sudo ./yolov5 -s
开始生成engine文件。如图
继续输入指令
sudo ./yolov5 -d samples_path
samples_path为需要检测图像的文件夹地址
接下来继续尝试,使用利用tensorRT对自己的yolov5模型进行加速处理。