YOLOv6 v3.0 | 重磅升级!性能超越V8!
https://arxiv.org/pdf/2301.05586.pdfhttps://github.com/meituan/YOLOv6
YOLOv6 v3.0的主要贡献简述如下:
- 对检测器的Neck部件进行了翻新:引入BiC(Bi-directional Concatenation)提供更精确的定位信息;将SPPF简化为SimCSPSPPF,牺牲较少的速度提升更多的性能。
- 提出一种AAT(Anchor-aided training)策略,在不影响推理效率的情况下同时受益于Anchor-basedAnchor-free设计理念。
- 对YOLOv6的Backbone与Neck进行加深,在更高分辨率输入下达成新的SOTA性能。
- 提出一种新的自蒸馏策略提升YOLOv6小模型的性能,训练阶段采用更大的DFL作为增强版辅助回归分支。
本文方案
Network Design
在网络架构方面,本文主要从Neck与SPP两个维度进行改进:
- 在Neck方面,本文设计了一种增强的PAN模块,它次用BiC模块对三个近邻层特征进行集成(可参考上图b),额外引入了
。这种处理截止可以保留更精确的定位信息,对于小目标定位非常重要。
- 在SPP方面,本文对YOLOv5 v6.1版本的SPPF进行了简化,得到了所谓的SimCSPSPPF(可参考上图c)。
Anchor-Aided Training
YOLOv6是一种追求更高推理速度的Anchor-free检测器。然而,作者发现:在同等配置(YOLOv6-N)下,相比Anchor-free方案,Anchor-based方案可以带来额外的性能增益,见上表。
有鉴于此,作者提出了AAT策略(即Anchor辅助训练,见上图),它引入了一个Anchor-based辅助分支以组合两种方案的优势。通过这种训练策略,源自的辅助分支的引导信息可以被有效的嵌入到Anchor-free分支。在推理阶段,辅助分支将被移除掉。也就是说,AAT策略属于"赠品",加量不加价的那种。
Self-distillation
在YOLOv6早期版本中,自蒸馏仅在大模型中得到应用,采用的普通KL散度蒸馏。知识蒸馏损失与整体损失定义如下:
超参数
用于对两个损失进行平衡。在训练的早期,源自老师模型的软标签更易于学习;而在训练的后期,学生模型从硬标签中受益更多。因此,作者设计了一种cosine weight decay调整机制:
由于DFL会对回归分支引入额外的参数,极大程度影响小模型的推理速度。因此,作者针对小模型设计了一种DLD(Decoupled Localization Distillation)以提升性能且不影响推理速度。具体来说,在小模型中插入一个增强版回归分支作为辅助。在自蒸馏阶段,小模型受普通回归分支与增强回归分支加持,老师模型近使用辅助分支。需要注意:普通分支仅采用硬标签进行训练,而辅助分支则用硬标签与源自老师模型的软标签进行训练。完成蒸馏后,仅普通分支保留,辅助分支被移除。这种训练策略又是一种加量不加价的"赠品"。
Experiments
上表给出了不同方案的性能对比,可以看到:
- 相比YOLOv5-N、YOLOv7-Tiny,YOLOv6-N指标分别提升9.5%、4.2%,同时具有最佳速度。
- 相比YOLOX-S、PPYOLOE-S、YOLOv6-S指标分别提升3.5%、0.9%且速度更快;
- YOLOv6-M比YOLOv5-M指标高4.6%、速度相当,比YOLOX-M、PPYOLOE-M指标高3.1%、1.0%且速度更快;
- 除了比YOLOv5-L更高更快外,YOLOv6-L比YOLOX-L、PPYOLOE-L分别高3.1%、1.4%且速度相当。
- 相比YOLOv8,YOLOv6在所有尺寸下取得了相当的精度,同时具有更优的吞吐性能。
除了上述常规模型尺寸外,作者还进一步提升了输入分辨率并添加了C6特征,与YOLOv5等方案对比:
- 相比YOLOv5系列(即YOLOv5-N6/S6/M6/L6/X6),YOLOv6具有更高的AP、相当的速度;
- 相比YOLOv7-E6E,YOLOv6-L6指标高出0.4%,推理速度快36%。
更多消融实验,请移步原文。这里略过不提。
相关文章
- 【说站】python插入排序的性能问题
- 性能再升级,XMeter Cloud 专业版正式上线
- 7 Papers & Radios | 中国科学家二氧化碳合成淀粉;MIT研究算法对性能改进影响
- 腾讯云数据库TDSQL PG版重磅升级:查询性能提升百倍 | Q推荐
- Locust学习笔记1——性能测试工具选择
- 性能优化Linux内存优化:最大化性能的技巧(linux内存个数)
- Linux配置BCache缓存系统提升性能(linuxbcache)
- MySQL 5.5.18:升级你的数据库性能(mysql5.5.18)
- Yum升级MySQL,提升数据库性能(yum升级mysql)
- 比较Redis切片与非切片性能(redis切片非切片)
- 深入了解Linux系统块大小,提高性能表现(linux系统块大小)
- 腾讯移动平台性能测试工具PerfDog升级:9月1日后开始收费
- 提升SQL Server性能:从升级中获益(升级 sqlserver)
- 升级SQL Server容量升级:提高数据性能与可用性(sqlserver的容量)
- Linux 系统下PHP升级提升性能(linux 升级 php)
- 升级MSSQL版本号升级,提升数据库性能(mssql 版本号)
- 管理PostgreSQL:优化内存管理提升数据库性能(postgresql内存)
- AMP MySQL升级提升数据库性能的必要之举(amp mysql升级)
- DBUA升级Oracle确保稳健性,提升运行性能(dbua升级oracle)
- 1024倍性能升级MySQL分片技术新突破(1024分片 mysql)
- 重要升级极大提升Redis性能,新版本号上线(升级redis 版本号)
- 提升服务器性能升级Redis最新版本(升级redis 版本号)
- Redis版本更新升级,提升你们项目性能(你们项目redis版本)
- 尽Redis开机启动实现最佳性能(如何让redis开机穷)
- 给Redis设立写读状态利用Redis实现性能升级(redis设置读写状态)
- 它的升级有点深入,但在性能安全和易用性方面,Oracle 10g有很多优势(oracle10g有点)