赞
踩
本文分析了全连接层存在的局限性,然后引出卷积的思想方法,介绍了如何进行卷积、池化计算,提取特征。学习了卷积神经网络,就可以用神经网络高效地进行图像处理,比如说用于人脸识别、图片清晰化、风格迁移等。
卷积神经网络(Convolutional Neural Networks,CNN)主要包含以下结构:
在之前介绍的神经网络中,相邻层的所有神经元之间都有连接,这称为全
连接(fully-connected)。全连接层(Affine层)存在局限性,就拿图片识别的例子来说,存在一些问题。
1.1 参数过多的问题
如果输入是一张1000*1000像素的彩色图片,因为有RGB三个通道,那么就有
3
×
1
0
6
3×10^6
3×106 个输入变量,假设隐藏层有1000个单元,那么权重参数将达到
1000
×
3
×
1
0
6
1000×3×10^6
1000×3×106,即30亿个,这是一个庞大的数字,非常容易导致神经网络过拟合、并且需要巨大的计算机内存和计算资源。
1.2 丢失了空间特征信息
比如说,图片中的一个物品,其轮廓是连续的,而且平移、缩放、旋转等操作不影响其语义信息。图像通常含有宽、高、通道方向上的3维形状,而全连接层把这些输入全部作为一维信息处理,会忽视这种空间特征。
卷积层(Convolutional layers)进行的处理就是卷积运算,相当于图像处理中的“滤波器运算”。
我们来看一个具体的例子:
输入数据经过滤波器转换,得到了另一个矩阵。滤波器在一些文献中也叫“核”、“卷积核”。
下面是步长为1的卷积运算过程:
15=1×2+2×0+3×1+0×0+1×1+2×2+3×1+0×0+1×1
每次移动一个像素,同理:
下面这张动态图更加形象,这也是步长为1的卷积运算(右移和下移都是1个像素):
如果步长为n,那么右移或下移时移动n个像素。
下面这张图很形象地说明了如何添加偏置,不再多说:
上面的图中,每次进行卷积运算都会导致输出矩阵变小,经过多次卷积运算后可能导致矩阵大小为1×1,无法再进行卷积计算。为了避免这种情况,我们可以对输入矩阵进行填充(padding),如下图,输入大小为4×4,进行幅度为1像素的0填充,再卷积,输出大小保持不变。
滤波器每次卷积移动的长度称为步长(stride)。
假设输入大小为(H, W),填充为P,滤波器大小为(FH, FW),步幅为S,输出大小为(OH, OW),那么:
O
H
=
H
+
2
P
−
F
H
S
+
1
OH=\frac{H+2P-FH}{S}+1
OH=SH+2P−FH+1
O
W
=
W
+
2
P
−
F
W
S
+
1
OW=\frac{W+2P-FW}{S}+1
OW=SW+2P−FW+1
1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”,可视皮层是分级的。
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:
卷积运算可以通过设置不同矩阵的滤波器,将边缘特征保留。
如下图(Excel倾情制作 声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。