卷积过程padding的理解

Padding是填充的意思,用在卷积网络当中。当有一张 6 X 6 的图片,经过 3 X 3 的卷积核卷积之后(不使用padding)会得到一张 4 X 4 大小的图片,从输入到输出的计算方式为:(n-f+1)*(n-f+1)   如图1所示。

卷积过程padding的理解_第1张图片

                                                                                            图 1

这样有一个缺点就是每卷积一次,图像就会变小,卷积几次图像就会变得非常小,这并不是我们所希望的;第二点是,图像角落和边缘的像素卷积过程中被使用到的次数非常少,而其他地方的像素被多次重叠使用,丢失了边界上许多信息。所以为了解决上面两个问题,在卷积之前使用pad(填充)周边方式。

padding

输入到输出图像大小的计算公式。(n+2p-f+1)*(n+2p-f+1),其中 p 为 图像边缘填充的圈数。如图 2 所示填充一圈 则 p=1。图像卷积之后,尺寸大小未缩小。

卷积过程padding的理解_第2张图片

在深度学习框架 TensorFlow 、keras 等中 pading的参数有 valid 和 same 两种可选。

valid 其实就是表示没有 pad (填充) ; same 表示图像进行 pad ,得到的输出图像会与输入图像尺寸相同。

valid:n x n   *    f x f    ---->   n - f +1      如  6 x 6   *     3 x 3    ----->  4 x 4

same :n x n   *    f x f  ---->   (n + 2p - f + 1) x (n + 2p - f + 1)   因为为了得到和输入图像相同的尺寸,程序会自动反推计算 p 的大小。 n - 2p + f - 1 = n     -------->   p = (f-1) / 2。

 

不过图像卷积之后输出尺寸的大小还与卷积的步长有关系。令 s 为卷积步长。

当padding = same 时:

卷积过程padding的理解_第3张图片

图像输出大小等于输入大小除以步长向上取整,s是步长大小;

当padding = valid 时:

卷积过程padding的理解_第4张图片

图片输出大小等于输入图片的尺寸大小减去滤波器尺寸大小再加上1,最后再除以步长s。

还是以上面输入 6 x 6 的图片为例,滤波器 是 3 x 3。padding = same , s =1, 输出图片 尺寸为 6/1=6,当 s = 2时,输出图片尺寸为 6 / 2 =3。 padding = valid ,s = 1,输出图片尺寸为 (6-3+1)/1=4 ,当 s =2 时,(6-3+2)/ 2 =2.5 向上取整为3。

 

在计算机视觉领域中,卷积核 f 通常为奇数,事实上几乎永远为奇数,如果 f 为偶数会导致一些不对称的填充 p = (f-1)/2,造成左边和右边图像填充不对称。其次当 f 为奇数时,卷积核会有一个中心对称像素,在图像处理中有一个特殊点是非常好的。如图所示:

卷积过程padding的理解_第5张图片

 

 

 

你可能感兴趣的:(keras,tensorflow,卷积,深度学习,神经网络)