YOLO变体
- 1 DAMO-YOLO
- 2 PP-YOLO, PP-YOLOv2, and PP-YOLOE
- 2.1 PP-YOLO数据增强和预处理
- 2.2 PP-YOLOv2
- 2.3 PP-YOLOE
- 3 YOLO-NAS
- 4 YOLO + Transformers
- 5 YOLOv1-v8及变体网络结构总结
YOLO系列博文:
- 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
- 【第2篇:YOLO系列论文、代码和主要优缺点汇总】
- 【第3篇:YOLOv1——YOLO的开山之作】
- 【第4篇:YOLOv2——更好、更快、更强】
- 【第5篇:YOLOv3——多尺度预测】
- 【第6篇:YOLOv4——最优速度和精度】
- 【第7篇:YOLOv5——使用Pytorch框架、AutoAnchor、多尺度预训练模型】
- 【第8篇:YOLOv6——更高的并行度、引入量化和蒸馏以提高性能加速推理】
- 【第9篇:YOLOv7——跨尺度特征融合】
- 【第10篇:YOLOv8——集成检测、分割和跟踪能力】
- 【第11篇:YOLO变体——YOLO+Transformers、DAMO、PP、NAS】
- 【第12篇:YOLOv9——可编程梯度信息(PGI)+广义高效层聚合网络(GELAN)】
- 【第13篇:YOLOv10——实时端到端物体检测】
- 【第14篇:YOLOv11——在速度和准确性方面具有无与伦比的性能】
- 【第15篇(完结):讨论和未来展望】
1 DAMO-YOLO
DAMO-YOLO于2022年11月由阿里巴巴集团发布在ArXiv上。受当时技术的启发,DAMO-YOLO 包含了以下主要特点:
-
神经架构搜索(NAS):他们使用了由阿里巴巴开发的一种称为MAE-NAS的方法来自动找到高效的架构。
-
大型颈部结构:受到GiraffeDet、CSPNet和 ELAN的启发,作者设计了一种可以在实时应用中工作的Neck结构,称为Efficient-RepGFPN。
-
小型头部结构:作者发现大型颈部和小型头部可以带来更好的性能,因此他们在分类和回归任务中各只保留了一个线性层,并将这种方法称为ZeroHead。
-
对齐OTA标签分配:动态标签分配方法,如OTA和TOOD,由于其显著优于静态方法而变得流行。然而,分类和回归之间的不一致仍然是一个问题,部分原因是分类和回归损失之间的不平衡。为了解决这个问题,他们的AlignOTA方法将focal loss引入分类成本,并使用预测框和真实框的IoU作为软标签,从而选择与每个目标对齐的样本,从全局角度解决这个问题。
-
知识蒸馏:他们提出的方法包括两个阶段:第一阶段是教师模型指导学生模型,第二阶段是学生模型独立微调。此外,他们在蒸馏方法中引入了两项增强:对齐模块(Align Module),使学生特征适应与教师相同的分辨率;通道级动态温度(Channel-wise Dynamic Temperature),归一化教师和学生的特征以减少实际值差异的影响。
作者生成了不同规模的模型,命名为DAMO-YOLO-Tiny/Small/Medium,其中最佳模型在NVIDIA V100上以233 FPS的速度达到了50.0%的AP。
2 PP-YOLO, PP-YOLOv2, and PP-YOLOE
PP-YOLO模型与我们描述的YOLO模型并行发展,是从YOLOv3开始,并且逐步改进了之前的PP-YOLO版本。
PP-YOLO 基于YOLOv3,与YOLOv4和YOLOv5类似,于2020年7月由百度公司的研究人员发布在ArXiv上。作者使用了PaddlePaddle深度学习平台,因此得名PP。从YOLOv4开始的趋势来看,PP-YOLO添加了十个现有的技巧来提高检测器的准确性,同时保持速度不变。根据作者的说法,这篇论文并不是为了介绍一种新的目标检测器,而是展示如何一步步构建一个更好的检测器。PP-YOLO使用的大多数技巧与YOLOv4不同,而相同的技巧则采用了不同的实现方式。
PP-YOLO相对于YOLOv3的主要变化包括:
-
ResNet50-vd骨干网络:用增强的可变形卷积和蒸馏预训练模型替换了DarkNet-53骨干网络。这种架构在ImageNet上的分类准确率更高,称为ResNet50-vd-dcn。
-
更大的批量大小:为了提高训练稳定性,批量大小从64增加到192,并更新了训练计划和学习率。
-
参数移动平均:对训练参数进行移动平均,并在推理时使用这些平均值而不是最终训练值。
-
DropBlock仅应用于FPN:只在特征金字塔网络(FPN)中应用DropBlock。
-
IoU损失:在边界框回归的另一个分支中添加了IoU损失,与L1损失一起使用。
-
IoU预测分支:添加了一个IoU预测分支来测量定位精度,并使用IoU感知损失。在推理过程中,除了分类概率和物体性得分外,PP-YOLO还乘以预测的IoU来考虑定位精度。
-
网格敏感方法:类似于YOLOv4,用于改善网格边界处的边界框中心预测。
-
Matrix NMS:使用Matrix NMS,它可以并行运行,比传统的NMS更快。
-
CoordConv:在FPN的1×1卷积层和检测头的第一个卷积层中使用CoordConv。CoordConv允许网络学习平移不变性,从而提高检测定位精度。
-
空间金字塔池化:仅在顶部特征图上使用空间金字塔池化,以增加骨干网络的感受野。
2.1 PP-YOLO数据增强和预处理
PP-YOLO使用了以下数据增强和预处理技术:
- Mixup训练:权重从Beta(α, β)分布中采样,其中α = 1.5,β = 1.5。
- 随机颜色失真。
- 随机扩展。
- 随机裁剪和随机翻转,概率为0.5。
- RGB通道的z-score归一化,均值为[0.485, 0.456, 0.406],标准差为[0.229, 0.224, 0.225]。
- 多种图像尺寸,均匀地从[320, 352, 384, 416, 448, 480, 512, 544, 576, 608]中抽取。
在MS COCO 2017测试开发集上的评估显示,PP-YOLO在NVIDIA V100上以73 FPS的速度达到了45.9%的AP和65.2%的AP50。
2.2 PP-YOLOv2
PP-YOLOv2于2021年4月发布在ArXiv上,并在PP-YOLO的基础上增加了四项改进,使得性能从45.9% AP提升到49.5% AP,在NVIDIA V100上的速度为69 FPS。
PP-YOLOv2相对于PP-YOLO的改进包括:
- 骨干网络变更:从ResNet50变更为ResNet101。
- 路径聚合网络(PAN):使用路径聚合网络代替FPN,类似于YOLOv4。
- Mish激活函数:与YOLOv4和YOLOv5不同,他们仅在检测颈部应用了Mish激活函数,而骨干网络仍保持ReLU不变。
- 更大的输入尺寸:较大的输入尺寸有助于提高对小物体的检测性能。他们将最大的输入尺寸从608扩展到768,并将每GPU的批量大小从24减少到12。输入尺寸均匀地从[320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768]中抽取。
- 修改后的IoU感知分支:他们修改了IoU感知损失的计算方法,使用软标签格式而不是软权重格式。
2.3 PP-YOLOE
PP-YOLOE于2022年3月发布在ArXiv上,在PP-YOLOv2的基础上进行了改进,在NVIDIA V100上以78.1 FPS的速度达到了51.4%的AP。
下图展示了详细的架构图。
PP-YOLOE相对于PP-YOLOv2的主要变化包括:
-
无锚框(Anchor-free)。
-
新的骨干网络和颈部结构:受到TreeNet的启发,作者修改了骨干网络和颈部结构,使用结合残差连接和密集连接的RepResBlocks。
-
任务对齐学习(TAL):YOLOX首次提出了任务不一致的问题,即分类置信度和定位准确性在所有情况下并不总是保持一致。为了解决这个问题,PP-YOLOE实现了TOOD中提出的TAL,其中包括动态标签分配与任务对齐损失相结合的方法。
-
高效的任务对齐头(ET-head):不同于YOLOX中将分类和定位头解耦的设计,PP-YOLOE使用基于TOOD的单一头部来提高速度和精度。
-
Varifocal损失(VFL)和分布焦点损失(DFL):VFL通过目标分数加权正样本的损失,给高IoU的样本更高的权重,这在训练过程中优先考虑高质量样本。同样,两者都使用IoU感知分类得分(IACS)作为目标,允许联合学习分类和定位质量,从而在训练和推理之间保持一致性。DFL将Focal Loss从离散标签扩展到连续标签,使得能够成功优化结合质量估计和类别预测的改进表示。这允许准确描绘真实数据中的灵活分布,消除了不一致性的风险。
像之前的YOLO版本一样,作者通过改变骨干网络和颈部的宽度和深度生成了多个不同规模的模型。这些模型被称为PP-YOLOE-s(小)、PP-YOLOE-m(中)、PP-YOLOE-l(大)和PP-YOLOE-x(特大)。
3 YOLO-NAS
YOLO-NAS于2023年5月由Deci公司发布,该公司专注于开发生产级模型和工具,以构建、优化和部署深度学习模型。YOLO-NAS旨在检测小物体、提高定位精度,并增强计算性能比,使其适合实时边缘设备应用。此外,其开源架构可供研究使用。
YOLO-NAS的创新点包括:
- 量化感知模块:称为QSP(Quantization-aware Spatial Pyramid)和QCI(Quantization-aware Channel Interaction),这些模块结合了8位量化的重参数化技术,以最小化后训练量化过程中的精度损失。
- 自动架构设计:使用AutoNAC,这是Deci专有的神经架构搜索(NAS)技术。
- 混合量化方法:选择性地对模型的某些部分进行量化,以平衡延迟和精度,而不是采用标准量化方法,其中所有层都会受到影响。
- 预训练方案:利用自动标注的数据、自蒸馏技术和大规模数据集进行预训练。
AutoNAC系统在创建YOLO-NAS中发挥了关键作用,它非常灵活,可以适应任何任务、特定数据、推理环境以及性能目标设定。该技术帮助用户识别最合适的结构,为他们的特定用途提供精确度和推理速度的最佳平衡。这项技术考虑了数据、硬件以及其他与推理过程相关的因素,如编译器和量化。此外,在NAS过程中,为了兼容后训练量化(PTQ),模型架构中还加入了RepVGG块。通过改变QSP和QCI块的深度和位置,他们生成了三种架构:YOLO-NASS、YOLO-NASM和YOLO-NASL(S、M、L分别代表小型、中型和大型)。下图展示了YOLO-NASL的模型架构。
4 YOLO + Transformers
随着Transformer实现了自然语言处理、音频处理和计算机视觉的大一统之后,有学者开始研究将Transformer与YOLO结合。最早尝试使用Transformer进行目标检测的是You Only Look at One Sequence (YOLOS),它将预训练的视觉Transformer(ViT)从图像分类任务转换为目标检测任务,在MS COCO数据集上达到了42.0%的AP。它对ViT所做的更改有两点:(1)将用于分类的一个[CLS]标记替换为一百个[DET]标记以进行检测;(2)将ViT中的图像分类损失替换为类似于基于Transformer的端到端目标检测中使用的二分匹配损失。
许多工作将Transformer与特定应用定制的YOLO相关架构结合起来。例如,Zhang等人受到视觉Transformer在遮挡、扰动和领域迁移方面鲁棒性的启发,提出了ViT-YOLO,这是一种混合架构,它在骨干网络中结合了CSP-Darknet和多头自注意力机制(MHSA-Darknet),颈部采用了双向特征金字塔网络(BiFPN),以及像YOLOv3那样的多尺度检测头。他们的具体应用场景是无人机图像中的目标检测。下图展示了ViT-YOLO的详细架构。
MSFT-YOLO在骨干网络和检测头上添加了基于Transformer的模块,旨在检测钢表面缺陷。NRT-YOLO (Nested Residual Transformer)试图解决遥感图像中微小物体的问题。通过增加额外的预测头、特征融合层和残差Transformer模块,NRT-YOLO在DOTA数据集上相对于YOLOv5l提高了5.4%。
在遥感应用中,YOLO-SD试图提高合成孔径雷达(SAR)图像中小船只的检测精度。他们从YOLOX开始,结合了多尺度卷积(MSC)以改进不同尺度下的检测,并使用特征Transformer模块来捕捉全局特征。作者表明,这些改动使得YOLO-SD在HRSID数据集上的表现优于YOLOX。
另一个有趣地将YOLO与检测Transformer(DETR)结合起来的尝试是DEYO,它包括两个阶段:一个基于YOLOv5的模型后接一个类似DETR的模型,第一阶段生成高质量的查询和锚框,作为第二阶段的输入。结果显示,这种方法比DETR具有更快的收敛时间和更好的性能,在COCO检测基准上达到了52.1%的AP。