分享

计算机视觉领域的核心算法模型:卷积神经网络

 taotao_2016 2020-02-21

卷积神经网络的概述

卷积神经网络CNN是一类包含卷积计算且具有深度结构的神经网络,是深度学习的代表算法之一 。在计算机视觉领域具有强大的影响力,是计算机视觉领域核心的算法模型。

图片的存储

计算机视觉中常常处理图片数据,图像在计算机中是一堆按顺序排列的数字,数值为0到255。0表示最暗,255表示最亮。 我们可以把这堆数字用一个长长的向量来表示, 然而用向量表示的话会失去平面结构的信息,为保留该平面结构信息,通常选择矩阵的表示方式。

RGB颜色模型中,因为图片有三个通道,那么每一个矩阵又叫这个图片的一个通道,在计算中使用三个通道来进行表示,在电脑中,一张图片是数字构成的'长方体'。可用 宽, 高, 深来描述,一张图片在电脑中是这样存在的:

计算机视觉领域的核心算法模型:卷积神经网络

RGB三通道

三种常见的图像的处理方式:

1均值化(CNN只用去均值):把输入数据各个维度都中心化到0

2归一化:数据幅度归一化到同样的范围

3PCA/白化:用PCA降维,白化是对数据每个特征轴上的幅度归一化

去均值:所有样本求和求平均,然后用所有的样本减去这个均值样本就是去均值。

归一化:对于每个特征而言,范围最好是[-1,1],

PCA/白化:用PCA降维,让每个维度的相关度取消,特征和特征之间是相互独立的。白化,对数据每个特征轴上的幅度归一化

计算机视觉领域的核心算法模型:卷积神经网络

图片处理

计算机视觉领域的核心算法模型:卷积神经网络

图片处理

图片数据并不会直接放到神经网络中,而是要进行一系列的处理,这样才能放到神经网络中,我们将这个步骤称为图片数据的预处理操作。

神经网络:

计算机视觉领域的核心算法模型:卷积神经网络

人工神经网络

神经网络也可以处理图片数据,但是它会有一些问题,首先图片数据放到神经网络中需要将图片数据展开成向量,这样会需要很多的参数才可以,这样的结果就会导致需要大量的计算力才能完成神经网络的训练任务,而且图片有一点很特殊,不同的图像在不同的位置应该是一样的,所以我们可以重复利用学习到的这部分特征。图片有一个性质叫做局部关联性质,一个图片的像素点影响最大的是它周边的像素点,而距离这个像素点比较远的像素点二者之间关系不大。很明显神经网络是做不到的,所以为了解决这个问题,我们使用局部连接+权值共享的方式不仅权重参数降下来了,而且学习能力并没有实质的降低,针对于此,卷积神经网络可以完美的处理这两个问题,使得卷积神经网络称为处理图片数据的标配。

卷积神经网络

现在我们对卷积神经网络有一个初步认识了,下面具体来讲解一下卷积神经网络,用卷积神经网络常常处理图片数据,比如识别一辆汽车:

计算机视觉领域的核心算法模型:卷积神经网络

卷积神经网络

汽车作为输入数据输入到卷积神经网络中,经过卷积层CONV,然后RELU激活,POOL表示池化操作(多个卷积层+激励层之后接一个池化层),最后连接一个全连接层FC进行分类操作。

这就是卷积神经网络的全部,下面我们将对卷积神经网络进行切分,对每个功能进行讲解,各个击破。

卷积神经网络之卷积层:

卷积神经网络中每一个神经元只需要和上一层局部连接,相当于每一个神经元扫描一小区域,然后许多神经元合起来就相当于扫描了全局,这样就构成一个特征图(表示图像的某一维度的特征),n个特征图就提取了这个图片的n维特征,每个特征图是由很多神经元来完成的。

在卷积神经网络中,我们先选择一个局部区域(filter),用这个局部区域(filter)去扫描整张图片。 局部区域所圈起来的所有节点会被连接到下一层的一个节点上

计算机视觉领域的核心算法模型:卷积神经网络

卷积层

图片是一个矩阵,然后它的下一层也是一个矩阵,我们用一个filter从图片矩阵左上角到右下角滑动,每滑动一次,当然被圈起来的神经元们就会连接下一层的一个神经元,形成参数矩阵这个就是卷积核,当然每次滑动虽然圈起来的神经元不同,连接下一层的神经元也不同,但是产生的参数矩阵确是一样的,这就是权值共享。

