卷积神经网络(CNN)——初学者进

卷积神经网络(CNN,Convolutional Neural Networks)是广泛应用于计算机视觉任务的基础网络架构,也是生成式对抗网络(GAN,Generative Adversarial Networks)等现代深度学习技术的理论基石。卷积神经网络通常由卷积层、池化层以及全连接层构成,其分别负责对输入图像的特征提取、特征聚合和概率分布生成。

1、卷积层

卷积层是卷积神经网络中最重要的组成部分,是负责提取图像特征的网络构件。

(1)卷积计算

对于输入的灰度图像矩阵,卷积层使用具有可学习参数的卷积核对其进行卷积运算以得到该层输出的特征图。卷积核也是一个矩阵,其中的参数代表了对图像特征的提取方式,卷积运算的实现方式如下图示意。

 

具体来说,卷积核将从输入图像的左上角开始遍历整个输入图像与之进行重叠,在重叠的区域两个矩阵对应位置的数字进行乘法运算,而后将全部运算结果相加,得到输出图像对应于卷积核所在位置的一个输出。卷积核的大小为一个3 * 3的矩阵,不难看出,9组数字对应相乘求和后只会得到一个数字填入输出图像矩阵,这会导致输出图像矩阵的维数下降,即下采样。

(2)填充

通常来讲,下采样是对图像特征的提取和浓缩,是图像处理中所必须的。然而,由于卷积神经网络的实践告诉我们,靠前的卷积层通常只会提取到输入图像的浅层特征,例如条纹,而复杂的深层特征需要深度更深的卷积层才可以提取到。因此,卷积神经网络需要一个比较深的网络层数,此时如果输出特征图一直进行下采样,图像将最终变成1*1,因此为了克服这个问题,在卷积操作中引入了填充,如下图所示。

 

显然,填充通过填充0元素的方式扩大了输入图像的原本尺寸,进而导致输出图像的尺寸缩小是相对于扩大以后的图像尺寸,而甚至有可能突破输入图像的原始尺寸。在实践中,通常称不使用填充的卷积运算为Valid卷积,而满足输入与输出图像尺寸相等的填充卷积运算为Same卷积。

(3)卷积步长

卷积层的最后一个参数是卷积步长。在第一张图中,卷积核计算完成最上角的重叠卷积运算后,会向右(向下)移动一个像素以遍历输入图像,该移动像素的数目被称为卷积步长。事实上,卷积层中也常常设置卷积步长为2,即一次移动两个像素再进行卷积运算。

讨论了对于输入图像是灰度图像情形下的卷积运算,现在我们还可以将其推广到生活中更加常见的彩色图像中。

 

2、池化层

池化层是卷积神经网络中的另一构件,其负责将卷积层传递来的特征图进行特征聚合,以完成进一步地下采样,池化层中没有任何可学习参数,它采用和卷积类似的滑动窗口,保持输出图像的尺寸计算公式不改变,但不进行卷积运算,而是直接取滑动窗口中的最大值或者平均值作为输出结果。取最大值的就被称为最大池化,取平均值的就被称为平均池化。

 

上图为池化层的计算方式。池化的一种理解是对提取到的特征的凝练。其中,最大池化被理解为对最显著特征的凝练,而平均池化则被理解为传递来的特征还不能通过最大特征来进行概括,因此需要进行平均处理,这往往发生在浅层卷积神经网络中。目前几乎都选用最大池化,考虑到算力提升带来的卷积神经网络的深度增加,这种做法具有合理性。

3、卷积神经网络的示例

 

上图改进的LeNet-5是对之前讨论的卷积层与池化层进行应用创建出的卷积神经网络实例。其中,图示中位于最后的FC全连接层实际上就是多层感知机。该卷积神经网络被应用于识别手写数字,输入图像在经过卷积层后被池化,并重复这个步骤,之后接入全连接层中,通过Softmax函数输出对0-9不同类别的概率分布估计,进而得到最终的预测结果。

从网络结构中可以看到两点,其一是卷积神经网络通常是由一系列的卷积层之后跟一个池化层作为一个基础模块,重复这个模块构成;其二是输入图像在卷积神经网络的过程中,其宽度和高度会由于下采样而不断减少,但其通道数会因为深层神经网络提取到的特征更加复杂而不断增加。这两点是在实践中设计卷积神经网络的基本原则。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值