1.整体结构
由上图所示,从整体上来看,YOLOV6的网络结构与YOLOV4、YOLOV5是很相似的,尤其是backbone和neck,但是其中的实现模块是有变化的;但最大的不同在于Head部分,采用的是YOLOX的Head方式,将分类与回归分为两个支路,进行了解耦操作;具体内容下面将会详细的介绍。
2. Backbone
可见,Backbone的实现的基本模块为RVB1_X结构,其全程为RepVGGBlock_X,表示由多个RepVGGBlock组成;
(1)RepVGGBlock
上图是RepVGGBlock论文中绘制的图像,整个网络包括两种残差结构,如上图中的绿框和红框,
<1> 绿框
其残差结构仅仅包含Conv1*1残差分支,用另一种表示为:
两种的不同在于,Rep-I使用的Conv+BN模块,其步长都为2,用于进行降采样,如主干网络中的下面红框中的两种,Rep-!hui进行降采样,将输入降采样到1*32*320*320,而剩余的RVB1_X模块中,其第一个RepVGGBlock都是采用的Rep-I的方式,先进行降采样。
<2> 红框
红框不仅包含Conv1*1的残差结构,而且包含了一个Identity分支,这里常用BN层表示,如下图所示
其另一种表示为:
其中的卷积为1*1和3*3,且步长为1,通常是通道和size没有变化,常用在RVB1_X中的后面部分,如下图所示:
(2)SimSPPF
结构如下图所示:
其与YOLOV4、YOLOV5中的SPP结构是类似的,目的都是为了正大感受野,但是不同的是这里将9*9和13*13的池化核都用5*5的池化核来表示,极大的降低了计算量。
3. Neck部分
结构上与YOLOV4的PANet结构类似,先上采样融合再下采样融合,但是这里却将基本模块更换为了效果更佳的RepVGGBlock结构,整体结构如下图所示:
等同于:
其中重要的结构有两种,分别为RVB2_X和RVB3_X,其实两种结构基本上是一样的,其最大的不同在于它们的第一个RepVGGBlock结构,从上图可见,经过RVB2_X的特征图的通道数是有所变化的,而经过RVB3_X的特征图的通道是没有变化的。
4. Head部分
和YOLOX一样,YOLOv6也对检测头进行了解耦,分开了边框与类别的分类过程。将边框回归和类别分类耦合在一起时会影响性能,因为这样不仅加慢收敛的速度,也会提高检测头的复杂程度。