卷积的概念
卷积的概念:卷积可以认为是一种有效提取图像特征的方法。一般会用一个正方形的卷积核(过滤器),按指定步长,在输入特征图上滑动,遍历输入特征图中的每个像素点。每一个步长, 卷积核会与输入特征图出现重合区域,重合区域对应元素相乘、求和再加上偏置项得到输出特征的一个像素点,如下图所示。
二维矩阵中:6x6的输入通过3x3的卷积核得到输出4x4的特征矩阵
二维卷积过程的计算
先计算二维卷积
输出长度计算
Valid卷积(变小)
输出长度
=
n
−
f
+
1
\ 输出长度 = \ n-f+1 \,
输出长度= n−f+1
n为输入矩阵长度,f为卷积核长度,这是在没有填充和和步长为0的基础上计算的输出长度
以上图的输入为例:6-3+1=4
填充(padding)
上述过程中会存在一定的问题,如下图所示,绿框代表的特征在被卷积的过程中只会被利用一次,与紫框差别就很大。那么就会导致边缘信息输出少,丢失图像的边缘位置。解决的办法就是使用填充(padding)。
在 Tensorflow 框架中,用参数 padding = ‘SAME’或 padding = ‘VALID’表示是否进行全 零填充,其对输出特征尺寸大小的影响如下:
SAME(全零填充):
填充长度是可以自己选定的。填充后卷积长度不变。加入填充P后输出的长度为:
输出长度
=
n
+
2
p
−
f
+
1
\ 输出长度 = \ n+2p-f+1 \,
输出长度= n+2p−f+1
若要使得输出长度等于输入长度,p=(f-1)/2
以p=1为例
我们可以看出,p=1时输出正好等于输入,输入扩充为8x8(以0填充)
加入步长(Strided)
输出长度
=
n
+
2
p
−
f
+
1
s
+
1
\ 输出长度 = \frac{n+2p-f+1}{s}+1 \,
输出长度=sn+2p−f+1+1
s为步长stride
Full反卷积(变大)
膨胀卷积:增加感受野(Receptive Field)
卷积在卷积,能够看到更大的东西
输出的内容
乘积累加
p=0,s=2
输出长度=(6+0-3+1/2)+1
2x3+3x4+7x4+6x1+6x0+9x2+3x-1+4x0+8x3=91
- List item