优化Tensorflow目标检测模型V2 Centernet模型以进行评估

5
我正在使用tensorflow的centernet_resnet50_v2_512x512_kpts_coco17_tpu-8目标检测模型,在Nvidia Tesla P100上提取人物视频中的边界框关键点。使用tensorflow.org提供的预训练模型,我能够处理大约每秒16帧的速度。有什么方法可以提高这个模型的评估速度吗?以下是我一直在研究的一些想法:
  • 修剪模型图,因为我只检测1种类型的对象(人)
    • 还没有成功做到这一点。在构建模型时更改label_map似乎不能改善性能。
  • 硬编码输入大小
    • 还没有找到一个好的方法来做到这一点。
  • 将模型编译为优化形式,使用类似于TensorRT之类的东西
    • 尝试将模型转换为TensorRT并没有任何性能改进。
  • 批量预测
    • 看起来预训练模型的批量大小被硬编码为1,到目前为止,当我尝试使用model_builder更改批量大小时,我看到性能下降。
    • 我的GPU利用率约为75%,所以我不知道是否有太多可以提升的空间。
1个回答

3

TensorRT在大多数情况下,相对于TensorFlow可以显著提高每秒帧数。

centernet_resnet50_v2_512x512_kpts_coco17_tpu-8可以在TensorFlow Model Zoo中找到。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在推理引擎中可以大幅提高性能。(混合精度)甚至可以尝试INT8,但首先需要进行校准。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接