本文译自:https://towardsdatascience.com/yolo-v4-or-yolo-v5-or-pp-yolo-dad8e40f7109 ,翻译这篇文章目的是由于这篇文章对YOLO目标检测框架的整个发展说的很明白,也解释了自己多年以来对YOLO版本众多的疑问。文章中引用了YOLO发展过程中的关键论文以及论文链接,以及各个主要版本的Github仓库地址,以及对YOLO发展有重要意义的文章链接,把这篇文章作为YOLO目标检测框架的一个简单的文献综述文章也是很不错的。

对象检测是一项计算机视觉任务,用于预测一个或多个对象的存在,以及它们的类别和边界框。YOLO(You Only Look Once)是一种最先进的对象检测器,可以实时进行对象检测,并具有很好的准确度。

前三个YOlO版本分别于2016年、2017年和2018年发布。然而到了2020年,仅仅几个月的时间,就发布了Yolo的三个版本,分别是YOlO v4、YOlO v5和PP-YOlO。其中,YOlO v5更是陷入争议。

此外,这也让即将开始机器学习项目的人们陷入了两难境地。在本文中,我们将讨论这些 YOLO 新版本的原因,同时强调它们的原创性、作者身份、性能和主要改进,帮助人们为他们的项目选择最合适的版本。

1 Yolo是如何演变的

YOLO于2016年首次推出,由于它能够以更高的精度实时检测对象,因此成为对象检测研究的里程碑。

YOLO是由华盛顿大学的毕业生Joseph Redmon提出的。YOLO的论文在2016的计算机视觉和模式识别会议(Computer Vision and Pattern Recognition , CVPR)上获得了OpenCV People’s Choice Award

1.1 Joseph Redmon的YOLO版本

  1. 第1版

    You Only Look Once: Unified, Real-Time Object Detection - 2016

  2. 第2版

    YOLO9000: Better, Faster, Stronger - 2017

  3. 第3版

    YOLOv3: An Incremental Improvement - 2018

YOLO v2 可以以40-90 FPS的速度处理图像,而YOLO v3允许我们轻松地在速度和准确性之间进行权衡,只需更改模型大小而无需任何重新训练。

人工智能 – YOLO v3,YOLO v4,YOLO v5等版本演变史-StubbornHuang Blog

1.2 YOLO的实现

Joseph Redmon的YOLO的实现主要是基于Darknet,Darknet是一个用C和CUDA编写的开源神经网络框架。Darknet 设置了网络的底层架构,并用作训练YOLO的框架。该实现由Joseph Redmon 自己实现,速度快,易于安装,支持CPU和GPU计算。

之后,Ultralytics LLC的Glenn Jocher使用Pytorch对Yolo进行了实现:https://github.com/ultralytics/yolov3

1.3 YOLO v3之后YOLO没有更新?

YOLO凭借其卓越的速度和良好的准确性迅速在计算机视觉界声名鹊起。然而,在2020年2月,YOLO的创造者Joseph Redmon宣布停止他在计算机视觉方面的研究!他还表示,这是出于对他工作的潜在负面影响的一些担忧。

人工智能 – YOLO v3,YOLO v4,YOLO v5等版本演变史-StubbornHuang Blog

这引发了一些社区的热议,并提出了一个重要的问题:未来会有YOLO更新吗?

2 YOLO v4

Joseph Redmon的退出并不是YOLO的结束。重温计算机视觉社区中的许多人,第4代YOLO已于2020年4 月发布。它已在Alexey Bochkovskiy 等人的题为“YOLOv4: Optimal Speed and Accuracy of Object Detection”的论文中进行了介绍。

此外,Joseph Redmon 的工作由Alexey在主存储库的分支中继续进行。YOLO v4被认为是最快、最准确的目标检测实时模型。

2.1 YOLO v4的主要改进

YOLO v4 受到了最先进的 BoF(bag of freebies)和几个 BoS(bag of specials)的影响。BoF 在不增加推理时间的情况下提高了检测器的精度。他们只会增加训练成本。另一方面,BoS增加了少量的推理成本,但它们显着提高了目标检测的准确性。

2.2 YOLO v4的性能

YOLO v4同样基于Darknet,在 COCO 数据集上获得了43.5%的AP值,在Tesla V100上获得了65 FPS 的实时速度,在速度和准确度上都击败了最快和最准确的探测器。

与YOLO v3相比,AP和FPS分别提高了10%和12%。

人工智能 – YOLO v3,YOLO v4,YOLO v5等版本演变史-StubbornHuang Blog

2.3 Joseph Redmon对YOLO命名的回应

2020年4月24日,Joseph Redmon原始github 帐户的ReadMe自述文件更新了Alexey的分叉存储库和 YOLO v4论文的链接。他也在Twitter中写道:

