YoloV5的TensorRT加速实现49FPS,mAP40+!
本文介绍 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:
摸着我的胸说句良心话,目前社区我没有找到一个能够在任意数据集上完美训练的efficientdet实现,这个系列网络对于很多参数过于敏感,只要你的anchor或者learning rate设置的不正确,最后结果极有可能GG。
从这个图来看,yolov5基于可以做到D4的水平,仅仅只需要一般的计算速度,当然efficientdet的速度本身对于GPU就不是很友好。yolov5目前已经收获了2.2kstar,群众说明一切,还是异常的火的。
Yolov5相比于Yolov4
yolov5这个名字颇有争议,原因是它几乎是yolov4的一个pytorch实现,有着几乎差不多的结构。但yolov5也有着很多很强的优势,比如:
- Yolov5 基于pytorch,修改起来更加方便快捷;
- yolov5自带anchor生成器,自动为你的数据集生成最优化的anchor;
- yolov5的整体AP比yolov4更高。
既然有点这么多,那怎么将它应用起来了呢?事实上我们花了一点时间研究这个事情,最后我们成功的将YoloV5通过onnx转到了tensorrt下面,可以做到GTX1080Ti下 mAP高达41,帧率达到49FPS!
简单来说,只需要20ms一张图,你就可以拥有一个吊炸天的检测器!为了让这个模型真正体现它的优点,我们使用了一个很具有挑战性的数据集来做测试,VisDrone,让我们来看看:
这是一个高密度的密集检测数据集,典型特征就是小物体极多。
导出ONNX
将模型导出到onnx,可以大概预览一下onnx的模型结构:
整个模型看起来还是非常简单,如果你想导出自己的onnx模型,或者用我们下面的trt来转到TensorRT加速,可以添加微信获取更新代码:jintianandmerry
.
TensorRT加速
我们在导出onnx的时候去除了很多不支持的op,这样转出的onnx几乎可以在不修改的情况下转到TensorRT。完整的TensorRT推理代码在神力平台的工具链有提供:
最后让我们看看加速的效果,实测显卡GTX1080ti:
,商业转载请联系作者获得授权。