2012年ImageNet图像分类大赛冠军AlexNet网络结构解析
一、AlexNet
1.AlexNet结构简介
AlexNet层数变多了,LeNet5不加输入层共7层,不严格讲它已经有11层了。
AlexNet有八个带权层,前五个是卷积层,剩下三层是全连接层。第一个卷 积层利用96个大小为11X11X3、步长为4个像素的核,对大小为224X224X3的输入图像进行卷积。第二个卷积层接收第一个卷积层输出为输入,用 5X5X48的核对其进行滤波。第三、四、五个卷积层彼此相连,中间没有池 化层。第二、四、五个卷积层的核只连接到前一个卷积层也位于同一GPU中 的那些核映射上。第三个卷积层的核被连接到第二个卷积层中的所有核映 射上。全连接层中的神经元被连接到前一层中所有的神经元上。响应归一 化层跟在第一、第二个卷积层后面。最大化池化层跟在响应归一化层以及 第五个卷积层之后。ReLU非线性应用于每个卷积层及全连接层的输出。
2.AlexNet优势何在?
01卷积池化并行化 输入图像像素为224×224 把同一层的卷积池化拆成两块,每一块在一个GPU上跑 第一层用的11×11的大卷积对原始图做卷积, 第一层96通道分为两组,每48个放到一个GPU上面,每一个卷积核对上一层输入做卷积核是独立。
02激活函数 激活函数是relu,比饱和函数训练速度更快。 03防止过拟合 避免过拟合采用数据增强与dropout防止过拟合 04GPU加速 采用GPU实现,并行化进行模型训练,在每个GPU放置一半的核。
二、AlexNet结构大解析
1.第一层卷积
输入层是224×224×3的图像,Padding后变为227×227
-
第一层使用96个11×11×3的卷积核,步长为4,卷积核个数为96所以输出图像通道数为96,输出的是55×55×96的图像 -
输出图像尺寸计算:(227-11)/4+1=55 -
ReLU:55×55×96的输入图像经过relu激活输出仍为55×55×96 -
重叠池化:55×55×96通过3×3的池化核,步长为2的池化操作后输出图像为27×27×96 -
(55-3)/2+1=27 -
局部响应归一化后仍是27×27×96 -
96个特征图分为两组,各自在一个独立的GPU上进行运算 -
输入层的节点总数为224×224×3=150528 -
第一个卷积层与输入层之间的连接数目: 卷积后的特征图中每个神经元与11×11×3的卷积块相连,每个神经元的参数数目为363+1个偏置 第一个卷积层的参数数目:特征图内共享参数:11×11×96+96=34848+96=34944 卷积层的参数 = 卷积核大小 x 卷积核的数量 第一个卷积层节点数量:55×55×48×2=290400
输入图像通道数等于卷积核的通道数,输出图像的通道数等于卷积核的数量
2.第二层卷积
96个特征图分为两组一组各48个,因此输入图像为27×27×48
-
每组的27×27×48的输入图像各使用128个5×5×48的卷积核,Padding为2+2,步长为1进行卷积操作后输出图像大小为27×27×128 -
卷积后输出图像计算:(27+4-5)+1=27 -
ReLU:27×27×128的输入图像经过relu激活输出仍为27×27×128 -
重叠池化:27×27×128的图像经过3×3的池化核,步长为2的池化后,输出图像大小为13×13×128 -
池化后输出图像计算:(27-3)/2+1=13 -
局部响应归一化后仍是13×13×128 -
特征图分为两组,各自在一个独立的GPU上进行运算 第二个卷积层参数数目:(5×5×48×128+128)×2=307456 卷积层的参数 = 卷积核大小 x 卷积核的数量 第二个卷积层节点数量: 只跟同一个GPU的上一层连接,节点数量=27×27×128×2=186624
3.第三、四、五层卷积:
以一个GPU来分析:
- 第三层卷积:输入图像Padding在周围填充一圈零变为15×15,15×15×128的图像使用卷积384个3×3×256的卷积核,步长为1卷积后输出图像为13×13×192
第三层参数数量:3×3×256×384+384=885120 第三层节点数目:13×13×192×2=64,896 - 第四层卷积:13×13×192的图像输入图像Padding在周围填充一圈零变为15×15,使用卷积384个3×3×192的卷积核,步长为1卷积后输出图像为13×13×192
第四层参数数量:(3×3×192×192+192)×2=663936 第四层节点数目:13×13×192×2=64896 - 第五层卷积: 13×13×192的图像输入图像Padding在周围填充一圈零变为15×15,使用卷积256个3×3×192的卷积核,步长为1卷积后输出图像为13×13×128
第五层参数数量:(3×3×192×128+128)×2=442624 第五层节点数目:13×13×128×2=43264
4.最后三层是全连接层
- 第六层全连接层:节点数为4096,参数量为(6×6×128×2)×4096+4096 = 37752832
- 全连接层的参数数量 = 上一层节点数量(pooling之后的) x 下一层节点数量 + 偏置数量(即下一层的节点数量)
- 第七层全连接层:节点数量为4096,参数量为4096×4096+4096=16781312
- 第八层全连接层:节点数量为1000,参数量为4096×1000+1000=4097000
最后回顾一下AlexNet的结构吧
|