本文介绍 YoloV5的TensorRT加速实现49FPS,mAP40+!

YoloV5的TensorRT加速实现49FPS,mAP40+!

本文由林大佬原创,转载请注明出处,来自腾讯、阿里等一线AI算法工程师组成的QQ交流群欢迎你的加入: 1037662480

前不久,俄罗斯大佬放出了YoloV4,mAP刷到了惊天的43,要知道,这对于single stage的目标检测算法来说,是很困难的,已经吊打了多数two stage detectors。但没过多久,来自Ultralytics的大佬又放出了YoloV5, 将mAP在一起刷到了新高。让我们来感受一下Yolov5的超大模型的mAP:

Model APval APtest AP50 LatencyGPU FPSGPU params FLOPs
YOLOv5-s (ckpt) 35.5 35.5 55.0 2.5ms 400 7.1M 12.6B
YOLOv5-m (ckpt) 42.7 42.7 62.4 4.4ms 227 22.0M 39.0B
YOLOv5-l (ckpt) 45.7 45.9 65.1 6.8ms 147 50.3M 89.0B
YOLOv5-x (ckpt) 47.2 47.3 66.6 11.7ms 85 95.9M 170.3B
YOLOv3-SPP (ckpt) 45.6 45.5 65.2 7.9ms 127 63.0M 118.0B

最高刷到了47.2,不得不说很强了,并且能保证FPS达到较高的速度。相对来说它的输入尺寸也没有用很小,readme里面采用的是736,这比其他的不看input size来对比速度的网络模型要良心很多。

YoloV5也pk了之前霸榜coco的efficientdet:

image-20200619114428305

摸着我的胸说句良心话,目前社区我没有找到一个能够在任意数据集上完美训练的efficientdet实现,这个系列网络对于很多参数过于敏感,只要你的anchor或者learning rate设置的不正确,最后结果极有可能GG。

从这个图来看,yolov5基于可以做到D4的水平,仅仅只需要一般的计算速度,当然efficientdet的速度本身对于GPU就不是很友好。yolov5目前已经收获了2.2kstar,群众说明一切,还是异常的火的。

image-20200619114830712

Yolov5相比于Yolov4

yolov5这个名字颇有争议,原因是它几乎是yolov4的一个pytorch实现,有着几乎差不多的结构。但yolov5也有着很多很强的优势,比如:

  • Yolov5 基于pytorch,修改起来更加方便快捷;
  • yolov5自带anchor生成器,自动为你的数据集生成最优化的anchor;
  • yolov5的整体AP比yolov4更高。

既然有点这么多,那怎么将它应用起来了呢?事实上我们花了一点时间研究这个事情,最后我们成功的将YoloV5通过onnx转到了tensorrt下面,可以做到GTX1080Ti下 mAP高达41,帧率达到49FPS!

简单来说,只需要20ms一张图,你就可以拥有一个吊炸天的检测器!为了让这个模型真正体现它的优点,我们使用了一个很具有挑战性的数据集来做测试,VisDrone,让我们来看看:

img

这是一个高密度的密集检测数据集,典型特征就是小物体极多。

image-20200619115341426

导出ONNX

将模型导出到onnx,可以大概预览一下onnx的模型结构:

image-20200619115501734

整个模型看起来还是非常简单,如果你想导出自己的onnx模型,或者用我们下面的trt来转到TensorRT加速,可以添加微信获取更新代码:jintianandmerry.

TensorRT加速

我们在导出onnx的时候去除了很多不支持的op,这样转出的onnx几乎可以在不修改的情况下转到TensorRT。完整的TensorRT推理代码在神力平台的工具链有提供:

http://manaai.cn/

最后让我们看看加速的效果,实测显卡GTX1080ti:

![](

准确率和速度都很高。

展望

后面我们会继续将yolov5的small模型进行部署,移植到jetson nano或者是其他嵌入式平台。

如果你想学习人工智能,对前沿的AI技术比较感兴趣,可以加入我们的知识星球,获取第一时间资讯,前沿学术动态,业界新闻等等!你的支持将会鼓励我们更频繁的创作,我们也会帮助你开启更深入的深度学习之旅!

image-20200515153654923