简介
LeNet-5是一个较简单的经典卷积神经网络。下图显示了其结构:输入的二维图像,先经过两次卷积层与池化层,再经过全连接层,最后使用softmax分类作为分类输出层。
这个网络虽然很小,但是它包含了深度学习的基本模块:卷积层,池化层,全连接层。是其他视觉检测深度学习模型的基础。同时,通过实例分析,加深对与卷积层和池化层的理解。
LeNet-5 共有7层,不包含输入,每层都包含可训练参数;每个层有多个FeatureMap,每个FeatureMap通过一种卷积滤波器提取输入的一种特征,每个FeatureMap有多个神经元。
具体结构
1、INPUT层-输入层
首先是数据 INPUT 层,输入图像的尺寸归一化为 32x32。
注意:这不算 LeNet-5 的网络结构,传统上,不将输入层视为网络层次结构之一。
2、C1层-卷积层
- 输入图片:32x32
- 卷积核大小:5x5
- 卷积核种类:6
- 输出featuremap大小:28x28 (32-5+1)=28 (输入大小 - 卷积核大小 + 1)
- 神经元数量:28x28x6
- 可训练参数:(5x5+1)x6(每个滤波器5x5=25个unit参数和一个bias参数,一共6个滤波器)
- 连接数:(5x5+1)x6x28x28=122304
对输入图像进行第一次卷积运算(使用 6 个大小为 5x5 的卷积核),得到 6 个C1特征图(6个大小为 28x28 的 feature maps)。卷积核的大小为5x5,总共就有6x(5x5+1)=156个参数,其中+1是表示一个核有一个bias偏置。对于卷积层C1,C1内的每个像素都与输入图像中的 5x5 个像素和1个bias有连接,所以总共有1562828=122304个连接(connection)。有122304个连接,但是我们只需要学习156个参数,主要是通过权值共享实现的,也就是一个卷积核对应与一个特征。
3、S2层-池化层(下采样层)
- 输入:28x28
- 采样区域:2x2
- 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。
- 采样种类:6
- 输出featureMap大小:14x14(28/2)
- 神经元数量:14x14x6
- 可训练参数:2x6
- 连接数:(2x2+1)x6x14x14
- S2中每个特征图的大小是C1中特征图大小的1/4。
第一次卷积之后紧接着就是池化运算,使用 2x2核 进行池化,得到 6 个 14x14 的特征图(28/2=14)。S2这个pooling层是对C1中的2x2区域内的像素求和乘以一个权值系数再加上一个偏置,然后将这个结果再做一次映射。于是每个池化核有两个训练参数,所以共有2x6=12个训练参数,有 5x14x14x6=5880个连接。
目前还有许多种池化的方法,各有不同使用效果。
4、C3层-卷积层
- 输入:14x14xS2中所有6个或者几个特征map组合
- 卷积核大小:5x5
- 卷积核种类:16
- 输出FeatureMap大小:10x10 (14-5+1)=10
第一次池化之后是第二次卷积,第二次卷积的输出是C3,16个10x10的特征图,卷积核大小是 5x5. 我们知道S2 有6个 14x14 的特征图,怎么从6 个特征图得到 16个特征图了? 这里是通过对S2 的特征图特殊组合计算得到的16个特征图。具体如下:
C3的前6个feature map(对应上图第一个红框的6列)与S2层相连的3个feature map相连接(上图第一个红框),后面6个feature map与S2层相连的4个feature map相连接(上图第二个红框),后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。则:可训练参数:6x(3x5x5+1)+6x(4x5x5+1)+3x(4x5x5+1)+1x(6x5x5+1)=1516。连接数:10x10x1516=151600
C3与S2中前3个图相连的卷积结构如下图所示:
上图对应的参数为 3x5x5+1,一共进行6次卷积得到6个特征图,所以有6x(3x5x5+1)参数。 为什么采用上述这样的组合了?论文中说有两个原因:1)减少参数,2)这种不对称的组合连接的方式有利于提取多种组合特征。
5、S4层-池化层(下采样层)
- 输入:10x10
- 采样区域:2x2
- 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
- 采样种类:16
- 输出featureMap大小:5x5(10/2)
- 神经元数量:5x5x16=400
- 可训练参数:2x16=32
- 连接数:16x(2x2+1)x5x5=2000
- S4中每个特征图的大小是C3中特征图大小的1/4
S4是pooling层,窗口大小仍然是2x2,共计16个feature map,C3层的16个10x10的图分别进行以2x2为单位的池化得到16个5x5的特征图。这一层有2x16共32个训练参数,5x5x5x16=2000个连接。连接的方式与S2层类似。
6、C5层-卷积层
- 输入:S4层的全部16个单元特征map(与s4全相连)
- 卷积核大小:5*5
- 卷积核种类:120
- 输出featureMap大小:1x1(5-5+1)
- 可训练参数/连接:120*(16x5x5+1)=48120
C5层是一个卷积层。由于S4层的16个图的大小为5x5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1。这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x16+1)x120 = 48120个参数,同样有48120个连接。C5层的网络结构如下:
7、F6层-全连接层
- 输入:c5 120维向量
- 计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出。
- 可训练参数:84*(120+1)=10164
详细说明:6层是全连接层。F6层有84个节点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。该层的训练参数和连接数是(120 + 1)x84=10164。ASCII编码图如下:
F6层的连接方式如下:
8、Output层-全连接层
Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:
上式的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84x10=840个参数和连接。
总结
- LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络。
- 卷积神经网络能够很好的利用图像的结构信息。
- 卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定。
评论区