这两天在尝试在Jetson Xavier NX上部署yolact_edge,因为之前部署了yolact模型,但帧率实在无法满足需求(测试下来帧率只有3-4fps),至少要达到10fps才行,于是在学长建议下部署了yolact_edge。实际测试下来效果较为理想(帧率稳定在13fps),记录下部署的过程:
最好的参考资料永远是官方给的,所有的博客都是在官方资料的基础上进行的修改,不一定对所有的系统都适用。下面把我参考的资料列出来。
1. yolact_edge GitHub地址
2.部署yolact_edge参考 GitHub地址
3.RuntimeError: stack expects a non-empty TensorList 如何解决?
具体的部署过程并不麻烦,首先说明我的环境:(Jetson Xavier NX应该都差不多)
ubuntu系统版本:18.04
python:3.6
pytorch:1.8.0
torchvision:0.9.0
(pytorch和torchvision在arm板子上安装需要重新编译,不想编译安装可以看我之前分享的资源:pytorch1.8.0+torchvision0.9.0资源分享)
cuda:10.2(pytorch1.8.0可以用cuda10.2)
cuDNN:8.0.0
我接下来说的部署过程不一定能解决所有问题,但大致思路没问题。遇到具体的问题自行CSDN、GitHub、Google挨着问一遍基本就能解决。(我也是第一次部署,有一些地方也没弄明白)
首先需要去Git官方的代码,地址为:
yolact_edge GitHub地址
如果下得慢的话我把资源放在这里(yolact_edge-master文件夹):
链接:https://pan.baidu.com/s/1MsfajOuRg4rpvzwo2tVFuw
提取码:aaaa
我们可以先下载一个官方训练好的模型试试效果如何,我们看下官方提供了哪些训练好的模型:
提供了不少哈,我下的是红框框出来的这个,因为看起来帧率挺高的,这个模型文件可以在这里下载:
链接:https://pan.baidu.com/s/1MsfajOuRg4rpvzwo2tVFuw
提取码:aaaa
长这样(yolact_edge_resnet50_54_800000.pth):
下载好之后,在yolact_edge-master文件夹下建一个weights文件夹,把yolact_edge_resnet50_54_800000.pth放在weights文件夹里,后面检测的时候会用到。
为啥yolact_edge会比yolact快呢?一方面是网络结构进行了一定的改进,另一方面是使用了TenorRT进行优化。所以我们还需要安装TensorRT,但我安装了一半才发现原来Jetson Xavier NX自带有TensorRT,不用再安装了,这可真是太棒了!
Jetson Xavier NX自带的TensorRT是7.1.3.0版本的,能用。所以就不下载了, yolact_edge GitHub地址也自带有安装方法,不麻烦。下载好压缩包解压之后配置环境变量再安装就好了。
但是我们还需要下载torch2trt,首先先Git torch2trt项目:
git clone https://github.com/NVIDIA-AI-IOT/torch2trt
下载不了的可以直接用我提供的资源:
链接:https://pan.baidu.com/s/1MsfajOuRg4rpvzwo2tVFuw
提取码:aaaa
然后cd到该文件夹下面,执行命令:
sudo python3 setup.py install --plugins
如果报错非法指令,试试命令:
python3 setuo.py install --plugins --user
如果还有报错,自行百度应该就能解决。
要使用 TensorRT INT8 校准评估 YolactEdge,您需要下载 COCO 和 YouTube VIS 的校准数据集(这避免了必须下载整个 COCO/YouTube-VIS 数据集及其注释)。 将 calib_images文件夹存储在其对应的数据集文件夹下,如下例所示。 请注意,我们最好的模型使用 INT8 校准,因此强烈建议执行此步骤。
所以要下载COCO校准数据集,这样才能用到TensorRT加速。(实测不下载不能用,会报错:RuntimeError: stack expects a non-empty TensorList)
这里可以在我提供的网盘里下载:
链接:https://pan.baidu.com/s/1MsfajOuRg4rpvzwo2tVFuw
提取码:aaaa
下载好之后把coco文件夹放在yolact_edge-master下的data文件夹下即可。
以上都完成后应该就不会有太大问题了,可以开始检测试试了:
使用命令:
python3 eval.py --trained_model=weights/yolact_edge_resnet50_54_800000.pth --score_threshold=0.3 --top_k=100 --video=0
嗯,还不错,有12.78fps嘞。
部署的过程大体就是这样,这次只说了如何跑官方的demo,没有说如何训练自己的模型,之后如果有需要的话应该还会做自己模型的训练。祝你成功:)