SOTA!目标检测开源框架YOLOv6 3.0版本来啦
近日,美团视觉智能部发布了 YOLOv6 3.0 版本,再一次将目标检测的综合性能推向新高。YOLOv6-L6 检测精度和速度超越 YOLOv7-E6E,取得当前实时目标检测榜单 SOTA。本文主要介绍了 YOLOv6 3.0 版本中引入的技术创新和优化,希望能为从事相关工作的同学带来一些启发或帮助。
-
1. 概述
-
2. 关键技术介绍
-
2.1 表征能力更强的 RepBi-PAN Neck 网络
-
2.2 全新的锚点辅助训练(Anchor-Aided Training)策略
-
2.3 无痛涨点的 DLD 解耦定位蒸馏策略
-
-
3. 总结
1. 概述
1 月 6 日,美团视觉智能部发布了 YOLOv6 3.0 版本,再一次将目标检测的综合性能推向新高。本次更新除了对 YOLOv6-N/S/M/L 模型进行全系列升级之外,还推出了大分辨率 P6 模型。其中,YOLOv6-L6 检测精度达到 57.2% AP,在 T4 卡上推理速度可达 29 FPS,超越 YOLOv7-E6E,取得当前实时目标检测榜单 SOTA。
技术报告:YOLOv6 v3.0: A Full-Scale Reloading
YOLOv6 Github 传送门:https://github.com/meituan/YOLOv6,欢迎 Star 收藏,随时取用。
注:YOLOv6 系列模型均在训练 300epoch 且不使用预训练模型或额外检测数据集下获得,“‡” 表示采用了自蒸馏算法,“*” 表示从官方代码库对发布模型进行重新测评的指标。以上速度指标均在 T4 TRT7.2 环境下测试。
2. 关键技术介绍
本次更新主要在 Neck 网络设计、训练和蒸馏策略等方面进行了创新和优化:
-
设计了表征能力更强的可重参化双向融合 PAN(
RepBi-PAN
)Neck 网络;
-
提出了全新的锚点辅助训练(
Anchor-Aided Training
)策略;
-
提出了解耦定位蒸馏(
Decoupled Location Distillation
)策略以提升小模型的性能。
2.1 表征能力更强的 RepBi-PAN Neck 网络
有效的多尺度特征融合网络对目标检测的效果尤为关键。特征金字塔网络 (FPN)通过自上而下的路径来融合来自骨干网络不同 Stage 的输出特征以弥补网络学习过程中目标位置信息的损失。鉴于单向信息流传输的局限性,PANet 在 FPN 之上添加了一个额外的自底向上路径。BiFPN 为不同的输入特征引入了可学习的权重,并简化了 PAN 以实现更好的性能和更高的效率。PRB-FPN 通过具有双向融合的并行残差 FPN 结构来保留高质量的特征,以进行准确定位。
受到上述工作的启发,我们提出了一个表征能力更强的可重参化双向融合 PAN(RepBi-PAN)Neck 网络。一般而言,骨干网络浅层特征分辨率高,具有丰富的空间信息,有利于目标检测中的定位任务。为了聚合浅层特征,常见的做法是在 FPN 中增加 P2 融合层以及一个额外的检测头,但这往往会带来较大的计算成本。
为了实现更好的精度和时延权衡,我们设计了一个双向联结(Birectional Concatenate, BiC)模块,在自上而下的传输路径中引入自底向上的信息流,使得浅层特征能以更高效的方式参与多尺度特征融合,进一步增强融合特征的表达能力。此模块能够帮助保留更准确的定位信号,这对于小物体的定位具有重要意义。
此外,我们对上一版本的 SimSPPF 模块进行了特征增强优化,以丰富特征图的表示能力。我们发现 YOLOv7 使用的 SPPCSPC 模块能够提升检测精度,但对网络推理速度的影响较大。于是我们对其进行了简化设计,在检测精度影响不大的情况下,大大提升了推理效率。同时,我们引入了可重参数化思想并对 Neck 网络的通道宽度和深度进行了相应的调整。最终 RepBi-PAN 网络结构如下图 2 所示:
从表2可以看到,在 YOLOv6-S/L 模型上,仅在 PAN 网络自上而下的传输路径引入 BiC 模块后,对推理速度影响保持在 4% 的情况下,检测精度分别提升 0.6% 和 0.4% AP。当我们尝试额外地在自底向上的信息流中将常规联结替换成 BiC 模块时,反而没有获得进一步正向的增益,因此我们仅在自上而下的路径中应用 BiC 模块。与此同时,我们还注意到,BiC 模块能够为小目标的检测精度带来 1.8% AP 的提升。
在表 3 中,我们对不同的 SPP 模块对模型精度和速度影响做了实验对比,其中包括经过我们简化设计的 SPPF、SPPCSPC 和 CSPSPPF 模块。除此之外,我们还尝试了在骨干网络 C3、C4 和 C5 的输出特征后分别采用了 SimSPPF 模块以加强特征的聚合表达,在表中用 SimSPPF * 3表示。从实验结果来看,重复使用 SimSPPF 模块虽然增加了计算量,但并没有带来检测精度的进一步提升。
经简化设计的 SPPCSPC 模块对比 SimSPPF 模块 在 YOLOv6-N/S 模型上分别提升了 1.6% 和 0.3% AP,但对推理速度 FPS 降低约10%。而当我们将 SimSPPF 模块替换为优化后的 SimCSPSPPF 模块后,在 YOLOv6-N/S/M 模型上分别取得了1.1%/0.4%/0.1% 的精度增益,同时推理速度对比 SimSPPCSPC 模块有较大的提升。因此,为了更好的精度-效率权衡,在 YOLOv6-N/S 上采用 SimCSPSPPF 模块,而在 YOLOv6-M/L 上采用 SimSPPF 模块。
2.2 全新的锚点辅助训练(Anchor-Aided Training)策略
基于深度学习的目标检测技术从学习范式上主要可分为 Anchor-based 和 Anchor-free 两大类,这两类方法针对不同尺度的目标检测上分别存在不同的优势。我们使用 YOLOv6-N 作为基线,对 Anchor-based 和 Anchor-free 范式的异同点进行了相关的实验和分析。
从表 4 中可以看出,当 YOLOv6-N 分别采用 Anchor-based 和 Anchor-free 训练范式时,模型的整体 mAP 几乎接近,但采用 Anchor-based 的模型在小、中、大目标上的 AP 指标会更高。从以上的实验可以得出结论:相比于 Anchor-free 范式,基于 Anchor-based 的模型存在额外的性能增益。
同时我们发现,YOLOv6 使用 TAL 进行标签分配时,其模型精度的稳定性与是否采用 ATSS 预热有较大关系。当不使用 ATSS 预热时,对同样参数配置的 YOLOv6-N 进行多次训练,模型精度最高可达35.9% mAP,最低至 35.3% mAP,相同模型会有 0.6% mAP 的差异。但当使用 ATSS 预热时,模型精度最高却只能到达 35.7% mAP。从实验结果可以分析得出,ATSS 的预热过程利用了 Anchor-based 的预设信息,进而达到稳定模型训练的目的,但也会在一定程度上限制网络的峰值能力,因此并不是一种最优的选择。
受到上述工作的启发,我们提出了基于锚点辅助训练(Anchor-Aided Training,AAT)策略。在网络训练过程中,同时融合 Anchor-based 和 Anchor-free 的两种训练范式,并对全阶段网络进行映射及优化,最终实现了Anchor 的统一,充分发挥了结合不同 Anchor 网络的各自优势,从而进一步提升了模型检测精度。具体来说:
一方面,我们会在网络的分类头和回归头上分别添加 Anchor-based 辅助分支,在训练阶段,该分支与 Anchor-free 分支分别进行独立的 Loss 计算,之后会对 Loss 进行相加,各自反向传播进行网络的优化。通过 Anchor-based 辅助分支,为网络训练引入额外的内嵌指导信息,并与 Anchor-free 分支的信息进行整合,从而达到对结合不同 Anchor 网络的全方位融合的目的,进一步挖掘网络自身的潜力,充分发挥其效能。
另一方面,在网络标签匹配的过程中引入了同特征点密集采样的机制。通过扩大每次样本匹配过程中所选取候选框的范围,增加候选框中正样本的数量,并且对同一特征点重复投放采样点,进一步提升在训练过程中候选框的质量。与此同时,在网络的每一层中还会搭配原始的 Anchor-free 分支,进一步提升候选框的多样性。
除此之外,我们还提出灵活配置的训练策略,仅在训练过程中引入额外的辅助分支,在测试过程中不予使用。最终在不增加推理时间的情况下,提升网络精度,无痛涨点。最终 AAT 策略的示意图如下图 3 所示:
采用 AAT 训练策略的消融实验结果如下表 5 所示。我们在 YOLOv6 的各尺寸模型上进行了实验,其中 YOLOv6-S 模型采用 AAT 策略后有 0.3% 的精度增益,而在 YOLOv6-M/L 模型上分别带来了0.5% 的精度增益。值得注意的是,YOLOv6-N/S/M 在小目标检测的精度指标得到了显着增强。
2.3 无痛涨点的 DLD 解耦定位蒸馏策略
在目标检测的蒸馏任务中,LD 通过引入 DFL 分支,从而达到了在网络中对定位信息蒸馏的目的,使分类和定位信息得以同步回传,弥补了 Logit Mimicking 方法无法使用定位蒸馏信息的不足。但是,DFL 分支的添加,对于小模型速度的影响是很明显的。添加了 DFL 分支后,YOLOv6-N 的速度下降了 16.7%,YOLOv6-S 的速度下降了 5.2%。而在实际的工业应用当中,对于小模型速度的要求往往很高。因此,目前的蒸馏策略并不适合于工业落地。
针对这个问题,我们提出了基于解耦检测任务和蒸馏任务的 DLD(Decoupled Location Distillation)算法。DLD 算法会在网络每一层的回归头上分别添加了额外的强化回归分支,在训练阶段,该分支同样会参与 IoU 损失的计算,并将其累加到最终的 Loss 中。
通过增加的额外的强化回归分支,可以对网络添加更多的额外约束,从而对网络进行更全面细致的优化。并且,DLD算法在对强化回归分支进行训练时,引入了分支蒸馏学习策略。分支蒸馏学习策略会仅使用 DFL 分支参与网络标签分配的过程,并将标签分配的结果投入到强化回归分支进行引导学习,从而参与强化回归分支的损失函数计算和反向传播优化。
一方面,DFL 分支的精度更高,在整个训练周期可以起到对强化分支蒸馏的作用,进一步提升强化分支的精度。
另一方面,通过分支蒸馏进行的引导学习,可以进一步将 DFL 分支的效果传递给强化回归分支,为之后的灵活配置起到铺垫作用。
除此之外,DLD 算法同样搭配了灵活配置的训练策略,在训练过程中采用双回归分支结构,对网络进行更全面细致的优化,进一步对齐双分支的回归能力。在测试过程中,移除掉冗余的 DFL 分支,仅保留强化回归分支,在简化网络的同时保持网络精度,最终实现了对目标检测算法可无痛涨点的 DLD 蒸馏算法。DLD 的消融实验结果如下表6所示:
在表 6 中,我们在 YOLOv6-S 模型上分别对比了训练双倍轮数和采用 DLD 策略对模型性能的影响,从实验数据可以看出,当训练 600epoch时,YOLOv6-S 仅能达到 44.6% mAP。而采用 DLD 蒸馏策略后,YOLOv6-S 检测精度比使用双倍轮数训练的高 0.5%,最终达到45.1%。由此可得,DLD 蒸馏策略可在不影响推理效率的前提下,提升小模型的检测精度,实现无痛涨点。
3. 总结
本文对 YOLOv6 3.0 版本的技术创新和优化进行了详细解析,希望能帮助用户理解相关算法设计的思路以及具体实现。
未来,我们还会持续完善 YOLOv6 社区生态,同时也欢迎社区同学加入我们,共同建设一个适合工业界应用的更快更准的目标检测框架。
再次附上 YOLOv6 Github 的传送门:https://github.com/meituan/YOLOv6 ,感谢您的 Star 收藏。
4. 本文作者
-
楚怡、奕非、露露等,均来自美团视觉智能部。
---------- END ----------
推荐阅读
| 美团BERT的探索和实践
| Transformer 在美团搜索排序中的实践
| 常识性概念图谱建设以及在美团场景中的应用
相关文章:

