PyTorch深度学习入门 深度学习基础 2.7 卷积神经网络
PyTorch深度学习入门
文章目录
- PyTorch深度学习入门
- 深度学习基础
- 2.7 卷积神经网络
- 仿生模型
- 卷积
- 为什么卷积
- 池化
深度学习基础
2.7 卷积神经网络
在早期的图像识别研究中,使用人工提取的特征造成识别效果不佳。
卷积神经网络的出现给图像识别领域带来了崭新的风气,CNN 图像识别技术的正确率已经可以达到人类水平。
1. 仿生模型
20世纪60年代,神经科学家们发现猫的脑皮层所具有的独特网络结构可以有效地降低反馈神经网络的复杂性,研究结果显示:视觉系统的信息处理是分级的。
人体大脑分层处理的视觉原理如下图所示:
- 首先,光信号进入瞳孔(视网膜)
- 接着大脑皮层的初级视觉细胞(V1区) 对信号进行初步处理,发现图像的边缘和方向
- 然后进入下一层视觉细胞(V2区 )进行抽象,发现物体的形状。
- 最后在V4区 进一步抽象出物体的概念。
卷积神经网络模型的物体识别模仿了人脑视觉处理机制,采用分级提取特征的原理,每一级的特征均由网络学习提取,识别效果优于人工选取特征的算法。
在人脸识别过程中,最底层特征基本上是各方向上的边缘,越往上的神经层越能提取出人脸的局部特征( 如眼、嘴、鼻等) 最上层由不同的高级特征组合成人脸的图像。
该模型最早在1998年由 LeCun 提出并应用在手写字体识别上(MINST) ,LeCun 提出的网络称为LeNet,像下面这种
输入的手写字体图片经过两次卷积和池化,进入全连接层后分类输出10 种结果。
LeNet结构简单却完美地诠释了卷积神经网络的结构和其惊人的识别成效,被称为深度神经网络的“果蝇”。
在2012年的mageNet计算机视觉识别比赛中,卷积神经网络AlexNet以准确率领先第二名10%的显著差距获得了第一名。从此,大批计算机视觉科学家纷纷加人了卷积神经网络的研究当中,深度学习的热潮开始兴起。
2. 卷积
我们之前介绍的神经网络中,输入层被描述为一列神经元。
而在卷积神经网络中,把输入层看作二维的神经元。例如如果输入是像素大小为28x28 的图片,则可以看作28x28的二维神经元,它的每一个节点对应图片在这个像素点的灰度值。
在传统的神经网络中,我们将输入层的节点与隐含层的所有节点相连。
但是在卷积神经网络中,采用“局部感知”的方法,
如上图,将相邻的5x5 局部区域的输入节点连接到第一个隐含层的每一个神经元节点上。
我们把相邻的5×5局部区域内的输入节点连接到了第一个隐含层的一个节点上。这个相邻的区域,我们称为局部感知域,可以把它看成是一个小窗口,我们也称之为过滤器。
如果在整个输入图像上滑动这个过滤器,
对于每一个过滤器,都有一个隐含层的神经元与之对应。
以此类推后,我们就可以构建出第一个隐含层,在这里栗子中,输入是28x28,使用5x5 的过滤器,那么第一个隐含层的大小为24x24。当然这是滑动单位为1像素的情况,也可以不止1像素,这个滑动值也称为步长。
在卷积神经网络中,这种隐含层称为 “特征图”。
在进行卷积操作之前,需要定义一个过滤器,其中的每一格都有一个权重值。
卷积的过程是将每个格子中的权重值与图片对应的像素值相乘并累加,所得到的值就是特征图中的一个像素值。如下图所示,
我们对过滤器和卷积进行一个比较具体而详细的说明。假设我们输入的是5×5的图片,过滤器可以看作一个小窗口,这个小窗口大小是3×3,里面包含了9个权重值,我们将9个权重值分别与输入的一部分像素值相乘后进行累加,这个过程被称为“卷积”。
图中小窗口覆盖的输入区域卷积结果是隐含层的灰色部分,结果为2。隐含层的结果就是我们通过卷积生成的特征图。
而且可以发现,即便步长为1,经过卷积之后的特征图尺寸也会缩小。
由于过滤器在移动到边缘的时候就结束了,中间的像素点比边缘的像素点参与计算的次数要多。因此越是边缘的点,对输出的影响就越小,我们就有可能丢失边缘信息。【确实】为了解决这个问题,我们进行填充,英文叫padding,即在图片外围补充一些像素点,并将这些像素点的值初始化为0。
3. 为什么卷积
在传统全连接的神经网络中,如果要对一张图片进行分类,连接方式如下图所示。
我们把一张大小为100×100的图片的每个像素点都连接到每一个隐含层的节点上,如果隐含层的节点数为10000,那么连接的权重总数则为 1 0 8 10^8 108 个。当图片像素更大,隐含层的节点数目更多时,则需要更加庞大的权重数目。
在卷积神经网络中,不再需要如此庞大的权重数目。如下图所示,
在利用10×10的过滤器对100×100的原图进行卷积时,该过滤器在不断滑动的过程中对应生成一张特征图,即一个过滤器(100个权重值)可对应一张特征图。如果我们有100张特征图,则一共只需要 1 0 4 10^4 104 个权重值。
如此一来,在一个隐含层的情况下,卷积神经网络的权重数目可以减小至全连接神经网络权重数目的一万分之一,大大减少计算量,提高计算效率。
在实际训练的过程中,第一层的每一个过滤器的权重值会不断地被更新优化,最终形成如下图所示的结果,
每个过滤器的可视化纹理模式基本上反映了各个方向上的边缘特征。上图为我们展示了24个过滤器的纹理模式,这24种边缘可以描绘出我们的原图。
4. 池化
池化的目的是降低数据的维度,过程很简单,实际上就是下采样。具体过程如下图所示,
假如特征图的尺寸是8×8,池化的窗口为4×4,则对特征图按照每4×4进行一次采样,生成一个池化特征值。这样一来,8×8的特征图可以生成一个2×2的池化特征图。
在实际应用中,生成池化特征的方式一般有两种:最大值池化(Max-Pooling)与平均值池化(Mean-Pooling)。其中,最大值池化的方法是将特征图中池化窗口范围内的最大值作为池化结果的特征值,过程如下图所示;
平均值池化的方法是将特征图中池化窗口范围内的所有值进行平均后作为池化的特征值。
还没有评论,来说两句吧...