以yolov5s为例,原始的的图像输入Focus结构,采用切片操作,先变成
的特征图,再经过一次卷积操作,最终变成
的特征图。
下面介绍为什么k=6卷积层在理论上等价于Focus结构。
(1)Focus层的参数量与计算量(忽略bias)
计算量
参数量
(2)k=6卷积层的参数量与计算量(忽略bias)
计算量
参数量
通过上面的计算也解释通了为什么使用6x6卷积块(改变以往一般都是用卷积核为奇数的卷积块的做法)
在yolov5中,作者提出单层Focus结构来替换了yolov3的backbone中的前三层,具体如下图所示。
图片在经过Focus模块后,最直观的是起到了下采样的作用,在这个下采样的过程相比于以前的卷积操作减少了层数、参数,以及 FLOPs,同时对mAP影响较小。
Focus结构将原图切分并堆叠在一起,再用3x3的conv进行特征提取,Focus结构与一个6x6的conv的感受野、计算量以及参数量是相同的,所以在理论上与6x6的conv完全等价。
但作者可能是因为训练过程中图片数量较多,Focus结构对图片进行拆分提取再堆叠这个过程没有直接conv的计算高效(对于现有的一些GPU设备以及相应的优化算法,使用6x6的conv更高效),所以才在yolov6.0的版本中把Focus换成了6x6的conv。