Beyond YOLOv8!| YOLOv6 v3.0 is coming!

简介: Beyond YOLOv8!| YOLOv6 v3.0 is coming!

640.png


Paper: https://arxiv.org/pdf/2301.05586.pdf

Code: https://github.com/meituan/YOLOv6

引言

没啥好说的,YOLO 这发新的速度,股市打新都没这么猛,卷王来了都不敢吭声。今天主要是带大家光速过一遍 YOLOv6 v3.0 版本带来了更新,不做技术解读,先占个坑。

YOLOv8 才正式宣布开源没几天,YOLOv6 就在新年到来前发布版本了,该版本主要是对网络架构训练方案进行了改进。

其中:

  1. YOLOv6-N 在 COCO 数据集上以 1187 FPS 的吞吐量在 NVIDIA Tesla T4 GPU 上测试达到了 `37.5%`` 的 AP。
  2. YOLOv6-S484 FPS 下达到 `45.0%`` AP,优于同等规模的其他主流检测器(YOLOv5-S、YOLOv8-S、YOLOX-S 和 PPYOLOE-S)。
  3. 在接近的推理速度下,YOLOv6-M/L 也比其他检测器实现了更好的精度性能(分别为 50.0%/52.8%)。

此外,通过扩展的骨干网络(Backbone)和颈部(Head)设计,YOLOv6-L6 最终实时实现了 YOLO 家族的 SOTA。好了,留给百度的时间已经不多了,现在离 2023 年农历新年还有6天。

贡献

  • 应用双向串联(BiC)模块更新了检测器的颈部,以提供更准确的定位信号。
  • 将 YOLOv5/v8 中的 SPPF 模块简化为 SimCSSPSPP 模块,在速度几乎保持不变的同时提升精度。
  • 提出了一种 anchor-aided 的辅助训练(AAT)策略,以在不影响推理效率的情况下同时享受到 Anchor-basedAnchor-free 范式的优势。
  • 将 YOLOv6 的 Backbone 和 Head 加多一个 Stage,以加强高分辨率输入图像的性能。
  • 采用了一种新的自蒸馏策略来提高 YOLOv6 小模型的性能,其中 DFL 的较重分支在训练期间被用作增强的辅助回归分支,并在推理时被移除以避免显着的速度下降。

方法

YOLOv6 v3.0 Framework

Network Design

在实践中,多尺度特征集成已被证明是目标检测的关键和有效组成部分。特征金字塔网络(FPN)被提议通过自上而下的路径聚合高级语义特征和低级特征,从而提供更准确的定位。随后,为了增强分层特征表示的能力,在双向 FPN 上出现了新的工作,如 PANet、BiFPN 等。

PANet 在 FPN 之上添加了一个额外的自底向上路径,以缩短低级和顶层特征的信息路径,这有助于从低级特征传播准确的信号。BiFPN 则为不同的输入特征引入了可学习的权重,并简化了 PAN 以实现更好的性能和更高的效率。PRB-FPN 被提议通过具有双向融合和相关改进的并行 FP 结构来保留高质量的特征以进行准确定位。

受上述工作的启发,YOLOv6 设计了一个增强型 PAN 作为该网络架构的检测 Head。为了在不带来过多计算负担的情况下增强定位信号,提出了一个双向连接模块来聚合三个相邻层的特征图,它将来自主干  的额外低级特征融合到  中。在这种情况下,可以保留更准确的定位信号,这对于小物体的定位具有重要意义。

此外,作者将 SPPF 模块简化为类似 CSP 的版本,称为 SimCSSPPPF  模块,增强了特征表示能力。特别的,通过缩小隐藏层的通道和 SPP 来修改 YOLOv7 中的 SimSPPCSPC 块。最后,再将 CSPBlock 升级为 RepBlock(适用于小型模型)或 CSPStackRepBlock(适用于大型模型),并相应地调整宽度和深度。

总的来说,YOLOv6 的颈部命名为 RepBi-PAN,其框架如上图所示。

Anchor-Aided Training

YOLOv6 是一个 anchor-free 检测器,追求更高的推理速度。然而,通过实验发现,与 anchor-free 模式相比,anchor-base 的范式在相同设置下为 YOLOv6-N 带来了额外的性能提升,如下表所示:

神奇了

