YoloV6关键技术

YOLOv6 主要在 BackBone、Neck、Head 以及训练策略等方面进行了诸多的改进:

1. Hardware-friendly 的骨干网络设计

YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet搭建,采用了多分支的方式和残差结构,这种结构会一定程度上增加延时,同时减小内存带宽利用率。YOLOv6在backbone上就引入了RepVGG的结构,并且基于硬件又进行了改良,提出了效率更高的EfficientRep。

RepVGG

RepVGG Block

问题:
  1. 为什么训练的时候使用多分支

能够增加模型的表征能力,从上表中可以看出无论是增加Identity branch还是1*1的branch,都可以提高模型的准确度

  1. 为什么推理的时候使用单分支
  • 使用单分支更快,多分支的每个分支计算量可能不同,但是需要将每个分支的结果相加,导致并行度下降,降低速度,另外多分支调用的算子更多,更耗时
  • 更省内存
  • 更加灵活
结构重参数化

将多分支结构转换为单分支结构,即将RepVGG block转化为一个3*3的卷积

  • 11卷积转化为33卷积,BN转化为3*3卷积

11转化为33只需要将1*1的卷积核padding1

BN转化只需要构造一个卷积似的输入输出相等即可,即乘以一个单位矩阵

假设输入channel为2输出channel也为2,则需要构造两个332的卷积核,

  • 卷积层和BN层融合

对于卷积层: y i = w ⋅ x i + b y_i=w \cdot x_i+b yi​=w⋅xi​+b
对于BN层: y i = γ x i ^ + β y_i=\gamma \hat{x_i}+\beta yi​=γxi​^​+β,其中 x i ^ = x i − μ i σ i 2 + ϵ \hat{x_i}=\frac{x_i-\mu_i}{\sqrt{\sigma_i^2+\epsilon}} xi​^​=σi2​+ϵ ​xi​−μi​​, μ i \mu_i μi​为均值, σ i \sigma_i σi​为标准差
将卷积公式带入BN公式得到: B N γ , β ( x ) = γ w ⋅ x + b − μ i σ i 2 + ϵ + β = γ w σ i 2 + ϵ ⋅ x + γ σ i 2 + ϵ ⋅ ( b − μ i ) + β BN_{\gamma ,\beta}(x)=\gamma \frac{w\cdot x+b-\mu_i}{\sqrt{\sigma_i^2+\epsilon}}+\beta= \frac{\gamma w}{\sqrt{\sigma_i^2+\epsilon}}\cdot x+\frac{\gamma}{\sqrt{\sigma_i^2+\epsilon}}\cdot(b-\mu_i)+\beta BNγ,β​(x)=γσi2​+ϵ ​w⋅x+b−μi​​+β=σi2​+ϵ ​γw​⋅x+σi2​+ϵ ​γ​⋅(b−μi​)+β
令 w ^ = γ w σ i 2 + ϵ \hat{w}=\frac{\gamma w}{\sqrt{\sigma_i^2+\epsilon}} w^=σi2​+ϵ ​γw​, b ^ = γ σ i 2 + ϵ ⋅ ( b − μ i ) + β \hat{b}=\frac{\gamma}{\sqrt{\sigma_i^2+\epsilon}}\cdot(b-\mu_i)+\beta b^=σi2​+ϵ ​γ​⋅(b−μi​)+β,则有
B N γ , β ( x ) = w ^ ⋅ x + b ^ BN_{\gamma ,\beta}(x)=\hat{w}\cdot x+\hat{b} BNγ,β​(x)=w^⋅x+b^
卷积层和BN层融合之后就相当于一个新的卷积层

  • 多分支融合

将卷积层和BN层融合后,得到3个3*3的卷积层,最后直接将这三个卷积层的参数相加融合为一个卷积层

EfficientRep Backbone

网络结构

将YOLOv5 Backbone 中的 CBL模块替换成了 RepConv模块。同时,将原始的 CSP-Block 都重新设计为 RepBlock,其中 RepBlock 的第一个 RepConv 会做 channel 维度的变换和对齐。另外,还将原始的 SPPF 优化设计为更加高效的 SimSPPF。

yolov5网络结构图

SPP、SPPF、SimSPPF的区别

