【问题标题】:Optimize Tensorflow Object Detection Model V2 Centernet Model for Evaluation优化 Tensorflow 目标检测模型 V2 Centernet 模型进行评估
【发布时间】:2020-11-04 16:41:18
【问题描述】:

我在 Nvidia Tesla P100 上使用 tensorflow centernet_resnet50_v2_512x512_kpts_coco17_tpu-8 对象检测模型来提取 bounding boxkeypoints 以检测人视频。使用 tensorflow.org 的预训练,我每秒可以处理大约 16 帧。有什么办法可以提高这个模型的评估速度吗?以下是我一直在研究的一些想法:

  • 修剪模型图,因为我只检测到一种类型的对象(人)
    • 尚未成功执行此操作。在构建模型时更改 label_map 似乎不会提高性能。
  • 硬编码输入大小
    • 尚未找到执行此操作的好方法。
  • 使用 TensorRT 之类的工具将模型编译为优化形式
    • 最初转换为 TensorRT 的尝试没有任何性能提升。
  • 批处理预测
    • 看起来预训练模型的批量大小硬编码为 1,到目前为止,当我尝试使用 model_builder 更改它时,我发现性能有所下降。
    • 我的 GPU 利用率约为 75%,所以我不知道这里是否有很多收获。

【问题讨论】:

    标签: tensorflow tensorflow2.0 object-detection object-detection-api tensorrt


    【解决方案1】:

    在大多数情况下,与 Tensorflow 相比,TensorRT 的每秒帧数应该会大幅增加。

    centernet_resnet50_v2_512x512_kpts_coco17_tpu-8 可以在 TensorFlow 模型动物园中找到。 Nvidia 发布了一篇博客文章,描述了如何使用 Deepstream 和 TensorRT 从 TensorFlow Model Zoo 优化模型: https://developer.nvidia.com/blog/deploying-models-from-tensorflow-model-zoo-using-deepstream-and-triton-inference-server/

    现在关于您的建议:

    • 修剪模型图:修剪模型图可以通过将 tensorflow 模型转换为 TF-TRT 模型来完成。

    • 硬编码输入尺寸:在 TF-TRT 中使用静态模式。这是默认模式,通过以下方式启用:is_dynamic_op=False

    • 编译模型:我的建议是将您的模型转换为 TF-TRT 或先转换为 ONNX,然后再转换为 TensorRT。

    • 批处理:指定批处理大小也包含在 NVIDIA 博客文章中。

    最后,对于我的模型,性能的大幅提升来自于在我的推理引擎中使用 FP16。 (mixed precision) 你甚至可以尝试 INT8,但你首先必须调用。

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 2021-05-05
      • 2022-06-20
      • 2019-03-03
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多