全面深入理解卷积神经网络与LeNet 5 的结构

全面深入理解卷积神经网络与LeNet 5 的结构

  • 一、卷积神经网络的起源
    • 1.与传统神经网络相比,卷积的优势何在
    • 2.感受野机制
  • 二、如何实现感受野?
    • 1.什么叫卷积呢?
  • 三、如何实现图像的卷积?
    • 1.卷积的特征:
    • 2.卷积操作示例:
    • 3.步长
    • 4.Padding(填充)
    • 5.特征图大小计算
    • 6.不同方向的卷积
    • 7.彩色图像如何编码呢?
  • 四、卷积神经网络计算-池化
    • 1.最大池化:
    • 2.平均池化:
  • 六、Lenet5框架结构分析
    • 1.输入层——卷积层C1
    • 2.卷积层C1 ——池化层S1
    • 3.池化层S1——第二个卷积层C2
    • 4.第二个卷积层C2——第二个池化层S2
    • 5.全连接层与输出层

一、卷积神经网络的起源

卷积神经网络起源于上世纪九十年代Yann LeCun提出的Lenet5,卷积神经网络可用于目标检测、交通流量检测,还可用于人口密度测算,在医学上面,卷积神经网络可用于辅助诊断,在图像的语义分析方面卷积也是一个重要的算法,需要我们把图像中不同的物体用不同的颜色区分出来,是基于像素级的分析。

1.与传统神经网络相比,卷积的优势何在

前馈神经网络因为层与层之间是全连接的结构,当隐层较多时参数量很多,整个网络计算量很大,卷积神经网络采用局部连接模式很好的解决了这一问题。

2.感受野机制

神经元所影响的刺激区域称为感受野,不同神经元感受野的大小和性质都不同
研究表明:有些细胞对处于某一角度上的线条、垂直线条、直角或明显的边缘线都有特别的反应,直线的朝向只能落在一个很小的角度范围里即细胞的感受野内。

二、如何实现感受野?

如何用数学的方法实现感受野呢?在信号学中有一个卷积可以实现感受野机制。

1.什么叫卷积呢?

卷积操作简单地说就是相乘相加。
卷积主要是对两个函数的一种运算,假设我们有f函数和g函数
可以分为连续函数和离散函数

  • 连续函数的卷积公式
    y = f ∗ g = ∫ − ∞ + ∞ f ( x ) ⋅ g ( n − x )   d x y=f*g=\int_{-\infty}^{+\infty} f(x)\cdot g(n-x)\, \text dx y=fg=+f(x)g(nx)dx
    解释:f函数对g函数做卷积,实际上是一个先相乘后积分的过程 ,高数中我们学过对一个函数做积分实际上表示函数对应曲线下边的面积
    示意图:
    全面深入理解卷积神经网络与LeNet 5 的结构_第1张图片

图中有f函数,g函数,我们首先对g函数做一个反转,再平移 n 个单位长度,再和 f 函数相乘,最后求积分实际上就是求相乘后图像的面积。平移可以每次平移一个步长也可平移多个步长。
从卷积公式可以看出最后的输出y是步长n的函数,f 函数与g函数的乘积实际上就是两函数相交部分的面积。
随着平移的进行,我们可以看到两函数图像的交集是一个从开始的零到相交部分取得最大值,再由最大值减少为零的过程。当g函数全部落在正方形内时达到最大值。

  • 离散函数的卷积公式:
    y ( n ) = f ( m ) ⋅ g ( n − m ) = ∑ m = − ∞ + ∞ f ( m ) ⋅ g ( n − m ) = ∑ m = − ∞ + ∞ g ( m ) ⋅ f ( n − m ) y(n)=f(m)\cdot g(n-m)=\sum_{m=-\infty}^{+\infty}f(m)\cdot g(n-m)=\sum_{m=-\infty}^{+\infty}g(m)\cdot f(n-m) y(n)=f(m)g(nm)=m=+f(m)g(nm)=m=+g(m)f(nm)
    示意图:
    全面深入理解卷积神经网络与LeNet 5 的结构_第2张图片
    从图中我们可以很好地理解卷积的作用,就是把原图的特征提取出来。

三、如何实现图像的卷积?

图像的编码:将图像生成灰度图
灰度图;把图形的每一个像素点用对应的灰度值表示出来。每一个像素点都对应一个位置。
灰度图的编码就是一个 f 函数,想要获得图的特征,我们需要找一个 g 函数(核函数)做为滤波器提取图像的特征。
如下图,在卷积动画中,一般来说经卷积操作后图像会变小。