SPP结构:又称空间金字塔池化,能够将能将任意大小的特征图转换成固定大小的特征向量

  • SPP

  • SPPF

  • SimSPPF

Rep-PAN

Rep-PAN 基于 PAN拓扑方式,用 RepBlock 替换了 YOLOv5 中使用的 CSP-Block,同时对整体 Neck 中的算子进行了调整,目的是在硬件上达到高效推理的同时,保持较好的多尺度特征融合能力

2. 更简洁高效的 Decoupled Head

在 YOLOv6 中,采用了解耦检测头(Decoupled Head)结构,并对其进行了精简设计。原始 YOLOv5 的检测头是通过分类和回归分支融合共享的方式来实现的,而 YOLOX 的检测头则是将分类和回归分支进行解耦,同时新增了两个额外的 3x3 的卷积层,虽然提升了检测精度,但一定程度上增加了网络延时。
YOLOv6采用 Hybrid Channels 策略重新设计了一个更高效的解耦头结构,在维持精度的同时降低了延时,缓解了解耦头中 3x3 卷积带来的额外延时开销。通过在 nano 尺寸模型上进行消融实验,对比相同通道数的解耦头结构,精度提升 0.2% AP 的同时,速度提升6.8%。

3. 更有效的训练策略

  • Anchor-free 无锚范式

YOLOv6 采用了更简洁的 Anchor-free 检测方法。由于 Anchor-based检测器需要在训练之前进行聚类分析以确定最佳 Anchor 集合,这会一定程度提高检测器的复杂度;同时,在一些边缘端的应用中,需要在硬件之间搬运大量检测结果的步骤,也会带来额外的延时。而 Anchor-free 无锚范式因其泛化能力强,解码逻辑更简单,在近几年中应用比较广泛。经过对 Anchor-free 的实验调研,我们发现,相较于Anchor-based 检测器的复杂度而带来的额外延时,Anchor-free 检测器在速度上有51%的提升。

  • SimOTA 标签分配策略

为了获得更多高质量的正样本,YOLOv6 引入了 SimOTA [4]算法动态分配正样本,进一步提高检测精度。YOLOv5 的标签分配策略是基于 Shape 匹配,并通过跨网格匹配策略增加正样本数量,从而使得网络快速收敛,但是该方法属于静态分配方法,并不会随着网络训练的过程而调整。
近年来,也出现不少基于动态标签分配的方法,此类方法会根据训练过程中的网络输出来分配正样本,从而可以产生更多高质量的正样本,继而又促进网络的正向优化。例如,OTA[7] 通过将样本匹配建模成最佳传输问题,求得全局信息下的最佳样本匹配策略以提升精度,但 OTA 由于使用了Sinkhorn-Knopp 算法导致训练时间加长,而 SimOTA[4]算法使用 Top-K 近似策略来得到样本最佳匹配,大大加快了训练速度。故 YOLOv6 采用了SimOTA 动态分配策略,并结合无锚范式,在 nano 尺寸模型上平均检测精度提升 1.3% AP。

  • SIoU 边界框回归损失

为了进一步提升回归精度,YOLOv6 采用了 SIoU[9] 边界框回归损失函数来监督网络的学习。目标检测网络的训练一般需要至少定义两个损失函数:分类损失和边界框回归损失,而损失函数的定义往往对检测精度以及训练速度产生较大的影响。
近年来,常用的边界框回归损失包括IoU、GIoU、CIoU、DIoU loss等等,这些损失函数通过考虑预测框与目标框之前的重叠程度、中心点距离、纵横比等因素来衡量两者之间的差距,从而指导网络最小化损失以提升回归精度,但是这些方法都没有考虑到预测框与目标框之间方向的匹配性。SIoU 损失函数通过引入了所需回归之间的向量角度,重新定义了距离损失,有效降低了回归的自由度,加快网络收敛,进一步提升了回归精度。通过在 YOLOv6s 上采用 SIoU loss 进行实验,对比 CIoU loss,平均检测精度提升 0.3% AP。

