比YOLOv8还要强的YOLOv6 v3.0

news/2025/1/7 19:27:42/

请添加图片描述
论文地址:https://arxiv.org/pdf/2301.05586.pdf
开源地址:https://github.com/meituan/YOLOv6


请添加图片描述


YOLOv6 v3.0的主要贡献简述如下

  1. 对检测器的Neck部件进行了翻新,引入BiC(Bi-directional Concatenation)提供更精确的定位信息;将SPPF简化为SimCSPSPPF,牺牲较少的速度提升更多的性能
  2. 提出一种AAT(Anchor-aided training)策略,在不影响推理效率的情况下同时受益于Anchor-basedAnchor-free设计理念
  3. 对YOLOv6的Backbone与Neck进行加深,在更高分辨率输入下达成新的SOTA性能
  4. 提出一种新的自蒸馏策略提升YOLOv6小模型的性能,训练阶段采用更大的DFL作为增强版辅助回归分支

实现思路

请添加图片描述


Network Design

在网络架构方面,本文主要从Neck与SPP两个维度进行改进

  1. 在Neck方面,本文设计了一种增强的PAN模块,它次用BiC模块对三个近邻层特征进行集成, 这种处理截止可以保留更精确的定位信息,对于小目标定位非常重要
  2. 在SPP方面,本文对YOLOv5 v6.1版本的SPPF进行了简化,得到了所谓的SimCSPSPPF

Anchor-Aided Training

请添加图片描述
YOLOv6是一种追求更高推理速度的Anchor-free检测器

然而,作者发现,在同等配置(YOLOv6-N)下

相比Anchor-free方案,Anchor-based方案可以带来额外的性能增益,见上表

请添加图片描述
有鉴于此,作者提出了AAT策略

它引入了一个Anchor-based辅助分支以组合两种方案的优势

通过这种训练策略,源自的辅助分支的引导信息可以被有效的嵌入到Anchor-free分支

在推理阶段,辅助分支将被移除掉


Self-distillation

在YOLOv6早期版本中,自蒸馏仅在大模型中得到应用,采用的普通KL散度蒸馏

知识蒸馏损失与整体损失定义如下

在这里插入图片描述

超参数α用于对两个损失进行平衡

在训练的早期,源自老师模型的软标签更易于学习

而在训练的后期,学生模型从硬标签中受益更多

因此,作者设计了一种cosine weight decay调整机制

在这里插入图片描述
由于DFL会对回归分支引入额外的参数,极大程度影响小模型的推理速度

因此,作者针对小模型设计了一种DLD(Decoupled Localization Distillation)以提升性能且不影响推理速度

具体来说,在小模型中插入一个增强版回归分支作为辅助

在自蒸馏阶段,小模型受普通回归分支与增强回归分支加持,老师模型近使用辅助分支

需要注意:普通分支仅采用硬标签进行训练,而辅助分支则用硬标签与源自老师模型的软标签进行训练

完成蒸馏后,仅普通分支保留,辅助分支被移除

这种训练策略又是一种加量不加价的"赠品"


实验

请添加图片描述
上表给出了不同方案的性能对比,可以看到

相比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%

参考文献

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

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


http://www.ppmy.cn/news/13241.html

相关文章

【JavaGuide面试总结】MySQL篇·下

【JavaGuide面试总结】MySQL篇下1.介绍一下索引吧2.索引的优缺点3.讲一下索引的底层数据结构Hash 表B 树& B树4.说说MyISAM 引擎和 InnoDB 引擎 BTree 实现机制的不同5.索引类型主键索引(Primary Key)二级索引(辅助索引)6.简单说说聚簇索引与非聚簇索引聚簇索引&#xff08…

超级详细的几道python题(附答案)含解析、建议收藏

名字:阿玥的小东东 学习:python、正在学习c 主页:阿玥的小东东 目录 判断字符串 a “welcome to my world” 是否包含单词 b “world”,包含返回 True,不包含返回 False。 从 0 开始计数,输出指定字符串…

Python和MySQL对比(5):用Pandas实现MySQL窗口函数的效果

文章目录一、前言二、语法对比数据表row_number()lead()/lag()rank()/dense_rank()first_value()count()/sum()三、小结一、前言 环境: windows11 64位 Python3.9 MySQL8 pandas1.4.2 本文主要介绍 MySQL 中的窗口函数row_number()、lead()/lag()、rank()/dense_ran…

vue-循环引用感想

vue-循环引用感想开场-什么是循环引用探讨-怎么用后话如果我们要在主组件中传方法到子组件呢普通的porps传参依赖注入开场-什么是循环引用 刚开始看着这个官方文档上的循环引用十分的不解,意思是什么呢?看着官网的意思,大概举了个文件管理器…

算力服务亟待破局,超聚变向新而行

“超聚变已独立活下来。”超聚变产品线总裁范瑞琦在2023新品发布会上透露。自从一年多前从华为体系独立,超聚变公司的未来就颇受业界关注。一方面,算力产业蒸蒸日上,各方尤为关注超聚变的产业定位以及发展算力产业的着力点;另一方…

【C语言课程设计】通讯录(2.0版本)

前言 在前面的博客中,我们已经了解了通讯录的基本写法。当然那个通讯录是不够完善的。我们本小节对前面的通讯录做一次小升级,添加动态增容模块与利用枚举来优化选择语句 【C语言课程设计】通讯录(1.0版本)_青色_忘川的博客-CSDN博…

C生万物 | C语言文件操作指南汇总【内附文件外排序源码】

👑作者主页:Fire_Cloud_1 🏠学习社区:烈火神盾 🔗专栏链接:万物之源——C 文章目录一、为什么使用文件?二、什么是文件?1、程序文件2、数据文件3、文件名三、文件的打开和关闭1、文件…

SpringBoot集成Elasticsearch7.4 实战(二)

1、前言本篇文章主要讲的是:在Springboot环境下,利用JAVA环境操作索引,集成SpringBoot等相关知识2. SpringBoot集成开发工具,这里选择的是IDEA 2019.2,构建Maven工程等一堆通用操作,不清楚的自行百度。2.1. POM配置我这边选择 ela…