目录
一.维度缩放
对于图像的特征图卷积操作来说,例如YOLOv3里的default input图像尺寸是416*416*3,对于堆叠的第三个维度来说(这里是3),是由卷积核的channel来决定的。比如Darknet对416*416*3的第一层卷积操作之后得到的是208*208*32,所以卷积核的后两个维度是3,32 (整体为3*3*3*32)。
也就是说卷积核的前两个长度为特征提取需要,后两个为维度控制需要。这也就是为什么1*1卷积经常用来降维的原因,它不改变特征图的长宽,而只是通过调整卷积核的channel来控制特征图的后两个维度。
二.特征提取
对于图像的特征提取来说,长宽的变化是由f,p,s三个参数决定的,分别是卷积核的大小,padding的填补长度和stride步长。具体变换的公式如下:
floor((n+2p-f)/s+1),防止图片被吞
默认情况下,卷积核经常使用1*1或者3*3,卷积核的尺寸越大,感受野也越大,对特征提取的效果一般也会越好,但是感受野越大也会导致模型的运算复杂性提高。s一般选择的是2,通过公式我们可以发现固定了n,f,s的数值,那我们可以通过调控p的值就可以做到控制输出特征图的长宽了,这也就是为什么pytroch里可以直接指定in_channel和out_channel的原因。
补充一点
假设n*n的卷积核stride大于n