YoloV6主要创新点相关推荐

  1. YOLOv6:又快又准的目标检测框架开源啦

    近日,美团视觉智能部研发了一款致力于工业应用的目标检测框架 YOLOv6,能够同时专注于检测的精度和推理效率.在研发过程中,视觉智能部不断进行了探索和优化,同时吸取借鉴了学术界和工业界的一些前沿进展和 ...

  2. anchor base和anchor free, 小物体检测, YOLO V1-3 9000 V4 V5 的区别,yolov5-8, yolox创新点

    文章目录 Anchor base和Anchor Free的区别: 如何增强模型对小物体的检测效果 Yolo基本思想 不同版本的Yolo网络差异 YOLO V1 YOLO V2 YOLO9000 YOL ...

  3. YOLOv6: A Single-Stage Object Detection Framework for IndustrialApplications

    paper地址:https://arxiv.org/abs/2209.02976 源码github地址:GitHub - meituan/YOLOv6: YOLOv6: a single-stage ...

  4. YOLOv6设计来源 | 具有硬件感知的神经网络设计

    作者 | 小书童  编辑 | 集智书童 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[目标检测]技术交流群 后台回复[2D检测综述] ...

  5. SOTA!目标检测开源框架YOLOv6 3.0版本来啦

    近日,美团视觉智能部发布了 YOLOv6 3.0 版本,再一次将目标检测的综合性能推向新高.YOLOv6-L6 检测精度和速度超越 YOLOv7-E6E,取得当前实时目标检测榜单 SOTA.本文主要介 ...

  6. Mobileye独创性创新

    Mobileye独创性创新 尽管存在相似之处,但Nvidia的SFF无法与Mobileye的RSS相匹配,后者是领先的AV安全模型 迈向无人驾驶的未来,Mobileye继续以新的创新引领行业,不仅将使 ...

  7. YOLOV4各个创新功能模块技术分析(三)

    YOLOV4各个创新功能模块技术分析(三) 八.数据增强相关-Stylized-ImageNet 论文名称:ImageNet-trained cnns are biased towards textu ...

  8. YOLOV4各个创新功能模块技术分析(二)

    YOLOV4各个创新功能模块技术分析(二) 四.数据增强相关-GridMask Data Augmentation 论文名称:GridMask Data Augmentation 论文地址:https ...

  9. YOLOV4各个创新功能模块技术分析(一)

    YOLOV4各个创新功能模块技术分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:http ...

最新文章

  1. CV算法复现(分类算法5/6):ResNet(2015年 微软亚洲研究院)
  2. 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第二步)(4)...
  3. COMMIT WORK关键字在CRM content management应用里的使用场景
  4. linux搭建SonarQube代码质量平台_Oracle 最新详细版本
  5. 林锐 高质量c语言编程下载,新年献礼:Go语言深度入门手册
  6. 深度学习笔记(41) 候选区域
  7. 济南学习 Day 5 T2 am
  8. CSS你可以不写,但这些规范必须要知道!
  9. linux下加载ISO镜像的方法
  10. Arduino颜色分类器
  11. Oracle数据库新增字段
  12. elasticsearch 常见的概念
  13. HTML5期末大作业:动漫A网站设计——动画漫展学习资料电影模板(6页) 网页设计作业 / 动漫网页设计作业,网页设计作业 / 动漫网页设计成品,网页设计作业 / 动漫网页设计成品模板下载
  14. Android实现朋友圈的评论和回复
  15. Failed to introspect Class FeignClientFactoryBean 异常排查
  16. react项目里使用public的文件
  17. 家居行业渠道商销售系统线上线下一体化运作,促进产品更新迭代
  18. 蓝牙耳机音质真的不好吗?初级发烧友应该选择什么样式蓝牙耳机
  19. Google Chrome 中国官网最新版离线安装包下载地址
  20. 洗地机和扫地机器人哪个实用?值得入手的洗地机十大品牌推荐

热门文章

  1. ATTCK实战系列(二)
  2. 新版edge浏览器怎么打开IE,有什么方法吗
  3. 跨境电商如何打造爆款主图
  4. 什么是SAAS、IAAS
  5. 医院里的超硬核“人体模型”指路牌火了!网友被吓哭,医生回应
  6. asvscode生成key及打包android
  7. S7-1200 与 S7-1200或1500建立S7通信的具体方法和步骤(图文)
  8. java小工具util系列11:判断字符串是否是数值型,包括负数、0、正整数、浮点数等
  9. 鲸探发布点评:8月15日发售春秋乐器组合、编钟数字藏品
  10. clickonce发布的安装包运行报错