编译:ronghuaiyang
导读
在上一部分中,我们研究了最古老的三种架构:YOLO,YOLOv2,YOLOv3。今天,我们将处理接下来的六种结构。

YOLOv4, Scaled YOLOv4作者
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 licensehttps://github.com/Tianxiaomo/pytorch-YOLOv4, 1.4k/4.1k, Apache-2.0 licensehttps://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
Scaled YOLOv4在 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。许可证允许任意使用不受限制。YOLOv5作者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 许可证有义务公开源代码YOLOX作者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
性能对比精确模型的速度-精度权衡,(左)移动设备上精简模型的尺寸-精度曲线,(右)和其他最先进的物体检测器的比较。
COCO 2017测试中不同的检测器的速度和精度比较。所有模型都在 300 个 epoch 上进行训练,以便进行公平比较。
结构特点就像 v5 一样,它不是架构的官方开发。
该模型基于 YOLOv3-Darknet53。
创新:
解耦头:通过拆分分支解决分类和回归问题之间的冲突YOLOv3 head与提出的解耦head之间的区别图示。对于每一级别的FPN特征,我们首先采用1x1的conv层将特征通道减少到256个,然后添加两个平行分支,每个分支有两个3x3的conv层,分别用于分类和回归任务。将IoU 分支添加到回归分支中。
增强:马赛克,混合,随机水平翻转,颜色抖动。事实证明,ImageNet 上的预训练没有任何优势,因此所有模型都是从头开始训练的。无anchor检测器。Anchor有自己的问题,例如,需要进行初步聚类分析以确定最佳anchor。Ancor还增加了检测头的复杂性和每个图像的预测数量。摆脱anchor降低了GFLOP并增加了mAP。多正样本。在没有anchor的情况下,只应从整个图片中选择一个正样本,这可能会导致忽略其他高质量的预测。但是,使用此类预测可以产生有用的梯度,从而减少训练期间正采样和负采样的不平衡。因此,YOLOX 在中心有一个 3x3 区域用于正采样,这也提高了网络的精度。SimOTA,高级标签分配(为每个GT定义正样本和负采样)。用于特殊算法选择样本可加快学习速度。其他特点:用于更新权重的指数移动平均,余弦学习率策略,回归分支的IoU损失,类分支的BCE损失,SGD优化器。YOLOX-Darknet53在COCO验证集上的指标。所有模型均在 640x640 分辨率下进行了测试,在 Tesla V100 上,用FP16 精度和 batch=1 。此表中的延迟和 FPS 是在未进行后处理的情况下测量的。
优点发布时的检测精度高于竞争对手发布时的检测率高于竞争对手Apache-2.0开放许可证PP-YOLOv1/v2/E作者来自百度。
主要论文“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)框架上编写。
性能比较PP-YOLOE与其他先进型号的比较。PP-YOLOE在COCO测试集中实现了51.4 mAP,在Tesla V100上实现了78.1 FPS,与PP-YOLOv2相比,获得了1.9 AP和9.2 FPS的改进。
结构特点PP-YOLO作者没有寻找合适的骨干,也没有进行各种增强,也没有通过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 sensitiveMatrix NMSCoordConv — 增加SPP(空间金字塔池)卷积的通道数量图像网络预训练蒸馏模型PP-YOLOv2与PP-YOLO相比的变化:
FPN被PANet取代Mish激活增加了输入图像的大小更改了IoU aware损失:MS-COCO的消融研究。“+”表示结果包括边界框解码时间(1–2ms)
PP-YOLOv2检测Neck的架构。
尝试过但没有工作:
余弦学习率衰减在再训练期间冻结Backbone权重会降低 mAPPP-YOLOE改进:
无anchorCSPRepResNet骨干网络任务分配学习:一种用于高效选择批次样本的算法高效的任务对齐头部(ET-head),一种解耦head损失的替代方案。VFL = vari focal loss,DFL = distribution focal lossPP-YOLOE在COCO val上的消融研究.作者使用640x640分辨率作为FP32精度的输入,并在Tesla V100上进行了测试,没有需后处理。
PP-YOLOE的模型架构。骨干是CSPRepResNet,Neck是路径聚合网络(PAN),Head是高效任务对齐头(ET-head)。
优点在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