1.卷积的特征:

特征保留:卷积保留原始图像的特征
特征变少:经卷积后得到的图像比原来的图像小
全面深入理解卷积神经网络与LeNet 5 的结构_第3张图片

2.卷积操作示例:

卷积核一般比较小,如3×3,5×5,7×7
现在的算法都是用小卷积,多深度。这样可以把特征获取得更全。
全面深入理解卷积神经网络与LeNet 5 的结构_第4张图片
从图中可看到,3×3的像素图经卷积操作后是1个像素,卷积的本质就是压缩图像。

3.步长

卷积操作还要平移,每次移动一个步长,相应两个函数对应区域相乘相加,移动的时候可从左往右再从上往下,整个图像都经过卷积后原来5×5的图像变成一个3×3的特征图。全面深入理解卷积神经网络与LeNet 5 的结构_第5张图片

4.Padding(填充)

在上述卷积操作中,图像边缘的部分只是做一次操作,可能会损失图像的边缘特征,这就引入了Padding操作,也就是补零。
全面深入理解卷积神经网络与LeNet 5 的结构_第6张图片
通过Padding操作,很好的保留了原图的边缘特征。

5.特征图大小计算

新的特征图大小如何计算?
计算公式如下:
n o u t = ⌊ n i n + 2 p − f s + 1 ⌋ n_{out}=\lfloor\frac{n_{in}+2p-f}{s}+1\rfloor nout=snin+2pf+1
式中nin表示输入图像的大小;p表示Padding;f 表示卷积核的大小;s表示步长,步长是以像素为单位的。根据这个公式,我们可以很容易求出经过卷积后的特征图的大小。
如上边例子中,我们输入的是5×5的图像,Padding为1,步长 s 为1,卷积核是3×3的,那么输出的就是5×5的特征图。
n o u t = ⌊ 5 + 2 − 3 1 + 1 ⌋ = 5 n_{out}=\lfloor\frac{5+2-3}{1}+1\rfloor=5 nout=15+23+1=5

6.不同方向的卷积

如果我们想获得水平方向的特征,我们可以使用卷积核(1),该滤波器的特征是水平方向有一行全为1,其余方向全为零;可以很好地把水平方向的特征提取出来,把其他方向的特征隐去。
如果我们想获得垂直方向的特征,我们可以使用卷积核(2),该滤波器的特征是垂直方向有一列全为1,其余方向全为零,从而很好地吧垂直方向的特征提取出来,吧其余方向的特征隐去;
当然,也可以获得其他方向的特征,如45度角方向,我们可以使用卷积核(3),该卷积核的特征是斜向上45度对角线全为1,其余方向全为零。
全面深入理解卷积神经网络与LeNet 5 的结构_第7张图片
由此可知,同一张图我们可以使用不同的卷积核获取不同方向的特征。

7.彩色图像如何编码呢?

基于三基色原理,任何一种颜色我们都可以通过红蓝绿三种颜色暗一定比例调出来,图像上的任意一个像素都可以分解成RGB三个值,我们就可以用三个矩形,一个张量来表示图像。
对于彩色图像如何进行卷积呢?
会用到多通道卷积。所谓多通道卷积就是用是哪个卷积核分别对图像像素点的RGB三个矩阵作卷积得到三个同样大小的特征图,最后将这三个特征图对应像素值相加合成一个特征图。
全面深入理解卷积神经网络与LeNet 5 的结构_第8张图片

四、卷积神经网络计算-池化

池化也叫下采样,通常和卷积配对使用。池化实际上就是对图像进一步的压缩将图像最重要的特征保留下来。
常用的池化方法有两种:

1.最大池化:

把特征图分块后,取其中像素的最大值最为输出。

2.平均池化:

把特征图分块后,计算每一小块所有像素值的平均值作为输出。

全面深入理解卷积神经网络与LeNet 5 的结构_第9张图片

六、Lenet5框架结构分析

1998年,LeCun提出LeNet,并成功应用于手写数字识别,测试误差小于1%。
这个网络看起来很像传统神经网络,但实际上它的结构发生了很大的变化。

1.输入层——卷积层C1

