(1)边缘检测
左边的6*6矩阵就是输入的图像的像素,中间3*3的是过滤器,右边是输出。
计算就是如下图:
为什么这样可以检测出边缘?
下图左边的6*6矩阵可以看出表示的是中间有一条边界的图像。通过中间的过滤器后得到右边的输出,可以看到检测出了一个正边缘(白色的,表示从亮到暗),正边缘较粗是因为输入是很小的图像(6*6)
将输入矩阵左右翻转就是下图下半部分的样子,可以看到检测出了负边缘(黑色的,表示从暗到亮)
下面是常见的三种过滤器。也可以把过滤器的元素作为参数放到网络里去训练,由反向传播得到过滤器元素的值。
(2)padding
上述方法(valid卷积,即no padding),经过过滤器之后得到图片的大小是(n-f+1)*(n-f+1)
缺点:1.每过一次过滤器都会减小图像 2.边缘的像素使用次数比中间少,会丢失一些边缘上的信息。
(same卷积,即使用padding使得输出图像的大小和输入图像的大小一致)可以填充要被检测的图片边缘。填充的量记为p,填充后经过过滤器得到的图像大小是(n+2p-f+1)*(n+2p-f+1)=n*n
f一般都是奇数,保证填充的对称,并且过滤器有一个中心像素。
(3)步长
S表示步长,公式求出的输出矩阵的大小如果不是整数要向下取整。
(4)三维卷积
这里的输入可以是彩色的手写数字图像,而不是上面的灰度图像,所以有三个通道。输入和过滤器都是三维的。得到二维的输出。
如果想要同时使用多个过滤器呢?
使用Nc个过滤器就得到n*n*Nc大小的输出
(5)单层卷积网络示例:
在上面的基础上,每一个经过过滤器之后的输出要加上偏执单元,然后使用激活函数(这里是Relu),才得到下一层。
(6)总结:
下面这张图总结了卷积网络里面的一些数据关系,有助于加深理解上面的内容。