文章目录
- 前言
- 一、YOLOv6的网络结构和流程
- 二、YOLOv6的创新点
- 总结
前言
YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。论文题目是《YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications》。
和YOLOv4、YOLOv5等不同的是,YOLOv6对网络结构的改动较大。
除了模型的结构之外,YOLOv6的数据增强和YOLOv5的保持一致;而标签分配上则是和YOLOX一样,采用了SimOTA;并且引入了新的边框回归损失:SIOU。
提示:以下是本篇文章正文内容,下面内容可供参考
一、YOLOv6的网络结构和流程
YOLOv6给出了5个版本:YOLOv6-N
、YOLOv6-T
、YOLOv6-S
、YOLOv6-M
、YOLOv6-L
YOLOv6的网络结构图如下,可以看出改进在于:
- Backbone:基于RepVGG设计了一个高效的Backbone–EfficientRep。相比于 YOLOv5 采用的 CSP-Backbone,该 Backbone 能够高效利用硬件(如 GPU)算力的同时,还具有较强的表征能力
ps:
- YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet搭建,采用了多分支的方式和残差结构。对于 GPU 等硬件来说,这种结构会一定程度上增加延时,同时减小内存带宽利用率。
- EfficientRep基于RepVGG Style 结构,这种结构是一种在训练时具有多分支拓扑,而在实际部署时可以等效融合为单个 3x3 卷积的一种可重参数化的结构。通过融合成的 3x3 卷积结构,可以有效利用计算密集型硬件计算能力(比如 GPU),同时也可获得 GPU/CPU 上已经高度优化的 NVIDIA cuDNN 和 Intel MKL 编译框架的帮助。
- 简而言之,就是仅在训练时使用多路径拓扑,在推理时使用单路径拓扑
- Neck:基于RepBlock设计了Rep-PAN,实质上是将PAN中的CSP-Block替换为RepBlock
ps:用 RepBlock 替换了 YOLOv5 中使用的 CSP-Block,同时对整体 Neck 中的算子进行了调整,目的是在硬件上达到高效推理的同时,保持较好的多尺度特征融合能力
- 设计了更加高效的Decoupled head,YOLOX的解耦头中,新增了两个额外的3x3卷积,这样也会一定程度增加运算的复杂度。YOLOv6基于Hybrid Channels的策略重新设计出了一个更高效的解耦头结构(即将中间的3×3卷积层的数量减少到只有一个。Head的宽度由backbone和neck的宽度乘数共同缩放)。在不怎么改变精度的情况下降低延时,达到了速度与精度的均衡。
二、YOLOv6的创新点
- 结合Rep算子改进了Backbone和Neck,使其更适于GPU
- 简化了Decoupled head,在保证精度的情况下降低延时
- 结合了一些先进的tricks:Anchor-free、SimOTA 、SIoU loss
ps:关于IoU loss的进化史可以参考IoU Loss综述,SIoU重新考虑关于距离和形状的考虑,并加入了Angle和IoU成本
总结
YOLOv6达成新SOTA,在MS COCO数据集test-dev 2017上进行评估,YOLOv6-L在NVIDIA Tesla T4上实现了52.5%的AP和70%的AP50 ,速度约为50 FPS