深度学习之快速理解卷积层

CNN 由三种不同的层组成,即「卷积层」、「池化层」、「连接层」。今天,我们讲一讲如何理解「卷积层」。

一个简单的深度网络模型

下图是一个图像卷积的例子,输入图像是32*32*3,3是它的深度(即R、G、B三色通道),卷积层是一个5*5*3的filter,这里注意:filter的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28*28*1的特征图,下图是用了两个filter得到了两个特征图。

通常地,我们会使用更多的卷积filter,来获得更加深层次的特征信息。

经过多次卷积后,得到了更加深层次的特征信息

我们再来看一个更具体的例子,输入是一个4*4 的image,经过两个2*2的卷积核进行卷积运算后,变成两个3*3的feature_map。

这里我们介绍一下中间转换的过程,以上图卷积核filter1为例,filter1在图片滑过,步长为1(stride = 1):

计算第一个卷积层神经元o11的输入: 

neto11=conv(input,filter)=i11×h11+i12×h12+i21×h21+i22×h22=1×1+0×(−1)+1×1+1×(−1)=1

神经元o11的输出:(此处使用Relu激活函数)

outo11=activators(neto11)=max(0, neto11)=1

 

这个动图可以看出卷积的运算过程,动图来自:https://blog.csdn.net/silence1214/article/details/11809947与本文的矩阵没有关系

其他神经元计算方式相同,计算完所有的输出后,得到了feature_map1。经过多次卷积后,就可以提取出图像中的特征,那么,卷积运算中的filter怎么来的呢?不同的filter对运算有什么影响?

对数字图像处理进行处理的时候,有很多的矩阵算子,其实这些算子就是filter,我们使用的Photoshop,美图秀秀等等软件给图片添加的“滤镜”其实就是使用了这些filter才得到的效果。

这里推荐一个网站:http://setosa.io/ev/image-kernels/,可以打开看一下不同的filter对图像的影响,帮助你更好的理解filter。

Image Kernels

这个站点提供了9种filter,接下来就让我们看一下不同的filter对图像特征的提取效果吧。

使用blur作为filter

使用bottom sobel作为filter

使用emboss作为filter

使用identity作为filter

使用left sobel作为filter

使用outline作为filter

使用right sobel作为filter

使用sharpen作为filter

使用top sobel作为filter

可以看出来,不同的filter对人脸的提取效果是不一样的。多个filter进行结合,再加上梯度上升算法,不停迭代优化权值。就可以优化深度网络的效果。

The End


已发布

分类

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注