首页 > 解决方案 > 在 JETSON TX2 上部署 YoloV3

问题描述

我在 TX2 上遇到了有关 Yolo 对象检测部署的问题。我使用预训练的Yolo3(在Coco数据集上训练)来检测一些有限的物体(我主要关注五个类,不是所有类),实时检测速度低,准确率不完美(但可以接受) 在我的笔记本电脑上。我正在考虑通过笔记本电脑上的多线程或多处理使其更快,yolo 可以吗?但我的主要问题是算法没有在树莓派和英伟达 TX2 上运行。

以下是我的问题:

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

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

  3. 如果我使用 tiny-yolo,我的准确率会降低,这不是我想要的。有没有办法在树莓派或 NVIDIA TX2 上实时运行任何具有高性能的目标检测模型,无论是准确度还是速度 (FPS)?

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

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

  6. 移动网络怎么样?在准确率和速度上都比 YOLO 更好吗?

标签: tensorflowdeep-learningyolonvidia-jetsontensorrt

解决方案


1-是的,这是可能的。我已经在 J​​etson Nano 上运行了 Yolov3。

2- 这取决于模型和数据的输入分辨率。您可以降低输入分辨率。输入图像被传输到 GPU VRAM 以在模型上使用。大输入大小可以分配大量内存。据我记得两年前我在 Jetson Nano(比 tx2 差)上运行了正常的 Yolov3。此外,您可以使用 Yolov3-tiny 和 Tensorrt,就像您提到的那样。网上有很多这样来源。

3-我建议你看看这里。在这个 repo 中,您可以使用您的数据集进行迁移学习并使用 TensorRT 优化模型并在 Jetson 上运行它。

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

5-你必须找到合适的模型,体积小,足够的精度,优雅的速度。没有最好的模型。您的案例有最好的模型,这也取决于您的数据集。您可以在此处比较一些模型的准确性和 fps 。

6- 大多数人使用 mobilenet 作为特征提取器。阅读本文。你会看到 Yolov3 有更好的准确度,带有 MobileNet 主干的 SSD 有更好的 FPS。我建议你使用jetson-inference回购。

通过使用jetson-inferencerepo,我在 SSD 模型上获得了足够的准确性并获得了 30 FPS。另外,我建议你在 Jetson 上使用 MIPI-CSI 摄像头。它比 USB 相机更快。


推荐阅读