文章目录
1. 准备工作
本人环境:
jetson tx1
jetpack4.5.1
cuda10.2
cudnn8
opencv4.1.1
tensorrt7.1.3
onnx1.4.1
pycuda2020.1
python3.6.9
确保安装了pip3,若没有安装请输入下面命令安装:
sudo apt-get install python3-pip
本文章参考项目:tensorrt_demo
主要需要安装的库:
- onnx1.4.1
- pycuda
1.1 安装onnx1.4.1
先安装依赖:
sudo apt-get install protobuf-compiler libprotoc-dev
通过pip3直接安装,不要用sudo pip3安装。建议使用百度源,比清华源快多了(时间:2021.3.30)
pip3 install onnx==1.4.1 -i https://mirror.baidu.com/pypi/simple
1.2 安装pycuda
这个比较简单,安装方法:
pip3 install pycuda -i https://mirror.baidu.com/pypi/simple
如果失败,大概率是cuda配置的问题,参考文章pycuda安装错误解决办法,进行配置。
2. 使用tensorrt加速yolov3-tiny
2.1 编译
克隆项目:
git clone https://github.com/jkjung-avt/tensorrt_demos.git
进入项目的编译位置:
cd tensorrt_demos/plugins/
编译:
make -j4
很快编译成功:
2.2 转weights为onnx
进入项目的yolo文件夹:
cd tensorrt/yolo/
将我们下载好的yolov3-tiny.weights和yolov3-tiny.cfg都放到这一路径下(亦可把v4的都放进来)
下载链接:
链接:https://pan.baidu.com/s/1GURVIVdWwdi62tsXHCQEvw
提取码:3ts9
下载完后对文件进行改名,在每个文件的后面加上输入的尺寸大小,如图所示:若自己修改了图片尺寸,改为自己的尺寸即可
亦可运行自带的sh来下载(已经改好了名字),但速度可能比较慢:
sh download_yolo.sh
将weights转换为onnx:
python3 yolo_to_onnx.py -m yolov3-tiny-416
正常转换后的结果界面:
2.3 转onnx为trt
trt是tensorrt支持的格式,所以我们要把onnx转换为trt。
转换命令:
python3 onnx_to_tensorrt.py -m yolov3-tiny-416
正常转换后的界面如上图所示。
2.4 进行加速检测
进入到上一级的目录:
cd tensorrt_demos
运行下面的命令进行检测(使用usb摄像头)
python3 trt_yolo.py --usb 0 -m yolov3-tiny-416
检测结果:帧率可达到平均40帧。
使用板载摄像头:
python3 trt_yolo.py --onboard 0 -m yolov3-tiny-416
运行结果:帧率也可以,只是还没解决为什么图像是倒立的问题。