0

我需要转换一些模型才能将它们部署在 jetson 设备上。我已经尝试过在 coco 80 上训练的 Yolov3 的 TensorRT,但我没有成功推断它,所以我决定做TF-TRT。它在我的笔记本电脑上运行,FPS 增加了,但大小和 GPU 内存使用没有改变。模型的大小是 300MB,它变得更大了。TF-TRT 模型前后仍使用 16 GB GPU 内存。

  1. 是不是很平常?我的意思是没问题还是有什么问题?我希望实现更小的尺寸、更少的 GPU 内存使用和更高的 FPS(BTW 节点减少了)。

  2. 重要的是 FPS 在 TF-TRT 之后几乎没有跳跃。我在 TF-TRT 之前得到了大约 3 FPS,但在那之后我得到了 4、6、7、8、9 FPS,但是 FPS 变化并不平滑,例如第一帧我得到 4,第二帧我得到9 FPS,我也可以在视频的可视化中看到这些跳跃。为什么会这样?我该如何解决?

  3. 我读过 TRT 比 TF-TRT 有更好的性能。是真的吗?它们之间的确切区别是什么?我很困惑

  4. 我有另一个模型需要将其转换为 TRT,但它是一个 pytorch 模型(HourGlass CNN)。你知道我该怎么做吗?github 上是否有任何有效/有效的 repo 或 YouTube 上的教程可以分享?

  5. Tensorflow 到 TRT 更容易还是 Pytorch 到 TRT?

非常感谢

4

1 回答 1

0

希望我的经验能满足你的需求

1 - 是的,不准备进行大量优化的模型很常见。Yolo 是一个非常大的模型,不管你翻译成 TRT。TRT 使它比 TF-TRT 更好地工作,因为使用 TRT 模型被优化 100% 或失败。使用 TF-TRT,优化只发生在可以优化的层上,其他层保持原样。

2 - 是的,你可以修复它!对于 Jetson Nano,你有 deepstream,这是一个优化的框架,可以在 GPU 上运行所有推理,而不使用 CPU 移动内存(使用 TRT 内部)。对于 deepstream,你有一个优化的 YOlo 演示,在 Jetson nano 中我为 YOlov3 实现了 12 FPS,你可以选择 tinyYolo 以获得更好的性能。 https://www.reddit.com/r/learnmachinelearning/comments/hy50dl/a_tutorial_on_implementing_yolo_v3_with/

3 - 正如我之前提到的。如果您使用 TRTexec 或 deepstream 将模型从 ONNX 或 etlt 转换为 TRT,系统将优化 100% 的层,否则将在此过程中失败。使用 TF-TRT 系统“做到最好”,但不能保证所有层都针对特定硬件进行了优化。TF-TRT 是定制/稀有模型或需要快速测试的更好解决方案。

4/5 - 过去,如果您有 Pytorch 模型,您需要先将其转换为 ONNX,然后使用 trtExec 转换为 TRT。在上个月,使用 TRT 8.0,您可以使用 pytoch-TRT,例如 tensorflow-trt。所以今天也是一样。但如果性能 FPS 是您关心的问题,我建议您从 tensorflow/pytorch 转到 ONNX,然后使用 trtexec 或 deepstream 转到 TRT。

于 2022-02-04T11:19:44.080 回答