SOTA!目标检测开源框架YOLOv6 3.0版本来啦
近日,美团视觉智能部发布了 YOLOv6 3.0 版本,再一次将目标检测的综合性能推向新高。YOLOv6-L6 检测精度和速度超越 YOLOv7-E6E,取得当前实时目标检测榜单 SOTA。本文主要介绍了 YOLOv6 3.0 版本中引入的技术创新和优化,希望能为从…...

svn使用
一、SVN概述 1.1为什么需要SVN版本控制软件 1.2解决之道 SCM:软件配置管理 所谓的软件配置管理实际就是对软件源代码进行控制与管理 CVS:元老级产品 VSS:入门级产品 ClearCase:IBM公司提供技术支持,中坚级产品 1.…...
LeetCode 1487. Making File Names Unique【字符串,哈希表】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

Java——电话号码的字母组合
题目链接 leetcode在线oj题——电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 题目示例…...

LDR6028市面上最具有性价比的Type-C OTG音频协议方案
目前市面上的大部分手机都取消了3.5mm音频耳机接口,仅保留一个Type-C接口,但是追求音质和零延迟的用户仍然会选择3.5mm有线耳机,因为在玩手机游戏的时候,音画不同步真的很影响游戏体验,所以Type-C转3.5mm接口线应运而生…...
SpringMVC-0228
一、SpringMVC简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据补充:框架其实就是配置文件jar包JavaBean分为两类ÿ…...

