深度学习之快速理解卷积层
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进行结合,再加上梯度上升算法,不停迭代优化权值。就可以优化深度网络的效果。
====================================================================
本文发表在李思原博客“机器在学习”
链接:http://www.siyuanblog.com/?p=1138
欢迎扫码关注我的微信公众号:聚数为塔
=====================================================================
- 点赞
- 收藏
- 关注作者
评论(0)