CV中常说的卷积代表的是互相关运算(cross-correlation),卷积运算就是,在卷积层中,输入张量和核张量通过互相关运算产生输出张量。
第一个元素的运算方法是,$0\times 0 + 1\times 1+3\times 2+4\times 3 = 19$。其后的3个数字的计算方法: $$ \begin{aligned} 0\times 0 + 1\times 1+3\times 2+4\times 3 = 19 \\ 1\times 0 + 2\times 1+4\times 2+5\times 3 = 25 \\ 3\times 0 + 4\times 1+6\times 2+7\times 3 = 37 \\ 4\times 0 + 5\times 1+7\times 2+8\times 3 = 43 \\ \end{aligned} $$
卷积运算的方式的总结为:卷积核窗口从左到右、从上到下滑动。 当卷积窗口滑动到新一个位置时,包含在该窗口中的部分张量与卷积核张量进行按元素相乘,得到的张量求和得到一个单一的标量值。
上图中输出的卷积层有时被称为 特征映射(feature map),它可以被视为一个输入映射到下一层的空间维度的转换器。在卷积神经网络中,对于某一层的任意元素$x$,其 感受野(receptive field) 是指在前向传播期间可能影响$x$计算的所有元素(来自所有先前层)。
我们可以看到,输出大小略小于输入大小。这是因为卷积核的宽度和高度大于1。1x1 的卷积通常用于降维,卷积核的尺寸通常是3、5、7 这样的奇数。(为什么是3、5、7?这个涉及到感受野的概念)肯定会造成输出尺寸的不断变小,这就是边缘损失。
感受野
The receptive field is defined as the region in the input space that a particular CNN’s feature is looking at (i.e. be affected by).
感受野(Receptive Field),指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,feature map上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。
卷积神经网络中,越深层的神经元看到的输入区域越大,如下图所示,kernel size 均为3×3,stride均为1,绿色标记的是Layer2每个神经元看到的区域,黄色标记的是Layer3 看到的区域,具体地,Layer2每个神经元可看到Layer1上3×3 大小的区域,Layer3 每个神经元看到Layer2 上3×3 大小的区域,该区域可以又看到Layer1上5×5 大小的区域。
我们可以根据输入特征的数量和卷积属性计算输出特征的数量,有如下公式: $$ \begin{aligned} &n_{out} = [\frac{n_{in}+2p-k}{s}]+1 \\ \\ & n_{in},n_{out}: number\ of\ input/output\ features \\ & k: convolution\ kernel\ size \\ & p: convolution\ padding\ size \\ & s: convolution\ stride\ size \end{aligned} $$
总结:
- k:kernel size
- p:padding size
- s:stride size
- Layer:用Layer表示feature map,特别地,Layer0为输入图像;
- Conv:用Conv表示卷积,k、p、s为卷积层的超参数,Convl的输入和输出分别为Layerl−1和Layerl+1;
- n:feature map size为n×n,这里假定height=width;
- r:receptive field size为r×r,这里假定感受野为方形;
- j:feature map上相邻元素间的像素距离,即 将feature map上的元素与输入图像Layer0 上感受野的中心对齐后,相邻元素在输入图像上的像素距离,也可以理解为 feature map上前进1步相当于输入图像上前进多少个像素, 如下图所示,feature map上前进1步,相当于输入图像上前进2个像素,j=2;
![]()
也就是s=2 - start:feature map左上角元素在 输入图像上的感受野中心坐标(start,start), 即 视野中心的坐标 ,在上图中,左上角绿色块感受野中心坐标为(0.5,0.5),即左上角蓝色块中心的坐标,左上角白色虚线块中心的坐标为(−0.5,−0.5);
- l:l表示层,卷积层为Convl,其输入feature map为Layerl−1,输出为Layerl。
$1 \times 1$ 卷积
卷积的本质是有效提取相邻像素间的相关特征——在高度和宽度维度上,识别相邻元素间相互作用。从这个角度来看,$1 \times 1$ 卷积似乎没有多大意义,其实,它最大的作用是降维。 $1 \times 1$ 卷积显然在高和宽上是没有任何作用的。我们可以将$1 \times 1$ 卷积层看作在每个像素位置应用的全连接层,输入和输出具有相同的高度和宽度,输出中的每个元素都是从输入图像中同一位置的元素的线性组合,以$c_i$个输入值转换为$c_o$个输出值。 因为这仍然是一个卷积层,所以跨像素的权重是一致的。