卷积运算和特征图的维度变换

目录

一.维度缩放

二.特征提取

补充一点

一.维度缩放

对于图像的特征图卷积操作来说,例如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,这也就意味着有的原特征图的数值会被跳过,这时候一般就会造成信息的缺失。

以上所有提到的stride都是指的是实际步长,也就是stride如果是3,那么卷积核就移动三格子。(有的文章提到的实际步长会比stride大1)

你可能感兴趣的:(深度学习,cnn,计算机视觉)