【测试岗】那个准点下班的人,比我先升职了...
前言 陈双喜最近心态很崩。和他同期一道进公司的陈琪又升了一级,可是明明大家在进公司时,陈琪不论是学历还是工作经验,样样都不如自己,眼下不过短短的两年时间便一跃在自己的职级之上,这着实让他有几分不甘心。 程双…...

【C++】适配器模式 -- stack/queue/dqueue
一、适配器模式 设计模式 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结;Java 语言非常关注设计模式,而 C 并没有太关注,但是一些常见的设计模式我们还是要学习。 迭代器模式 其实我们在前面学习 strin…...
sql server 分页查询
sql server 分页查询[toc]前言SQL server 2012版本。下面都用pageIndex表示页数,pageSize表示一页包含的记录。并且下面涉及到具体例子的,设定查询第2页,每页含10条记录。首先说一下SQL server的分页与MySQL的分页的不同,mysql的分…...
RV1126新增驱动IMX415 SENSOR,实现v4l2抓图
RV1126新增驱动IMX415 SENSOR,实现v4l2抓图。1:内核dts修改&csi_dphy0 {status "okay";ports {#address-cells <1>;#size-cells <0>;port0 {reg <0>;#address-cells <1>;#size-cells <0>;mipi_in_uca…...

Hive 数据倾斜
数据倾斜,即单个节点任务所处理的数据量远大于同类型任务所处理的数据量,导致该节点成为整个作业的瓶颈,这是分布式系统不可能避免的问题。从本质来说,导致数据倾斜有两种原因,一是任务读取大文件,二是任务…...

2月刚上岸字节跳动测试岗面经
这时候发应该还不算太晚,金三银四找工作的小伙伴需要的可以看看。 一、测试工程师的工作是什么? 测试工程师简单点说就是找bug,然后反馈给开发人员,不要小看这个工作。 首先很明显的bug开发人员有时候自己就能找到,测…...

图解KMP算法
子串的定位操作通常称作串的模式匹配。你可以理解为在一篇英语文章中查找某个单词是否存在,或者说在一个主串中寻找某子串是否存在。朴素的模式匹配算法假设我们要从下面的主串S "goodgoogle" 中,找到T "google" 这个子串的位置。…...

Java Map和Set
目录1. 二叉排序树(二叉搜索树)1.1 二叉搜索树的查找1.2 二叉搜索树的插入1.3 二叉搜索树的删除(7种情况)1.4 二叉搜索树和TreeMap、TreeSet的关系2. Map和Set的区别与联系2.1 从接口框架的角度分析2.2 从存储的模型角度分析【2种模型】3. 关于Map3.1 Ma…...

【C/C++ 数据结构】-八大排序之 冒泡排序快速排序
作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【C/C数据结构与算法】 分享:那我便像你一样,永远躲在水面之下,面具之后! ——《画江湖之不良人》 主要内容:八大排序选…...

苹果ipa软件下载网站和软件的汇总
随着时间的流逝,做苹果版软件安装包下载网站和软件的渐渐多了起来。 当然,已经关站、停运、下架、倒闭的苹果软件下载网站和软件我就不说了,也不必多说那些关站停运下架倒闭的网站和软件了。 下面我统计介绍的就是苹果软件安装包下载网站和软…...

深度学习-【语义分割】学习笔记4 膨胀卷积(Dilated convolution)
文章目录膨胀卷积为什么需要膨胀卷积gridding effect连续使用三次膨胀卷积——1连续使用三次膨胀卷积——2连续使用三次膨胀卷积——3Understanding Convolution for Semantic Segmentation膨胀卷积 膨胀卷积,又叫空洞卷积。 左边是普通卷积,右边是膨胀…...

【10】SCI易中期刊推荐——工程技术-计算机:人工智能(中科院2区)
🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…...

模电计算反馈系数,有时候转化为计算电阻分压的问题
模电计算反馈系数,有时候转化为计算电阻分压的问题 如果是电压反馈,F的除数是Uo 如果是电流反馈,F的除数是Io 串联反馈,F的分子是Uf 并联反馈,F的分子是If 点个赞呗,大家一起加油学习!...

专治Java底子差,不要再认为泛型就是一对尖括号了
文章目录一、泛型1.1 泛型概述1.2 集合泛型的使用1.2.1 未使用泛型1.2.2 使用泛型1.3 泛型类1.3.1 泛型类的使用1.2.2 泛型类的继承1.4 泛型方法1.5 泛型通配符1.5.1 通配符的使用1)参数列表带有泛型2)泛型通配符1.5.2 泛型上下边界1.6 泛型的擦除1.6.1 …...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...