【深度学习】(4)--卷积神经网络

文章目录

卷积神经网络

卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,特别适用于处理具有网格结构的数据。主要目的是自动地、层次化地从原始数据中学习有效的特征表示,以完成特定的任务,如图像识别、分类、检测、分割等。

一、画面不变性

什么是画面不变性呢?我们知道一个物体,不管将其如何变换旋转 都能够将其识别为同一个物体 ,这就是画面不变性。比如:

不管上图中物体如何的变换,我们都希望所建立的网络可以尽可能的满足这些不变性特点。

二、图像识别

我们知道传统的神经网络,训练时会将图形展开,使得在训练时网络模型的记忆比较刻板,比如下图中,我们进行训练时让神经网络记住正确的目标,但是当正确的图形变换一个位置时就无法识别了。

那么对于传统神经网络该怎么解决这个问题呢?

解决办法是:用大量物体位于不同位置的数据训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。

这是不是需要花费很大很大的数据采集以及计算空间呢?让我们来看看卷积神经网络是如何做的。

三、卷积网络

结构

卷积神经网络的结构:由输入层、卷积层、激活层、池化层、全连接层、输出层组成。

1. 原理

类比自然界的动物,不同的物种有自己独有的特征 ,比如小狗的叫声是"汪汪汪~",小猫是"喵~",这就是这两个动物的区别,我们人类也可以通过这种方法来区分二者。

同样的,卷积神经网络也是同样的道理,卷积网络将图片划分出几个特征点,在识别图片时,找寻图片中是否有符合特征点的信息。

比如上图中,卷积网络如何将右边手写的"x"图片识别成x?

将标准的x图片划分出三个特征,x图片由上方的三个小部分组成,手写"x"图片中有包含第二部分的特征,没有另外两部分特征,那这我们怎么判断它到底是还是不是呢?

就像是每个动物都有自己重要的特征,我们可以通过调整 三个部分特征的权重,来决定所识别的图片是否是x图片。

所以,综上所述:卷积就是 对图像(不同的数据窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

2. 卷积层

  • 卷积操作

卷积操作中需要注意的:

  1. 步长stride:每次滑动的位置步长。
  2. 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数以及滤波器的个数。
  3. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。

对于卷积层,可以形象的将卷积核当作是每个人的眼睛,每个眼睛都能得到一个特征图,不同的眼睛(卷积核)看到的图片是不一样的,这样我们就能得到多个不同的特征图。

  • 寻找目标特征

我们都知道卷积是通过与卷积核的内积得到特征图,但是,我们如何精准的找到卷积出来的特征图是不是我们的目标呢?

以鸢尾花为例:

我们的目标是识别图片中的花朵是不是鸢尾花,那我们卷积时寻找的特征图,当然得是关于鸢尾花的特征,尽量减少其余噪声的影响。这就要通过调整卷积核中的参数来调整特征目标:

一开始的卷积核是随机的,在最后的结果中同正确结果做比对,如果有误差,再返回卷积层中,更新调整卷积核的参数重新计算特征图,使得最后的特征图是目标特征。

  • 特征图计算

计算图片经过卷积后获得的特征图大小。

3. 池化层

  1. 池化层的作用

一种降采样,减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。

  1. 常见的池化层

最大池化、平均池化、全局平均池化、全局最大池化。

平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。

最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。

通常来说,CNN的卷积层之间都会周期性地插入池化层。

  • 我们偏常用的池化方法是最大池化,最大池化的原理分析:

最大池化的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的特征图中有对于识别物体不必要的冗余信息。

观察上图,我们之前就提到过,卷积神经网络可以将不同位置的相同物体给识别成同一个物体,在这里就给体现出来了。我们看到第一行三个图片中,目标物体(黑色标注)在图片的不同位置,它们经过卷积之后,得到了第二行的三个特征图,我们再将特征图进行最大池化,发现池化后的压缩结果都为3,将其识别为了同一个特征,其余的噪声影响都被处理了。

  1. 池化层操作方法

与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。

4. 全连接层

当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。

四、感受野

在卷积神经网络中,感受野 (Receptive Field)是一个核心概念,它指的是网络中每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。换句话说,感受野描述了某一层神经元所"看到"的输入图像的区域范围。

例如图片是3通道:

卷积核为3个7 x 7的,则卷积核所需要的参数个数为:3 x (3 x 7 x 7)=441个

卷积核为3个3 x 3的3层,则卷积核所需要的参数个数为:3 x (3 x 3 x 3)+3 x (3 x 3 x 3) +3 x (3 x 3 x 3) =243个

同样的效果,后者需要调整的参数更小,自然使用后者更好啦!

总结

本篇介绍了卷积神经网络的结构以及它的优点:

  1. 卷积神经网络能够将变换的物体识别出来。
  2. 卷积神经网络的结构:由输入层、卷积层、激活层、池化层、全连接层、输出层组成。
  3. 什么是感受野。
相关推荐
tekin10 分钟前
macos tcl-tk python图形库软件包安装 port 和brew 包管理工具安装方法和使用总结
python·macos·tcl·tk·tcl-tk·python-tk
goodmao11 分钟前
【macOS】【zsh报错】zsh: command not found: python
开发语言·python·macos
xuehaishijue18 分钟前
江上场景目标检测系统源码分享
人工智能·目标检测·计算机视觉
立黄昏粥可温37 分钟前
Python 从入门到实战24(类的继承)
开发语言·python
丕羽38 分钟前
【Python数据分析】pandas apply自定义函数+分组操作+分析案例
python·数据分析·pandas
Hello.Reader1 小时前
深度学习经典模型解析
人工智能·深度学习
谷隐凡二1 小时前
python中ocr图片文字识别样例(一)
开发语言·python·ocr
Fiona.y1 小时前
梯度计算中的一些算子
图像处理·python·opencv·计算机视觉