卷积核会和扫描的图片的那个局部矩阵作用产生一个值,比如第一次的时候,(w1*0+w2*1+w3*4+w4*5),所以,filter从左上到右下的这个过程中会得到一个矩阵(这就是下一层也是一个矩阵的原因),具体过程如下所示:

计算机视觉领域的核心算法模型:卷积神经网络

卷积计算过程

上图中左边是图片矩阵,我们使用的filter的大小是3*3的,第一次滑动的时候,卷积核和图片矩阵作用(1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1)=4,会产生一个值,就是右边矩阵的第一个值,filter滑动9次之后,会产生9个值,也就是说下一层有9个神经元,这9个神经元产生的值就构成了一个矩阵,就是上图右图所示,这矩阵叫做特征图,表示image的某一维度的特征,当然具体哪一维度可能并不知道,可能是这个图像的颜色,也有可能是这个图像的轮廓等等。

以上就是单通道的图片的卷积处理,这里再总结一下,图片是一个矩阵,我们用指定大小的filter去左上角到右下角来滑动,每次滑动所圈起来的结点会和下一层的一个结点相连,连接之后就会形成局部连接,每一条连接都会产生权重,这些权重就是卷积核,所以每次滑动都会产生一个卷积核,因为权值共享,所以这些卷积核都是一样的。卷积核会不断和当时filter所圈起来的局部矩阵作用,每次产生的值就是下一层结点的值了,这样多次产生的值组合起来就是一个特征图,表示某一维度的特征。

卷积神经网络之激活层

上面就把卷积神经网络的中的卷积层讲解完了,它的核心就是在提取特征,下面讲解激励层的作用,激励层的作用可以理解为把卷积层的结果做非线性映射。

计算机视觉领域的核心算法模型:卷积神经网络

激活层

上面的f表示激励函数,常用的激励函数有几下几种:

我们先来看一下激励函数Sigmoid:导数最小为0,最大为1/4,

计算机视觉领域的核心算法模型:卷积神经网络

Sigmoid

Tanh(双曲正切):和sigmoid相比,它会关于x轴上下对应,不至于朝某一方面偏向

计算机视觉领域的核心算法模型:卷积神经网络

Tanh

ReLU(修正线性单元):收敛快,求梯度简单,较脆弱,左边的梯度为0

只要不是一条直线,那么就是非线性的。

计算机视觉领域的核心算法模型:卷积神经网络

ReLU

(Leaky ReLU);不会饱和/挂掉,不会'饱和'/挂掉,计算也很快,但是计算量比较大

计算机视觉领域的核心算法模型:卷积神经网络

Leaky ReLU

激活层将卷积层的线性计算的结果进行了非线性映射。可以从下面的图中理解。它展示的是将非线性操作应用到一个特征图中。这里的输出特征图也可以看作是'修正'过的特征图。如下所示:

计算机视觉领域的核心算法模型:卷积神经网络

激活层处理之后的图像

卷积神经网络之池化层

下面讲解池化层:降低了各个特征图的维度,但可以保持大部分重要的信息。

池化层夹在连续的卷积层中间,压缩数据和参数的量,减小过拟合,池化层并没有参数,它只不过是把上层给它的结果做了一个下采样(数据压缩)。

下采样有两种非常用的方式:

Max pooling:选取最大的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图中取出最大的元素,最大池化被证明效果更好一些。

Average pooling:平均的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图算出平均值

计算机视觉领域的核心算法模型:卷积神经网络

最大池化操作

上面就是max pool方式,使用的是2*2的步长为2的,这样操作可以降低我们特征图的维度。

计算机视觉领域的核心算法模型:卷积神经网络

池化

无论是max pool还是average pool都会有部分信息被舍弃,那么部分信息被舍弃后会损坏识别结果吗?

因为卷积后的Feature Map中有对于识别物体不必要的冗余信息,我们下采样就是为了去掉这些冗余信息,所以并不会损坏识别结果。

卷积神经网络之全连接层

到现在为止,我们已经从输入讲到了卷积层,激励层,池化层,这些层一起就可以从图像中提取有用的特征,并在网络中引入非线性,减少特征维度,同时保持这些特征具有某种程度上的尺度变化不变性。

最终的结果会作为全连接层的输入,下面我们来讲解一下全连接层。两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(前馈层)就可以用来将最后的输出映射到。 通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量,并送入全连接层配合输出层进行分类。比如,在下面图中我们进行的图像分类有四个可能的输出结果。

计算机视觉领域的核心算法模型:卷积神经网络

全连接层

总结

用一句话总结卷积神经网络就是:卷积神经网络就是让权重在不同位置共享的神经网络,它是计算机视觉领域的核心算法模型

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多