一文读懂YOLO V5 与 YOLO V4
YOLO之父Joseph Redmon在今年年初宣布退出计算机视觉的研究的时候,很多人都以为目标检测神器YOLO系列就此终结。然而在4月23日,继任者YOLO V4却悄无声息地来了。Alexey Bochkovskiy发表了一篇名为YOLOV4: Optimal Speed and Accuracy of Object Detection的文章。YOLO V4是YOLO系列一个重大的更新,其在COCO数据集上的平均精度(AP)和帧率精度(FPS)分别提高了10% 和12%,并得到了Joseph Redmon的官方认可,被认为是当前最快的实时对象检测模型
正当计算机视觉的从业者们正在努力研究YOLO V4的时候,万万没想到,牛人一直都在。6月25日,Ultralytics发布了YOLOV5 的第一个正式版本,其性能与YOLO V4不相伯仲,同样也是现今最先进的对象检测技术,并在推理速度上是目前最强。
从上图的结果可以看出,YOLO V5确实在对象检测方面的表现非常出色,尤其是YOLO V5s 模型140FPS的推理速度非常惊艳。
YOLO V5和V4集中出现让很多人都感到疑惑,一是YOLO V5真的有资格能被称作新一代YOLO吗?二是YOLO V5的性能与V4相比究竟如何,两者有啥区别及相似之处?
在本文中我会详细介绍YOLO V5和YOLO V4的原理,技术区别及相似之处,最后会从多方面对比两者的性能。
Email: williamhyin@outlook.com
知乎专栏: 自动驾驶全栈工程师
我在我之前的文章中介绍了YOLO V3模型,YOLO是一种快速紧凑的开源对象检测模型,与其它网络相比,同等尺寸下性能更强,并且具有很不错的稳定性,是第一个可以预测对象的类别和边界框的端对端神经网络。
YOLO V3原始模型是基于Darknet网络。Ultralytics将YOLO V3架构迁移到了Pytorch平台上,并对其自行研究和改进。Ultralytics-yolov3 代码库是目前已开源YOLO V3 Pytorch的最佳实现。
YOLO网络主要由三个主要组件组成。
1)Backbone -在不同图像细粒度上聚合并形成图像特征的卷积神经网络。
2)Neck:一系列混合和组合图像特征的网络层,并将图像特征传递到预测层。
3)Head: 对图像特征进行预测,生成边界框和并预测类别。
下图是对象检测网络的通用架构:
我们可以在上述每个主要组件上使用不同的技术或者组合不同的方案来实现属于自己的最佳对象检测框架。
实际上YOLO V5的模型架构是与V4非常相近的。在下文中,我会从下面几个方面对比YOLO V5和V4,并简要阐述它们各自新技术的特点,对比两者的区别和相似之处,评判两者的性能,并做最后总结。
- Data Augmentation
- Auto Learning Bounding Box Anchors
- Backbone
- Neck
- Head
- Network Architecture
- Activation Function
- Optimization Function
- Benchmarks
Data Augmentation
图像增强是从现有的训练数据中创建新的训练样本。我们不可能为每一个现实世界场景捕捉一个图像,因此我们需要调整现有的训练数据以推广到其他情况,从而允许模型适应更广泛的情况。无论是YOLO V5还是V4,多样化的先进数据增强技术是最大限度地利用数据集,使对象检测框架取得性能突破的关键。通过一系列图像增强技术步骤,可以在不增加推理时延的情况下提高模型的性能。
YOLO V4数据增强
YOLO V4使用了上图中多种数据增强技术的组合,对于单一图片,除了经典的几何畸变与光照畸变外,还创新地使用了图像遮挡(Random Erase,Cutout,Hide and Seek,Grid Mask ,MixUp)技术,对于多图组合,作者混合使用了CutMix与Mosaic 技术。除此之外,作者还使用了**Self-Adversarial Training (SAT)**来进行数据增强。
在下文中我将简单介绍以上数据增强技术。
图像遮挡
- Random Erase:用随机值或训练集的平均像素值替换图像的区域。
-
Cutout: 仅对 CNN 第一层的输入使用剪切方块Mask。