微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

优化Tensorflow对象检测模型V2 Centernet模型进行评估

如何解决优化Tensorflow对象检测模型V2 Centernet模型进行评估

我正在Nvidia Tesla P100 上使用张量流centernet_resnet50_v2_512x512_kpts_coco17_tpu-8对象检测模型来提取边界框关键点以进行检测视频中的人。使用来自tensorflow.org的预训练,我每秒能够处理约16帧。有什么方法可以提高此模型的评估速度?这是我一直在研究的一些想法:

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

解决方法

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

config_file = pkg_resources.resource_stream('src.codes','config.json') config = json.load(config_file) 可在TensorFlow模型动物园中找到。 Nvidia发布了一篇博客文章,描述了如何使用Deepstream和TensorRT从TensorFlow Model Zoo优化模型: https://developer.nvidia.com/blog/deploying-models-from-tensorflow-model-zoo-using-deepstream-and-triton-inference-server/

现在关于您的建议:

  • 修剪模型图:可以通过将张量流模型转换为TF-TRT模型来修剪模型图。

  • 对输入大小进行硬编码:在TF-TRT中使用静态模式。这是默认模式,并通过以下方式启用:centernet_resnet50_v2_512x512_kpts_coco17_tpu-8

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

  • 批处理:在NVIDIA博客文章中还介绍了指定批处理大小。

最后,对我的模型而言,在推理引擎中使用FP16可以大大提高性能。 (mixed precision)您甚至可以尝试INT8,但随后必须先进行校准。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。