关于图像卷积运算 / 多通道卷积计算 / 反卷积 / 膨胀卷积的概念和计算总结

之前面试商汤的时候HR问了好几个和卷积有关的概念,有些细节没答上来,所以稍微总结一下一些相关概念;

  • 卷积的计算和作用;
  • 三种卷积运算 Valid / Same / Full 的区别;
  • 多通道卷积
  • 反卷积(转置卷积)的概念和作用;
  • 小数步长卷积 Fractionally Strided Convolution;
  • 膨胀卷积的概念和作用;

卷积,是一种特殊的滤波。用一个模板去和另一个图片对比,进行卷积运算。目的是使目标与目标之间的差距变得更大。对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。

卷积输出计算以及卷积核参数计算

       计算量 = C_{input} \times C_{output} \times I \times J \times H_{output} \times W_{output},,即输入通道数、输出通道数、卷积核长、宽、输出特征图的长、宽的乘积。

       参数数量 = C_{input} \times C_{output} \times I \times J

卷积的输出特征尺寸的一般情况为:

  

  • i:输入图像尺寸(h或w)
  • p:padding宽度
  • k:卷积核尺寸
  • s:步长stride

滑动步长stride为1时:

  • Valid:输出结果最小,p = 0,第一步运算时时卷积核左上角和原图像左上角对齐,输出尺寸(h-k+1, w-k+1),其中原图(h, w),卷积核(k, k);
  • Same:输出结果和原图一致,卷积运算之前在原图周围有填充(padding),填充宽度 p = (k+1) / 2,第一步运算时卷积核中心和原图左上角对齐,输出结果为(h, w);
  • Full:输出结果最大,卷积运算之前padding宽度 p = k-1,第一步运算时卷积核右下角和原图左上角对齐,输出尺寸为(h+k-1, h+k-1);

 多通道卷积计算:

在C个通道上的卷积操作,有N个卷积核,将会生成N个通道。C 个通道上每个通道都会和所有的卷积核进行卷积运算,先只看其中一个卷积核 F1,那么在 F1 运算结果某位置(i,j)处的值,是由所有 C 个通道上(i,j)处的卷积结果相加然后再取激活函数值得到的,所以最后得到N个feature map, 即输出的 feature map 的个数就是卷积核核个数 。


 

反卷积(转置卷积):

  • CNN可视化,通过反卷积将卷积得到的feature map还原到像素空间,来观察feature map对哪些pattern相应最大,即可视化哪些特征是卷积操作提取出来的;
  • FCN全卷积网络中,由于要对图像进行像素级的分割,需要将图像尺寸还原到原来的大小,类似upsampling的操作,所以需要采用反卷积;
  • GAN对抗式生成网络中,由于需要从输入图像到生成图像,自然需要将提取的特征图还原到和原图同样尺寸的大小,即也需要反卷积操作。

反卷积的输出大小(如下图左,和Full Conv类似)是由卷积核大小与滑动步长决定, i' 是输入大小, k' 是卷积核大小, s' 是滑动步长,p' 是填充宽度, o' 是输出大小,其分别对应的原卷积参数为 (i, k, s, o, p);

小数步长卷积 Fractionally Strided Convolution:

如果加上反卷积的步长s'(就是在像素间插0值),输出尺寸公式变为:o′ = s*( i' - 1 ) + 2p' - k' + 1 = s*( i′ − 1 ) + k − 2p


使用反卷积可以将上一层的feature map放大,并使其输出在crop layer中进行切割,使其与ground truth具有相同的尺寸来计算每个像素点的误差,在FCN语义分割中就用到了这个概念。

膨胀卷积(扩张卷积、空洞卷积) dilated convolutions:

与普通的卷积相比,膨胀卷积有一个扩张率(dilation rate)参数,主要用来表示扩张的大小。扩张卷积与普通卷积的相同点在于,卷积核的大小是一样的,在神经网络中参数数量不变,区别在于扩张卷积具有更大的感受野。

(a) 普通卷积,感受野为3×3=9;
(b) 2 - 膨胀卷积,2-dilated convolution,感受野为7×7=49;
(c) 4 - 膨胀卷积,4-dilated convolution,感受野为15×15=225;

综上可以发现 n - dilated convolution 的卷积核感受野为  4n-1 x 4n-1 ;

猜你喜欢

转载自blog.csdn.net/francislucien2017/article/details/85772003