点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”
作者:Maxim Ivanov
编译:ronghuaiyang
导读
在上一部分中,我们研究了最古老的三种架构:YOLO,YOLOv2,YOLOv3。今天,我们将处理接下来的六种结构。
Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao
Joseph Redmon 出于道德原因退出了YOLO的进一步发展。
“YOLOv4: Optimal Speed and Accuracy of Object Detection”, https://arxiv.org/pdf/2004.10934.pdf, publication date 2020/04
“Scaled-YOLOv4: Scaling Cross Stage Partial Network”, https://arxiv.org/pdf/2011.08036.pdf, publication date 2020/11
https://github.com/AlexeyAB/darknet, 20.4k/19.6k, all-permissive license
https://github.com/Tianxiaomo/pytorch-YOLOv4, 1.4k/4.1k, Apache-2.0 license
https://github.com/WongKinYiu/ScaledYOLOv4, 549/1.9k, GPL-3.0 license
YOLOv4和其他最先进的物体检测器的比较。YOLOv4 的运行速度比 EfficientDet 快两倍,性能相当。将 YOLOv3 的 AP 和 FPS 分别提高 10% 和 12%。
让我们仔细看看构成 v4 的部分。
Backbone
在 v4 中,比 v3 更强大的 CSPDarknet53 网络作为骨干。CSP意味着跨阶段部分连接的存在 :网络非相邻层之间的一种连接。同时,层数保持不变。SPP 模块已添加到其中。
(a)CSPDarknet53和(b)CSPDarknet53-tiny 的结构Neck
由一个 PANet 模块组成。代替 FPN,它用于路径聚合,即用于连接(而不是求和)来自不同尺度的激活。
Heads
在这里,概念保持不变,带有锚框。
除了体系结构更改之外,还对学习过程进行了许多改进。
应用SAT( (Self-Adversarial Training))——一种由两个阶段组成的增强方法。在第一阶段,目的是修改图片的状态,当网络认为所需目标不在图上时,将图片修改为这样的状态,而不是去更新参数的权重。在第二阶段,网络用第一阶段更改的图片中的目标进行训练。
增加感受野并使用注意力机制。
许多其他类型的增强和类别平衡。
Backbone改进:
用于训练:CutMix + Mosaic 增强、DropBlock 正则化、类标签平滑
用于推理:Mish激活、跨级部分连接 (CSP)、多输入加权残差连接 (MiWRC)
检测器改进:
用于训练:CIoU-loss,CmNN,DropBlock,Mosaic,SAT,消除网格灵敏度,单个GT的多个锚框,余弦退火学习率策略,最佳超参数,训练期间的随机形状。
用于推理:Mish,SPP块(空间金字塔池),SAM块(空间注意力模块),PAN,DIoU-NMS。
对网络的训练的更新,不会影响 FPS,但会提高准确性。
Mosaic代表一种新的数据增强方法 应用的不同类型的增强 修改版的SAM 修改版的PAN在 v4 上的第一篇文章发表六个月后,作者发布了另一篇文章,其中他们发布了扩展网络架构的机制。该机制不仅包括缩放输入分辨率、网络宽度和深度,还包括缩放网络结构本身。
YOLOv4和其他最先进的物体检测器的比较。虚线仅表示模型推理的延迟,而实线表示模型推理和后处理。
YOLOv4-large 的体系结构,包括 YOLOv4-P5、YOLOv4-P6 和 YOLOv4-P7。虚线箭头表示将相应的 CSPUp 块替换为 CSPSPP 块。优点
v4不仅比竞争对手更快,更准确,而且还可以在相对较弱的设备(例如1080Ti)上进行训练。相比之下,EfficientDet 需要在 v3–32 TPU 类型 (v3):32 个 TPU v3 内核,512 GiB 总 TPU 内存上进行训练,以达到可接受的精度。
v4内置于OpenCV中,因此可以直接调用而无需darknet。
许可证允许任意使用不受限制。
Glenn Jocher
由于作者没有参与以前版本的 YOLO 架构的开发,而只是参与实施,因此从道德角度来看,使用名称“YOLOv5”的合法性似乎值得怀疑。互联网上对此进行了不少讨论,但目前这个名字已经确定。
在arxiv.org上没有官方的论文。
https://github.com/ultralytics/yolov5, 10.7k/29.8k, GPL-3.0 license
它是在 v3(不是 v4)上的发展,在 v4 发布近 2 个月后发布。
性能优于 v3,但比 v4 差。
Yolov5的网络架构。它由三部分组成:(1)Backbone:CSPDarknet,(2)Neck:PANet,(3)Head:Yolo层。数据首先输入到CSPDarknet进行特征提取,然后馈送到PANet进行特征融合。最后,Yolo 图层输出检测结果(类、分数、位置、大小)。
增强:缩放、色彩空间调整、马赛克。
在 v5 中,与在 v4 中一样,实现了:
CSP bottleneck来进行特征提取
PANet用于特征聚合
精心设计的代码库,能够部署到移动和低功耗设备。
训练速度快
在某些测试上比v4差
GPL-3.0 许可证有义务公开源代码
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun
Megvii Technology, Ltd., China
“YOLOX: Exceeding YOLO Series in 2021”, https://arxiv.org/pdf/2107.08430.pdf, publication date 2021/07
https://github.com/Megvii-BaseDetection/YOLOX, 1.7k/7.2k, Apache-2.0 license
就像 v5 一样,它不是架构的官方开发。
该模型基于 YOLOv3-Darknet53。
创新:
解耦头:通过拆分分支解决分类和回归问题之间的冲突
增强:马赛克,混合,随机水平翻转,颜色抖动。
事实证明,ImageNet 上的预训练没有任何优势,因此所有模型都是从头开始训练的。
无anchor检测器。Anchor有自己的问题,例如,需要进行初步聚类分析以确定最佳anchor。Ancor还增加了检测头的复杂性和每个图像的预测数量。摆脱anchor降低了GFLOP并增加了mAP。
多正样本。在没有anchor的情况下,只应从整个图片中选择一个正样本,这可能会导致忽略其他高质量的预测。但是,使用此类预测可以产生有用的梯度,从而减少训练期间正采样和负采样的不平衡。因此,YOLOX 在中心有一个 3x3 区域用于正采样,这也提高了网络的精度。
SimOTA,高级标签分配(为每个GT定义正样本和负采样)。用于特殊算法选择样本可加快学习速度。
其他特点:用于更新权重的指数移动平均,余弦学习率策略,回归分支的IoU损失,类分支的BCE损失,SGD优化器。
发布时的检测精度高于竞争对手
发布时的检测率高于竞争对手
Apache-2.0开放许可证
来自百度。
“PP-YOLO: An Effective and Efficient Implementation of Object Detector”, https://arxiv.org/pdf/2007.12099.pdf, publication date 2020/07
“PP-YOLOv2: A Practical Object Detector”, https://arxiv.org/pdf/2104.10419.pdf, publication date 2021/04
“PP-YOLOE: An evolved version of YOLO”, https://arxiv.org/pdf/2203.16250.pdf, publication date 2022/03
https://github.com/PaddlePaddle/PaddleDetection, 2.1k/8.3k, Apache-2.0 license
该模型是中国公司百度的非官方开发,在其并行分布式深度学习(PADDLE)框架上编写。
作者没有寻找合适的骨干,也没有进行各种增强,也没有通过NAS优化超参数。
他们没有使用Darknet-53,而是将通常的ResNet50-vd作为骨干,并用可变形的卷积层替换了一些卷积层。对于数据增强,使用了基本的MixUp 。
YOLOv3 的网络架构。为简洁起见,省略了激活层。技巧:
批次从 64 增加到 192,相应地更正了 LR;
网络权重的指数移动平均 (EMA):lambda = 0.9998。
DropBlock 是一种 dropout 变体,其中特征图区域被放在一起丢弃。仅适用于 FPN,因为用于主干会导致性能下降。
IoU 损失 — 在 YOLOv3 中有 L1,但这不是 bbox 最有效的损失。作者使用了基本的IoU损失。
IoU Aware — 在 YOLOv3 中,对于置信度值,类概率乘以置信度值,这并没有提高定位精度。为了解决这个问题,增加了一个 IoU 预测分支来测量定位精度。当训练 IoU 感知时,损失参与 IoU 预测分支的训练。通过推理,预测的 IoU 乘以类概率和客观性,从而提供更好的定位精度。在这种情况下,计算复杂度实际上不会增加。
Grid sensitive
Matrix NMS
CoordConv — 增加SPP(空间金字塔池)卷积的通道数量
图像网络预训练蒸馏模型
与PP-YOLO相比的变化:
FPN被PANet取代
Mish激活
增加了输入图像的大小
更改了IoU aware损失:
PP-YOLOv2检测Neck的架构。
尝试过但没有工作:
余弦学习率衰减
在再训练期间冻结Backbone权重会降低 mAP
改进:
无anchor
CSPRepResNet骨干网络
任务分配学习:一种用于高效选择批次样本的算法
高效的任务对齐头部(ET-head),一种解耦head损失的替代方案。VFL = vari focal loss,DFL = distribution focal loss
在TensorRT上部署的能力
性能好
Apache-2.0开放许可证
非标准框架
需要大量的显卡(PP-YOLO:8x V100 GPU)
在下一部分中,我们将考虑 YOLOR、YOLOv6,最后是 YOLOv7。
—END—
英文原文:https://medium.com/deelvin-machine-learning/the-evolution-of-the-yolo-neural-networks-family-from-v1-to-v7-96d0687b4dce
请长按或扫描二维码关注本公众号
喜欢的话,请给我个在看吧!