简介:
YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。这里简单记录一下,方便以后回顾。
在部署方面,YOLOv6 支持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平台的部署,极大地简化工程部署时的适配工作。
原论文地址:https://arxiv.org/pdf/2004.10934.pdf
GitHub网址:https://github.com/meituan/YOLOv6
结果展示:
网络结构:
以下为yolov6s整体的网络架构,从图中可看出yolov6网络由四个部分组成:input,backbone,neck以及head。对各个部分的功能和yolov5相同,如backbone用于提取特征,head用于预测。
YOLOv6:EfficientRep Backbone + SPP +RepPANNeck + Efficient Decoupled Head
核心原理详解:
BackBones:
受到硬件感知神经网络设计思想的启发,基于RepVGG style设计了可重参数化,美团将其命名为EfficientRep Backbone。
上图为RepVGG模型架构的一个主要的算子, 可以称作为RepVGGBlock, 是backbone的主要算子。
在训练时, 该算子有三个分支, 分别是3x3卷积分支, 1x1卷积分支以及Identity分支。
在预测时会将其进行等价的转换, 变成一个3x3卷积。
Neck:
其实就是将CSP-PAN中的CSP模块换成了Rep模块,形成了Rep-PAN罢了。
Head:
原始 YOLOv5 的检测头是通过分类和回归分支融合共享的方式来实现的,而 YOLOX 的检测头则是将分类和回归分支进行解耦,同时新增了两个额外的 3x3 的卷积层,虽然提升了检测精度,但一定程度上增加了网络延时。
对解耦头进行了精简设计后,同时综合考虑到相关算子表征能力和硬件上计算开销这两者的平衡,采用 Hybrid Channels 策略重新设计了一个更高效的解耦头结构,在维持精度的同时降低了延时,缓解了解耦头中 3x3 卷积带来的额外延时开销。通过在 nano 尺寸模型上进行消融实验,对比相同通道数的解耦头结构,精度提升 0.2% AP 的同时,速度提升6.8%。
Anchor-free
YOLOv6 采用了更简洁的 Anchor-free 检测方法。由于 Anchor-based检测器需要在训练之前进行聚类分析以确定最佳 Anchor 集合,这会一定程度提高检测器的复杂度;同时,在一些边缘端的应用中,需要在硬件之间搬运大量检测结果的步骤,也会带来额外的延时。而 Anchor-free 无锚范式因其泛化能力强,解码逻辑更简单,在近几年中应用比较广泛。经过对 Anchor-free 的实验调研,我们发现,相较于Anchor-based 检测器的复杂度而带来的额外延时,Anchor-free 检测器在速度上有51%的提升。
总结:
简而言之,考虑到持续的工业需求,提出了YOLOv6,仔细分析了迄今为止目标检测器组件的所有进步。结果在精度和速度上都超过了其他可用的实时目标检测器。为了便于工业部署,还为YOLOv6提供了一种定制的量化方法,从而提供了前所未有的快速检测器。
系列传送门:
目标检测——R-CNN(一)
目标检测——Fast R-CNN(二)
目标检测——Faster R-CNN(三)
目标检测——Mask R-CNN(四)
目标检测——R-FCN(五)
目标检测——YOLOv3(六)
目标检测——YOLOv4(七)
目标检测——YOLOv5(八)
目标检测——SSD(九)
目标检测——RetinaNet(十)
目标检测——RefineDet(十一)