使用原生Pytorch版本DeepSort和ROS集成后,一次帧图片的推理速度大约在1s左右,根本无法实现实时推理,无法达到部署应用要求。因此,必须使用Tenssort进行推理加速以达到实时要求。下面是详细的部署流程:
总体介绍
进行Tensorrt推理需要两个模型(yolov5s.engine和deepsort.engine),将用于检测的模型yolov*.pt和用于DeepSort特征提取的模型ckpt.t7转换为对应的engine文件------通过yolov5s.pt->yolov5s.wts->yolov5s.engine,获取engine file。同样获取deepsort.engine也是差不多的方法。下面我将介绍它们转换的流程。
一、获取yolov5s.engine文件
1、下载yolov5官方代码和模型
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
mkdir weights
cd weights
//下载yolov5s.pt文件
wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt
2、下载tensorrt源码
git clone https://github.com/wang-xinyu/tensorrtx
3、将yolov5s.pt文件转换为yolov5s.wts
//将tensorrtx文件夹里面的gen_wts.py文件拷贝到yolov5文件夹下(改为自己的路径)
cp tensorrtx/gen_wts.py yolov5/
cd yolov5
//模型转换
python3 gen_wts.py -w ./weights/yolov5s.pt -o ./weights/yolov5s.wts
4、编译tensorrtx中的yolov5
项目、获取yolov5s.engine文件
cd tensorrtx/yolov5
mkdir build
cd build
//将刚刚生成的yolov5s.wts拷贝到tensorrtx/yolov5/build目录下(改为自己的路径)
cp yolov5/yolov5s.wts tensorrtx/yolov5/build
cmake ..
make
// 生成engine文件
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s
// 测试生成的engine文件
sudo ./yolov5 -d yolov5s.engine ../samples
二、获取deepsort.engine文件
1、下载deep_sort_pytorch源码
git clone https://github.com/RichardoMrMu/deep_sort_pytorch.git
2、下载deepsort-tensorrt源码
git clone https://github.com/RichardoMrMu/deepsort-tensorrt.git
3、将deepsort.pt文件转换为deepsort.onnx文件
将deepsort-tensorrt目录下的exportOnnx.py拷贝到deep_sort_pytorch文件夹下(改为自己的路径)
cp deepsort-tensorrt/exportOnnx.py deep_sort_pytorch/
cd deep_sort_pytorch/
python3 exportOnnx.py
4、编译deepsort-tensorrt生成deepsort.engine文件
mv deep_sort_pytorch/deepsort.onnx deepsort-tensorrt/resources
cd deepsort-tensorrt
mkdir build
cd build
cmake ..
make
//模型转换
.onnx2engine ../resources/deepsort.onnx ../resources/deepsort.engine
//测试
./demo ../resource/deepsort.engine ../resources/track.txt
经过以上的步骤,获得了yolov5.engine和deepsort.engine。
三、基于ROS的模型推理
从图中可以看到,可以达到50FPS左右,能够满足实时要求。