此外,采用 anchor-base 范式的 ATSS 作为 YOLOv6 早期版本中的 warm-up label assignment strategy,可以稳定训练,厉害了。

鉴于此,本文提出了锚定辅助训练(AAT),其中引入了基于锚定的辅助分支以结合基于锚定和无锚定范式的优点。它们同时应用于分类和回归头,下图清晰的显示了带有辅助装置的检测头:

在训练阶段,辅助分支和无锚框分支从独立的损失中学习,同时一同反馈信号。因此,来自辅助分支的辅助嵌入式引导信息将会被集成到 anchor-free heads 中。

Self-distillation

在 YOLOv6 的早期版本中,自蒸馏仅在大型模型(即 YOLOv6-M/L)中引入,它通过最小化教师和学生的类别预测之间的 KL 散度来应用普通知识蒸馏技术。同时采用 DFL 作为回归损失,对框回归执行类似于 LD 中提出的自蒸馏方法。其中,知识蒸馏的损失函数定义如下:

这里  和  分别表示教师和学生模型对应的分类和回归损失。

因此,总的损失函数可抽象为:

超参数  的引入是用来平衡两个损失。在训练初期,教师的软标签更容易学习。随着训练的继续,学生的表现将与老师相匹配,这样一来硬标签将对学生有更多帮助。在此基础上,可以将余弦权重衰减应用于  以动态调整来自硬标签和来自教师的软标签的信息。 的公式可定义如下:

这里, 和  分别表示当前epoch和最大的epoch数。

值得注意的是,DFL 的引入需要回归分支的额外参数,这会显着影响小模型的推理速度。因此,YOLOv6 专门为小型模型设计了解耦局部蒸馏 (DLD),在不降低速度的情况下提高性能。

具体来说,其附加了一个重辅助增强回归分支来合并 DFL。在自蒸馏过程中,学生配备了朴素回归分支和增强回归分支,而教师仅使用辅助分支。需要注意的是,这里朴素回归分支仅使用硬标签进行训练,而辅助分支根据来自教师和硬标签的信号进行更新。蒸馏后,朴素回归分支被保留,而辅助分支被移除。通过这种策略,在不影响推理效率的情况下,DFL 在蒸馏中的重回归分支的优势得到了相当大的保持。

实验

Performance comparison with SOTA methods

废话不多说,反正全面吊打就对了。

Ablation Study

总结

YOLOv6 v3.0 版本主要创新点还是集中在网络设计和训练策略这两方方面改进,这些方法极大的推动了 YOLOv6 达到实时目标检测的最新精度。整体来说创新性不是很足,但实验部分做得还算 Solid,主要还是偏向于工程实践,借用凯明最喜欢用的一句话就是:"Without bells and whistles."。挺不错的,代码也已经开源了,大家赶紧用起来。

目录
相关文章
|
算法 测试技术 开发工具
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
680 0
|
5月前
|
运维 Prometheus 监控
运维不是救火队
运维不是救火队
260 6
南京观海微电子---MOS型(NMOS和PMOS)LDO应用原理
LDO分为NMOS和PMOS两种类型,工作在线性模式。通过误差放大器调节输出晶体管,实现稳压。NMOS型静态电流小,但压差大;PMOS可降低压差,提升效率,两者均以电压控制,负载变化时静态电流稳定,适用于低功耗场景。
南京观海微电子---MOS型(NMOS和PMOS)LDO应用原理
|
机器学习/深度学习 数据挖掘 数据处理
alteryx哪里开发的,如何收费
【6月更文挑战第23天】alteryx哪里开发的,如何收费
585 5
|
机器学习/深度学习 监控 自动驾驶
深度学习中的2D目标检测
2D目标检测是深度学习中的一个关键任务,旨在识别图像中的目标对象,并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。
471 5
|
存储 SQL 关系型数据库
【MySQL基础篇】MySQL约束语法
文章介绍了MySQL中表的约束概念,包括非空、唯一、主键、默认和外键约束,以及如何在创建和修改表时指定这些约束。外键约束用于保持数据的一致性和完整性,文章通过示例展示了添加、删除外键的语法,并讨论了不同的删除/更新行为,如CASCADE和SETNULL。
【MySQL基础篇】MySQL约束语法
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
|
数据采集 JSON JavaScript
|
前端开发 安全 数据库
Web开发
【8月更文挑战第4天】Web开发
593 2