使用TensorRT提高GPU上的YOLOv4对象检测速度

本文介绍了如何使用TensorRT优化YOLOv4对象检测模型,以提高在GPU上的运行速度。通过TensorRT,YOLOv4的性能可以提升至三倍。详细过程包括TensorRT如何优化TensorFlow图、模型转换、INT8校准以及实际实施步骤。在YOLOv4 INT8模型上,虽然精度有所下降,但速度显著提升,适合实时应用。
摘要由CSDN通过智能技术生成

内容来源:pylessons
文章编译:源代码杀手

YOLOv4较旧版本YOLOv4的改进,并且我们已经知道现在它比以前更好。也许使用YOLOv3的每个人都将迁移到YOLOv4,因为它是我们可以用于实时应用程序的最快的对象检测模型之一。但是在本教程中,我想向您展示,如何使用TensorRT将对象检测的速度提高三倍!在本文中,不介绍如何安装TensorRT。

TensorFlow是当今最受欢迎的深度学习框架之一,在全球拥有成千上万的用户。TensorRT是一个深度学习平台,可通过简单的方式优化神经网络模型并加快GPU推理的性能。TensorFlow团队与NVIDIA合作,并在TensorFlow v1.7中添加了对TensorRT的初始支持,现在它已在TensorFlow 2.0及更高版本中投入使用。

1.png

来源

那么TensorRT是什么?NVIDIA TensorRT是高性能的推理优化器和运行时,可用于在GPU上以较低精度(FP32,FP16和INT8)执行推理。它与TensorFlow的集成使您可以通过几行代码将TensorRT优化应用于您的TensorFlow模型。与仅使用TensorFlow相比,我们可以将性能提高8倍。集成对支持的图进行了优化,使不受支持的操作保持原样在TensorFlow中执行。

TensorRT如何优化TensorFlow图?

我们输入了已经训练好的TensorFlow网络以及其他参数,例如推理批大小和精度。TensorRT进行优化(如下图所示)并建立一个执行计划,该计划可以按原样使用或序列化并保存到磁盘中,以备后用。我没有尝试过,但我认为推理时不需要深度学习框架。我们只能使用TensorRT输出的执行计划,我们很高兴。我们可以在服务器,台式机甚至嵌入式设备上使用它。

2.jpg

来源

优化过程

这就是魔术发生的地方。TensorRT对神经网络图执行了一些重要的转换和优化(下图为几张图像)。TensorRT,在可能的情况下将卷积,bias和ReLU层融合在一起以形成一个单层:

3.jpg

来源

下面的数字说明了TensorRT所做的垂直融合优化。卷积(C),偏置(B)和激活(R,ReLU在这种情况下)都折叠到一个单个节点中(从实现的角度来看,这意味着针对C,B和R单个CUDA内核启动):

4.jpg

来源

另一种转换是水平层融合或层聚合,以及将聚合的层划分为它们各自的输出所需的划分。水平层融合通过组合采用相同源张量并以相似参数应用相同操作的层来提高性能。请注意,这些图形优化不会改变图形中的基础计算:相反,它们希望重组图形以更快,更有效地执行操作:

5.jpg

来源

将TensorFlow转换为TensorRT模型

假设我们已经有一个训练有素的TensorFlow网络,首先我们将该模型转换为冻结(.pb)模型。在我的YOLOv4实现中,通过以下方式执行此步骤:

import tensorflow as tf
from yolov3.yolov4 import Create_Yolo
from yolov3.utils import load_yolo_weights
from yolov3.configs import *

if YOLO_TYPE == "yolov4":
    Darknet_weights = YOLO_V4_TINY_WEIGHTS if TRAIN_YOLO_TINY else YOLO_V4_WEIGHTS
if YOLO_TYPE 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源代码杀手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值