人工智能 – YOLO v3,YOLO v4,YOLO v5等版本演变史-StubbornHuang Blog

3 YOLO v5

YOLO v4发布后,短短两个月内,又发布了另一个版本的 YOLO,名为 YOLO v5 !它是由Glenn Jocher编写的,他在社区中因创建流行的YOLO v3的PyTorch版本实现而闻名。

2020年6月9日,Glenn Jocher表示他的YOLO v5实现已公开发布,建议在新项目中使用。然而,在最初发布这个新版本时,他并没有随他的发布发表论文。

3.1 YOLO v5的主要改进

YOLO v5与所有其他以前的版本不同,因为这是一个PyTorch实现,而不是原始Darknet 的一个分支。与 YOLO v4相同,YOLO v5具有CSP backbone和PA-NET neck。主要改进包括马赛克数据增强和自动学习边界框锚。

3.2 机器学习社区的争议

YOLO v5的发布备受关注,在机器学习社区平台引发热议。这主要是由于Roboflow团队发表的一篇关于 YOLO v5的文章中的几个事实。

那篇题为“YOLOv5 is Here”的文章已于2020年6月10日在Roboflow博客上发表,陈述了几个重要事实。以下是Joseph Nelson 和 Jacob Solawetz 的博客文章yolov5-is-here中的一些引述。

“Running a Tesla P100, we saw inference times up to 0.007 seconds per image, meaning 140 frames per second (FPS)! By contrast, YOLO v4 achieved 50 FPS after having been converted to the same Ultralytics PyTorch library.”

“YOLO v5 is small. Specifically, a weights file for YOLO v5 is 27 megabytes. Our weights file for YOLO v4 (with Darknet architecture) is 244 megabytes. YOLO v5 is nearly 90 percent smaller than YOLO v4.”

因此,据说YOLO v5比YOLO v4速度快很多且轻量级,而准确度与YOLO v4基准相当。但社区提出的主要问题是:这些基准是否准确且可重复?

3.3 回应

YOLO v4的作者Alexey对如何进行所有这些比较并不满意。他已经回答了 github 中提出的几个问题,提到了这些比较的问题,特别是批量大小。

Roboflow 和 YOLO v5 开发人员也积极回应了 Hacker News 社区的问题,并于 6 月 14 日在 Roboflow 博客上发表了一篇文章:Yolo v4 vs Yolo v5描述了他们如何比较这两个YOLO版本。

4 PP-YOLO

PP-YOLO已于2020 年7月通过题为PP-YOLO: An Effective and Efficient Implementation of Object Detector的论文发表,作者向龙等人。它基于百度科学家最初开发的开源深度学习平台 PaddlePaddle(并行分布式深度学习)。

4.1 PP-YOLO是新版本吗?

PP-YOLO 基于YOLO v3模型。论文明确指出,PP-YOLO的目标是实现一个有效性和效率相对平衡的目标检测器,可以直接应用于实际应用场景,而不是提出一种新颖的检测模型。

显着的变化包括用ResNet backbone替换YOLO v3的Darknet53 backbone,以及将训练批量大小从 64增加到192(在 8 个 GPU 上的小批量大小为 24)。

4.2 PP-YOLO的性能

根据论文,PP-YOLO可以实现 45.2% COCO数据集的mAP,超过YOLO v4的43.5%。在批量大小 = 1 的 V100上进行测试时,PP-YOLO可以达到72.9FPS的推理速度,这也高于YOLO v4 的65 FPS。

PP-YOLO 作者推测,TensorFlow 在 ResNet 模型上的优化比 Darknet 更好是这种性能提升背后的主要原因。

人工智能 – YOLO v3,YOLO v4,YOLO v5等版本演变史-StubbornHuang Blog

5 结语

在本文中,我们讨论了YOLO发展的重要里程碑以及2020年出现的许多新YOLO版本背后的故事,同时强调了这些最新YOLO版本的重大改进和性能。总而言之,YOLO v4 是这种最先进的对象检测器的最新基于Darknet的实现。它还有一篇由 Alexey Bochkovskiy 发表的带有基准的论文。另一方面,YOLO v5 是 Ultralytics 的新 PyTorch 实现,当使用更大的批量进行测试时,据说它比大多数检测器具有更高的干扰速度。但是,在撰写本文时,还没有针对 YOLO v5 发表的同行评审论文。PP-YOLO 是基于称为 PaddlePaddle 的深度学习框架的另一个新的 YOLO 升级,并对YOLO v3模型进行了改进,以获得更好的有效性和效率平衡。在为特定项目选择最合适的 YOLO 版本时,我们讨论的每个版本的架构、改进和性能等事实将很有帮助。保持学习 !

参考链接