YOLOv6#
作者:Chuyi Li, Lulu Li, Hongliang Jiang, Kaiheng Weng, Yifei Geng, Liang Li, Zaidan Ke, Qingyuan Li, Meng Cheng, Weiqiang Nie, Yiduo Li, Bo Zhang, Yufei Liang, Linyuan Zhou, Xiaoming Xu, Xiangxiang Chu, Xiaoming Wei, Xiaolin Wei, Meituan Inc.
摘要: YOLO系列一直是工业应用中高效的目标检测框架。本文旨在推动YOLO系列的极限,提出了YOLOv6,它在保持推理速度的同时,通过集成最新的网络设计、训练策略、测试技术、量化和优化方法,实现了更好的准确性。YOLOv6在不同规模的网络上进行了定制,以适应多样化的用例。在NVIDIA Tesla T4 GPU上的测试表明,YOLOv6-N在COCO数据集上达到了35.9%的AP,吞吐量为1234 FPS。
1. 试图解决的问题: 论文试图解决工业应用中目标检测的效率和准确性的平衡问题,特别是在资源受限的硬件平台上。
2. 是否是新问题: 这不是一个全新的问题,因为YOLO系列已经存在多年,但作者提出了一个新的框架YOLOv6,以进一步推动目标检测技术的发展。
3. 科学假设: 假设通过集成最新的网络设计和优化技术,可以构建一个在保持低延迟的同时提供高准确率的目标检测框架。
4. 相关研究:
YOLO系列:YOLOv1-3, YOLOv4, YOLOv5, YOLOv7
其他竞争框架:YOLOX, PP-YOLOE
网络设计:RepVGG, CSPNet
训练策略:知识蒸馏,数据增强
量化方法:PTQ, QAT 相关研究归类为单阶段目标检测器的发展和优化。 领域内值得关注的研究员包括YOLO系列的创始人Joseph Redmon和Ali Farhadi。
5. 解决方案的关键: YOLOv6 的关键改进包括:
重新设计不同规模的网络架构,以适应不同的工业应用场景。
引入自蒸馏策略,提高模型在训练过程中的效率。
采用先进的检测技术,如标签分配、损失函数和数据增强。
改革量化方案,使用 RepOptimizer 和通道级蒸馏,以提高部署后的模型性能。
6. 实验设计: 实验设计包括在 COCO 2017 数据集上训练和评估模型,使用 NVIDIA Tesla T4 GPU 和 TensorRT 进行速度性能测试。实验还涉及了消融研究,以评估不同组件对整体性能的影响。
7. 数据集和代码: 使用COCO 2017数据集进行评估。代码已在GitHub上开源:https://github.com/meituan/YOLOv6。
**8. 实验结果: 实验结果表明,YOLOv6 在吞吐量和延迟方面优于其他同类规模的主流检测器,如 YOLOv5、YOLOX 和 PP-YOLOE。这些结果支持了文章中提出的改进措施能够有效提升目标检测性能的假设。
9. 论文贡献:
提出了 YOLOv6,一个为工业应用设计的高效目标检测框架。
引入了自蒸馏策略和先进的检测技术,提高了模型的性能。
改革了量化方案,使得 YOLOv6 在部署后能够保持高性能。
开源了代码,方便社区进一步研究和应用。
10. 下一步工作: 下一步的工作可能包括:
在更多的数据集和实际应用场景中测试 YOLOv6。
进一步优化模型以减少计算资源消耗,使其更适合资源受限的环境。
探索更先进的量化技术和训练策略,以提高模型的泛化能力和鲁棒性。
研究如何将 YOLOv6 应用于其他计算机视觉任务,如语义分割或实例分割。
回答问题:
解决的问题:工业应用中目标检测的效率和准确性的平衡。
新问题:不是新问题,但提出了新的解决方案。
科学假设:集成最新技术可以构建一个高效准确的目标检测框架。
相关研究:YOLO系列和其他目标检测框架,领域内重要研究员包括YOLO系列创始人。
解决方案关键:网络设计、训练策略、量化和部署技术的集成。
实验设计:在COCO 2017数据集上,使用TensorRT在Tesla T4 GPU评估性能。
数据集和代码:使用COCO 2017,代码已开源。
实验结果支持假设:是的,实验结果支持了提出的假设。
论文贡献:提出了YOLOv6框架,实现了高效准确的目标检测,并开源了代码。
下一步工作:在更多硬件上测试性能,研究更高级的数据增强和训练策略,将其应用于更多实际场景。
这个图表展示了YOLOv6与其他几种模型在不同延迟和吞吐量条件下的性能表现。图表中使用了COCO AP(平均精度)作为性能指标,横轴分别表示延迟(左图)和吞吐量(右图),纵轴表示COCO AP。
左图:延迟 vs. COCO AP
横轴表示Tesla T4 TensorRT FP16延迟(毫秒),纵轴表示COCO AP(%)。
YOLOv6的不同版本(S、M、L、N)在延迟较低的情况下表现出较高的COCO AP。
YOLOv6-S和YOLOv6-M在延迟较低时表现出色,COCO AP较高。
YOLOv6-L在延迟较高时表现出色,COCO AP最高。
其他模型(YOLOv5、YOLOv7、YOLOX、PP-YOLOE)在延迟较低时的COCO AP相对较低,随着延迟增加,性能有所提升,但整体不如YOLOv6。
右图:吞吐量 vs. COCO AP
横轴表示Tesla T4 TensorRT FP16吞吐量(FPS),纵轴表示COCO AP(%)。
YOLOv6的不同版本在高吞吐量条件下表现出较高的COCO AP。
YOLOv6-S和YOLOv6-M在吞吐量较高时表现出色,COCO AP较高。
YOLOv6-L在吞吐量较高时表现出色,COCO AP最高。
其他模型(YOLOv5、YOLOv7、YOLOX、PP-YOLOE)在吞吐量较高时的COCO AP相对较低,整体不如YOLOv6。
总结
YOLOv6在不同延迟和吞吐量条件下均表现出较高的COCO AP,尤其是YOLOv6-L版本。
相比其他模型,YOLOv6在低延迟和高吞吐量条件下的性能更为优越。
量化后的YOLOv5在延迟和吞吐量方面也表现出色,但整体不如YOLOv6。
这表明YOLOv6在效率和精度方面具有显著优势,适用于需要高性能和高精度的目标检测任务。
这张图展示了YOLOv6模型的结构,包括其输入输出流程。以下是对该模型结构的详细描述:
输入
Input:模型的输入是图像数据,通常是RGB图像。
Backbone
EfficientRep Backbone:这是模型的主干网络,用于提取图像的特征。EfficientRep是一种高效的特征提取网络,能够在保持高精度的同时减少计算量。
Neck
Rep-PAN:这是模型的颈部结构,用于进一步处理和融合特征。Rep-PAN包含多个模块:
Up-sample:上采样操作,用于增加特征图的分辨率。
Concatenation over channel dimension:在通道维度上进行特征图的拼接。
RepBlock:包含卷积层和其他操作,用于特征提取和融合。
Conv:卷积层,用于特征处理。
Head
Efficient decoupled head:这是模型的头部结构,用于最终的目标检测。每个头部包含三个输出:
cls.:分类输出,用于预测目标的类别。
reg.:回归输出,用于预测目标的边界框。
obj.:目标置信度输出,用于预测目标的存在概率。
流程
输入图像:图像数据输入到EfficientRep Backbone。
特征提取:EfficientRep Backbone提取图像的特征,并将特征图传递到Rep-PAN。
特征处理和融合:Rep-PAN对特征图进行上采样、拼接和进一步处理,生成多尺度的特征图。
目标检测:Efficient decoupled head对多尺度特征图进行处理,生成分类、回归和目标置信度的输出。
输出结果:最终输出目标的类别、边界框和置信度。
备注
图中展示的是YOLOv6的N和S版本,对于M和L版本,RepBlocks被CSPStackRep替代。
这个结构设计旨在提高目标检测的效率和精度,通过高效的特征提取和处理模块,实现快速且准确的目标检测。
这张图展示了YOLOv6模型中的几个关键模块的结构和工作原理,包括RepBlock、RepConv和CSPStackRep Block。以下是对这些模块的详细描述和它们的工作原理:
(a) RepBlock
结构:
RepBlock由多个RepVGG块组成,每个块包含以下组件:
1x1卷积层
3x3卷积层
批归一化(BN)层
ReLU激活函数
这些组件通过元素级加法(Element-wise add)进行融合。
工作原理:
在训练期间,RepBlock通过多个RepVGG块提取特征,并使用ReLU激活函数进行非线性变换。
这种结构有助于在训练期间提高模型的表达能力和特征提取能力。
(b) RepConv
结构:
在推理期间,RepVGG块被转换为RepConv。
RepConv是一个简化的卷积操作,包含一个卷积层和一个ReLU激活函数。
工作原理:
在推理期间,RepBlock被简化为RepConv,以减少计算量和提高推理速度。
这种转换有助于在推理期间保持高效的计算性能。
(c) CSPStackRep Block
结构:
CSPStackRep Block包含以下组件:
三个1x1卷积层
多个双RepConv子块,每个子块包含两个RepConv和一个ReLU激活函数
残差连接(Residual connection),用于在输入和输出之间进行跳跃连接
工作原理:
CSPStackRep Block通过多个1x1卷积层和双RepConv子块进行特征提取和融合。
残差连接有助于缓解梯度消失问题,并提高模型的训练稳定性。
这种结构设计旨在提高特征提取的效率和精度,同时保持较低的计算复杂度。
总结
RepBlock在训练期间通过多个RepVGG块进行特征提取,并在推理期间简化为RepConv以提高推理速度。
CSPStackRep Block通过多个1x1卷积层和双RepConv子块进行高效的特征提取,并使用残差连接提高训练稳定性。
这些模块共同构成了YOLOv6模型的核心部分,旨在提高目标检测的效率和精度。
通过这些模块的协同工作,YOLOv6能够在保持高精度的同时,实现快速且高效的目标检测。
这张图表展示了YOLOv6-S模型在使用RepOptimizer训练后,激活分布的改进情况。图表分为两个部分,分别显示了使用RepVGG和RepOptimizer的激活分布。
图表描述
上图:显示了使用RepVGG的YOLOv6-S模型在
neck.Rep_p4.block.0.rbr_reparam
层的激活分布。横轴表示激活值的大小。
纵轴表示激活值的频率(对数刻度)。
激活值分布较为广泛,频率从高到低逐渐递减。
下图:显示了使用RepOptimizer的YOLOv6-S模型在相同层的激活分布。
横轴表示激活值的大小。
纵轴表示激活值的频率(对数刻度)。
激活值分布较为集中,频率在较小的激活值范围内较高,随着激活值增大,频率迅速下降。
分析和总结
激活分布的改进:
使用RepOptimizer后,激活值的分布更加集中,主要集中在较小的激活值范围内。
这种集中分布表明模型的激活值更加稳定,减少了极端激活值的出现。
模型性能的提升:
更加集中的激活分布有助于提高模型的训练稳定性和收敛速度。
减少极端激活值可以降低梯度爆炸或梯度消失的风险,从而提高模型的训练效果。
总结:
使用RepOptimizer训练的YOLOv6-S模型在激活分布上表现出显著的改进。
这种改进有助于提高模型的训练稳定性和性能,使得模型在实际应用中能够更高效地进行目标检测。
通过这些改进,YOLOv6-S模型能够在保持高精度的同时,实现更稳定和高效的训练过程,从而在实际应用中表现出更优异的性能。
这张图展示了YOLOv6模型在量化感知训练(QAT)中使用的通道级蒸馏(Channel-wise Distillation)结构。图中包含两个主要部分:教师模型(Teacher)和学生模型(Student)。
结构描述
输入图像:图像数据输入到教师模型和学生模型。
教师模型(Teacher, Float32):
Backbone:主干网络,用于提取图像的特征。
Neck:颈部结构,用于进一步处理和融合特征。
Head:头部结构,用于最终的目标检测。
教师模型使用浮点数(Float32)进行计算,具有较高的精度。
学生模型(Student, INT8):
Backbone:主干网络,用于提取图像的特征。
Neck:颈部结构,用于进一步处理和融合特征。
Head:头部结构,用于最终的目标检测。
学生模型使用8位整数(INT8)进行计算,具有较低的计算复杂度和存储需求。
通道级蒸馏损失(Channel-wise Distillation Loss):
在训练过程中,学生模型的特征图与教师模型的特征图进行对比,通过通道级蒸馏损失来指导学生模型的学习。
这种损失函数有助于学生模型更好地模仿教师模型的特征提取能力。
分析和总结
量化感知训练(QAT):
QAT是一种在训练过程中考虑量化误差的方法,通过在训练期间模拟量化过程,使得模型在推理时能够更好地适应量化后的计算环境。
通过QAT,学生模型能够在保持较高精度的同时,显著降低计算复杂度和存储需求。
通道级蒸馏:
通道级蒸馏通过对比教师模型和学生模型的特征图,指导学生模型学习教师模型的特征提取能力。
这种方法能够有效地提高学生模型的性能,使其在量化后的计算环境中仍能保持较高的检测精度。
总结:
通过使用通道级蒸馏和QAT,YOLOv6模型能够在保持高精度的同时,实现高效的计算性能。
教师模型和学生模型的协同工作,使得学生模型能够在量化后的计算环境中表现出色,适用于资源受限的实际应用场景。
这种结构设计和训练方法使得YOLOv6模型在实际应用中能够兼顾高精度和高效性,适用于各种目标检测任务。
这张表格展示了YOLOv6模型与其他YOLO系列检测器在COCO 2017验证集上的性能对比。表格中列出了不同模型的输入尺寸、平均精度(AP)、帧率(FPS)、延迟(Latency)、参数数量(Params)和浮点运算次数(FLOPs)。
表格分析
列标题:
Method:模型名称。
Input Size:输入图像的尺寸。
AP50:在IoU阈值为0.50时的平均精度。
AP50:95:在IoU阈值从0.50到0.95的平均精度。
FPS:每秒处理的帧数。
Latency:延迟时间(毫秒)。
Params:模型参数数量(百万)。
FLOPs:每次前向传播的浮点运算次数(十亿次)。
行数据:
表格中列出了YOLOv6的不同版本(如YOLOv6-N、YOLOv6-S、YOLOv6-M、YOLOv6-L)以及其他YOLO系列模型(如YOLOv5、YOLOX、PPYOLOE等)的性能数据。
总结分析
精度(AP):
YOLOv6系列模型在AP50和AP50:95上表现出色,尤其是YOLOv6-L在AP50上达到了56.0%,在AP50:95上达到了40.3%。
相比之下,YOLOv5和YOLOX系列模型的精度略低。
速度(FPS)和延迟(Latency):
YOLOv6系列模型在速度和延迟上也表现良好,尤其是YOLOv6-N和YOLOv6-S在保持较高精度的同时,达到了较高的FPS和较低的延迟。
例如,YOLOv6-N的FPS为705,延迟仅为1.7毫秒,而YOLOv6-S的FPS为484,延迟为2.5毫秒。
参数数量(Params)和浮点运算次数(FLOPs):
YOLOv6系列模型在参数数量和FLOPs上也表现出色,尤其是YOLOv6-N和YOLOv6-S在保持较高精度和速度的同时,参数数量和FLOPs相对较低。
例如,YOLOv6-N的参数数量为19.1M,FLOPs为4.5G,而YOLOv6-S的参数数量为35.2M,FLOPs为16.4G。
结论
综合性能:
YOLOv6系列模型在精度、速度、参数数量和FLOPs上表现出色,尤其是YOLOv6-N和YOLOv6-S在保持高精度的同时,实现了高速度和低延迟。
这种综合性能使得YOLOv6系列模型在实际应用中具有很高的实用价值,适用于各种目标检测任务。
模型选择:
根据具体应用需求,可以选择不同版本的YOLOv6模型。例如,对于需要高速度和低延迟的应用,可以选择YOLOv6-N或YOLOv6-S;对于需要更高精度的应用,可以选择YOLOv6-M或YOLOv6-L。
通过这些对比和分析,可以看出YOLOv6系列模型在目标检测任务中具有显著的优势,能够在不同应用场景中提供高效且高精度的检测性能。