【深度学习理论】(2) 卷积神经网络

各位同学好,最近学习了CS231N斯坦福计算机视觉公开课,讲的太精彩了,和大家分享一下。

如下图所示,现在有shape为 32x32x3 的图像,如果使用全连神经网络,将图像拉长成一个一维向量 [None, 3072];使用10个线性分类器,每个分类器是一个一维向量,含 3072 个权重,和图像做点乘,每个分类器得到1个值,得到输出特征向量为 [None, 10]

使用全连接神经网络处理图像分类问题存在的缺陷是,将二维图像拉平成一维向量之后,丢失了图像的空间信息。为了解决这个问题,引入卷积操作。


1. 卷积神经网络组成

卷积神经网络是由 卷积层、池化层(降采样)、全连接层 组成卷积层提取特征池化层对特征后处理,将特征大而化之的处理,图变小变模糊;全连接层融合不同的特征,输出最终结果。


2. 卷积

卷积操作可以理解为,卷积核在原图像上滑动,把对应位置元素相乘,即图像像素乘以对应位置卷积核的权重,把相乘的结果再相加,填到生成特征图的对应位置。

2.1 单通道图像

以单通道图像举例。如下图,左图是原始像素,左图绿色区域为感受野,中间的图为卷积核,每次卷积结果生成特征图,如右图。每次卷积的卷积核里面的权重是不变的。在感受野区域内,将原始像素和卷积核对应像值相乘再相加,结果填到特征图的对应位置上。

有多少个卷积核就有多少张特征图。一个卷积核生成一张特征图,如果换一套卷积核权重,就得到了第二张特征图。将多个卷积核生成的特征图堆叠起来,就生成了多通道的特征图。作为下一个卷积层的输入。

然而,现在有个小问题。在卷积过程中,原图像左上角的像素只参加了一次卷积运算,而中间的像素参加了很多次卷积运算。这样会导致卷积过程中丢失边缘信息

如何解决这个问题呢,我们可以在原图像边缘使用0填充一圈,称为padding操作(1)补0之后,边缘像素就能更多的参与卷积运算。(2)不使用0填充的话,卷积过程中生成的特征图size会不断减小;采用0填充之后,卷积前的特征图size和卷积后的特征图size相同

现在卷积核在图像上移动步长=(1,1),即卷积核在水平和竖直方向每次滑动一格。若卷积核在图像上移动步长=(2, 2),即卷积核在水平和竖直方向每次滑动两格。


2.2 多通道图像

在现实生活中,一般都是彩色图像,即RGB三颜色通道。刚刚介绍的是原图只有一个通道。

卷积操作中,输入图像有多少个通道,卷积核就有多少个通道。如下图,三个通道的卷积核在三通道的原图像上滑动,对应元素相乘再相加,一个卷积核生成一张特征图

如下图,输入图像三通道,一个卷积核也是三通道的,卷积核的每个通道对应原图的每个通道,卷积核的每个通道的权重是不相同的。卷积核和原图像对应位置相乘再相加,再加上一个偏置,填到特征图的对应位置上。


2.3 卷积的目的

卷积的目的就是把原图中符合卷积核定义的特征提取出来

可以理解为,卷积核定义了一个特征,卷积操作就是在原图上提取这个特征如果原图中某些像素值符合卷积核特征,那么在特征图中对应的像素值就比较大,其他地方的值都很低不同的卷积核能在原图中提取不同的特征,如下图两种卷积核。


2.4 卷积流程总结

输入图像的shape为 [32, 32, 3],用6个 5x5x3 的卷积核卷积,得到特征图的shape为 [28, 28, 6],再用10个 5x5x6 的卷积核卷,生成特征图的shape为 [24, 24, 10]


3. 池化

现在有卷积层输出的特征图,随着卷积核个数越来越多,特征图通道数也越来越多,参数量也越来越大。现在从特征图中选取一些代表性的像素值作代表,不需要考虑原来这么繁杂的参数。

选取方法有,最大池化从每个池化窗中选出一个最大值平均池化:计算每个池化窗口的平均值。

池化的作用

(1)使卷积神经网络具有平移不变性不管原图中,对象是处于图像的哪个位置,经过池化层,过滤平移变形。

(2)减少参数量。从特征图中提取具有代表性的像素值。

(3)防止过拟合。把特征图进行大而化之的处理,保留主要特征,过滤噪音。

卷积操作的卷积核是有权重的,池化操作的池化窗口中是没有权重的,只需要找出相应的值


4. 全连接

全连接将输出特征图拉平成一个长向量,进行模型汇总,得到最后的结果。


5. 卷积神经网络特点

(1)局部感受野每个神经元仅于输入神经元的一块区域连接,这块区域称为感受野。

和全连接神经网络不同,全连接网络是每一个神经元都要处理上一层的全部输出信息;而在卷积神经网络中,每个神经元只关注感受野内的一小块区域。

(2)权值共享卷积核是共享的,一次卷积过程中,一个卷积核的权重参数是不变的(一个卷积核各通道的权重参数可以不相同)

(3)池化(下采样)减少参数,防止过拟合,引入了平移不变性


6. 补充小知识点

6.1 特征图的size变化

如果输入图像的size为(N, N)卷积核的size为(F, F)输出的特征图的size(N-F)/ stride +1

如下图,当步长=3时,输出特征图size是小数,应该避免这种情况,在原图的周围使用0填充,使输出特征图size是整数。

使用padding后,输出特征图size公式变为:(N+2P-F)/ stride +1

p 代表原图周围padding几圈。如果 p =(F-1)/ 2,且步长=1那么输入和输出特征图的size相同


6.2 1x1卷积

1x1卷积是指 卷积核的长宽都等于1。如下图所示,输入特征图的shape为 [64, 64, 192],一个卷积核shape为 [1, 1, 192],对应元素相乘再相加,得到卷积输出特征图的shape为 [64, 64, 1]

可以使用不同个数的1x1卷积核来升维或降维,如果1x1卷积核个数是128个,就将输入图像的shape从 [64, 64, 192] 降为 [64, 64, 128]。

1x1卷积的作用(1)降维或升维;(2)跨通道信息交融;(3)减少参数量;(4)增加模型深度,提高非线性表示能力。

如下图(a)所示,使用 5x5x256 的卷积核计算,参数量有二十万。操作数160.5M,可理解为每张输出特征图都是由一次卷积得来的,每一次卷积的运算量就是每个卷积核的size = 5*5

如图(b)所示,先用1x1卷积核降维,再用5x5卷积提取特征,每个1x1卷积核的参数量只有1*1*256。大大减少了计算量

猜你喜欢

转载自blog.csdn.net/dgvv4/article/details/123519574