NEWS CENTER

科普|YOLOv4在Jetson上到底能够跑多快?

2020-04-26 source:米文动力

之前YOLO的作者宣布不再对YOLO进行更新以后,大家还都挺伤感的,都在说不会再有YOLOv4了,怎么一转眼,YOLOv4又来了呢?其实这次的YOLOv4并不是原作者的贡献。

WechatIMG672.png

一直以来,YOLO在Github上最热的Repo有两个,一个是

https://github.com/pjreddie/darknet,17.2k的Star,我们把它叫做原版;另一个是https://github.com/AlexeyAB/darknet,8.2k的Star,我们把它叫做AlexeyAB版。

而这次的YOLOv4,第一作者就是这个AlexeyAB[1]。


和原版相比AlexeyAB还是做了不少贡献的,比如可以在Windows上运行等等。


之前在很多文章里面写着:YOLOv4的精度跟FPS分别比YOLOv3版本提升10%和12%(原文:Improves YOLOv3’s AP and FPS by 10% and 12%, respectively)。看上去价格便宜量又足啊,那是不是真的是这样呢?明明YOLOv4的网络层数要比YOLOv3多50%左右,激活函数也更加复杂, 性能好我相信,总不能更快这么魔幻吧?


其实作者的这个描述有一定程度的误导,因为他是用YOLOv3 416x416输出尺寸,和YOLOv4 320x320输入尺寸来进行对比的[2]。当然从最终结果来说也不能说错,但作为网络来说,毫无疑问的是:


1、YOLOv4的准确率要比YOLOv3高

2、同等输入尺寸下,YOLOv4的速度要比YOLOv3慢(你没有看错,是慢!)

3、使用320x320的输入尺寸,YOLOv4会更快(废话),但性能仍然比拟YOLOv3 416x416


但是今天我们不是来讨论算法本身的,关于算法性能,在论文里面,和其他帖子里面已经介绍很多了。我们今天关心的是,YOLOv4,作为性能更好更强的存在,在Jetson上到底能够跑多快。我们的工程师快速在TensorRT上完成了对YOLOv4的加速工作。


由于换成了更复杂的激活函数,估计某些用CPU算激活函数的平台又得是平角裤。


但是在Jetson平台上,由于CPU和GPU的平衡性较好,最终的性能还是相当不错的。


如下图所示,基本416x416尺寸的YOLOv4比同尺寸的YOLOv3会慢10%,但在Xavier GPU INT8条件下,仍然能够跑到71帧。在NX的INT8模式下,可以达到45帧。性能算是不错。


WechatIMG673.jpg


但如果用作者的320x320的输入尺寸呢?Xavier上INT8的速度直接上到了100,NX的速度也接近了70。这还没有换Backbone呢,后续可期!


相信很快YOLOv4的Backbone替换版本也会不断出现,要灌水来毕业的同学们,也可以再刷一波。YOLO再战一年…


参考链接:

[1]https://arxiv.org/abs/2004.10934

[2]https://github.com/AlexeyAB/darknet#pre-trained-models