在JETSON TX2上部署YoloV3



我遇到了在TX2上部署Yolo对象检测的问题。我使用预训练的Yolo3(在Coco数据集上训练)来检测一些有限的对象(我主要关注五个类,而不是所有类),对于实时检测来说速度较低,并且精度在我的笔记本电脑上并不完美(但可以接受)。我想让它更快的多线程或多处理在我的笔记本电脑上,这是可能的吗?但我的主要问题是算法不能在树莓派和nvidia TX2上运行。

以下是我的问题:

  1. 一般来说,是否有可能在TX2上运行yolov3而不进行任何修改,如加速器和模型压缩技术?

  2. 我无法在TX2上运行模型。首先,我得到了关于相机的错误,所以我决定在视频上运行模型,这次我得到了"无法在静态TLS块中分配内存"错误,得到这个错误的原因是什么?这个模型太大了。它使用了我笔记本电脑上16gb的GPU内存。raspberry和TX2的GPU内存均小于8GB。据我所知,有两种解决方案,使用较小的模型或使用张量RT或修剪。你知道还有没有别的办法吗?

  3. 如果我使用微小的yolo,我会得到较低的精度,这不是我想要的。在树莓派或NVIDIA TX2上,是否有任何方法可以在精度和速度(FPS)方面运行任何具有高性能的实时目标检测模型?

  4. 如果我只清理我关心的对象的coco数据,然后训练相同的模型,我会得到更高的精度和速度,但大小不会改变,我正确吗?

  5. 一般来说,在实时检测的准确性方面,什么是最好的模型?在速度方面,什么是最好的模型?

  6. Mobilenet是什么?在准确性和速度方面,它是否比yolo更好?

1-这是可能的。我已经在Jetson Nano上运行了Yolov3。

2-这取决于模型和数据的输入分辨率。您可以降低输入分辨率。输入图像被转移到GPU VRAM上使用模型。大的输入大小可以分配很多内存。据我所知,两年前我在Jetson Nano(比tx2还差)上运行过普通的Yolov3。此外,您还可以使用您提到的Yolov3-tiny和Tensorrt。网上有很多像这样的资源&这个。

3-我建议你看一下这里。在这个repo中,你可以用你的数据集进行迁移学习。用TensorRT优化模型;

4-大小不依赖于数据集。它依赖于模型体系结构(因为它包含权重)。速度可能不会改变。准确性取决于你的数据集。它可以更好,也可以更坏。如果COCO上的任何类与你的数据集的任何类相似,我建议你进行迁移学习。

5-你必须找到合适的模型,小尺寸,足够的精度,优雅的速度。没有最好的模式。有一个最适合你的模型,这取决于你的数据集。你可以在这里比较一些模型的精度和fps。

6-大多数人使用mobilenet作为特征提取器。读一读这篇文章。你会看到Yolov3有更好的精度,带有MobileNet骨干的SSD有更好的FPS。我建议你使用jetson-inferencerepo。

通过使用jetson-inferencerepo,我得到了足够的SSD模型精度&;得到30 FPS。另外,我建议你在《杰森一家》中使用MIPI-CSI相机。它比USB相机快。

我只通过替换脚本内的opencv和tensorflow的导入顺序来修复问题1和2。现在我可以在tx2上不做任何修改就运行Yolov3了。我的平均FPS是3。

最新更新