全面深入理解卷积神经网络与LeNet 5 的结构_第10张图片
从输入层到第一个卷积层,卷积层到池化层它的就结构都发生了很大变化。
输入层:32×32灰度图像(28×28),周围有两个填充像素。
卷积的目的是为了实现感受野,它是不提倡使用全连接的,而是使用了6个5×5的卷积核提取图像的特征,继而得到6个通道的28×28的特征图。
在输入层与第一个卷积层之间我们用了共享权重。
所谓“共享权重”就是指同一个卷积核对图像不同位置进行特征提取时所作的卷积操作的权重是一致的,输入层原图的每个5×5的像素对应隐层的一个神经元,因为卷积核是一样的所以输出的神经元的偏置也是一样的。
全面深入理解卷积神经网络与LeNet 5 的结构_第11张图片
参数计算:
LeNet 结构输入层与第一个卷积层,使用的深度为6,即学习6个不同的内核,一次第一个卷积层C1的输出为6×28×28。
每个内核具有5×5=25个权重,(外加一个偏置项,因此实际上是26个参数),权重总数=6×26=156。
传统神经网络是全连接的,LeNet5网络结构由于共享权重大大减少了参数的数目。
紧接着就是池化
池化的目的是进行特征图的压缩,用的是2×2的池化可以得到14×14的特征图,特征图变小了,特征图的编码压缩了。

2.卷积层C1 ——池化层S1

池化单元大小为2×2,得到6个14×14的特征图
全面深入理解卷积神经网络与LeNet 5 的结构_第12张图片仅仅一对卷积+池化是不够的,因此又来了一对卷积池化操作

3.池化层S1——第二个卷积层C2

全面深入理解卷积神经网络与LeNet 5 的结构_第13张图片
上一层6个通道如何转换成16个通道呢?
6个通道14×14的特征图转换成了16个通道10×10 的特征图。
全面深入理解卷积神经网络与LeNet 5 的结构_第14张图片

  • 如上图所示:6个通道为0~5,16个通道0 ~15它们之间的对应关系如下:第一个卷积核分别对0,1,2三个特征图做卷积得到相应的三个个特征图,然后累加成一个特征图;其他的对应关系以此类推;
  • 从上图可以看出1个卷积核对3个特征图做卷积有6种情况;
  • 一个卷积核对4个特征图做卷积得到4个新的特征图然后再做累加会得到第七个特征图。一对四是从6~14的9种情况;
    一个卷积核对6个特征图做卷积得到5个新的特征图然后再做累加会得到第16个特征图。
    上述==一个卷积核对应多个通道。==的物理含义是用更多的通道获得更多的特征,并且用同一个卷积核对上一层次的多个通道先做卷积再融合,通过这种特征之间的融合可以获得更丰富的特征。
    C2与S1参数计算:
    参数计算中5×5×3表示的是一个卷积核对是3个特征图做卷积操作;5×5×4表示的是一个卷积核对是4个特征图做卷积操作;5×5×6表示的是一个卷积核对是6个特征图做卷积操作;

全面深入理解卷积神经网络与LeNet 5 的结构_第15张图片

4.第二个卷积层C2——第二个池化层S2

全面深入理解卷积神经网络与LeNet 5 的结构_第16张图片
S2与C2参数计算
全面深入理解卷积神经网络与LeNet 5 的结构_第17张图片
C2与S2之间的连接:

  • 连接
    C2中10×10的特征图通过2×2的池化核变为5×5的特征图,S2层的一个通道对应的连接为(2×2+1)×16×(5×5)=2000个,计算思路如下:共16个通道,S2层一个通道是5×5=25个像素,每个像素对应C2层4个连接+一个偏置。
  • 参数:
    层与层之间权重和偏置都是共享的,C2中2×2的区域通过卷积映射到下一层只有一个像素,所以权重只有一个,再加上一个偏置,即一个通道参数为2,一共16个通道所以参数数目为32个。
    以上就是LeNet5两层卷积+池化的特征提取。

5.全连接层与输出层

获得特征后如何分类呢? LeNet5有两层全连接层,两层相比一层映射更加充分,与传统前馈神经网络一样,做拟合和映射工作。
全连接层与池化层S2的连接
全面深入理解卷积神经网络与LeNet 5 的结构_第18张图片

将S2层的特征图(矩形编码)进行“拉直”操作,所谓“拉直”就是将矩形的编码第二行放在第一行后面拉直成一个向量,16个通道的矩形首尾相连组成一个大的向量。
第一个全连接层有120个神经元,第二个全连接层有84个神经元,输出层有10个。

LeNet 5 特殊的地方主要在于隐层层数加深了,层与层之间不再是全连接,而是卷积池化的局部连接,参数个数大大减少了。

你可能感兴趣的:(图像识别,深度学习,LeNet,5,卷积神经网络,手写体识别)