Advertisement

ImageNet Classification with Deep Convolutional Neural Network(AlexNet)

阅读量:

ImageNet Classification with Deep Convolutional Neural Networks

序言:

本文自2012年问世以来可被视为深度学习领域的重要成果之一。它同样由加拿大麦吉尔大学Hinton教授领导的人工智能团队发布,并且由此开创了卷积神经网络在图像处理领域的广泛应用。文中重点提出了一种包含五位卷积模块、三层全连接结构以及额外的三层池化单元的新架构设计。该模型采用了ReLU激活方案,并通过大量数据集训练取得了显著性能优势。这种网络架构被称为AlexNet(论文第一作者为Alex Krizhevsky)。

1.数据介绍

主要采用的数据集是ILSVRC-2010,它包含了1,200,000张training images、5,000张validation images以及15,000张test images。首先采用了统一分辨率(256×256)的方式对图片进行预处理,并对每一个训练样本进行了均值归零处理。

2.网络特点

(1)Relu Nonlinearity
使用Relu(non-saturating nonlinearity)作为激活函数取代传统的tanh和sigmoid(satiration nonlinearity)函数, 可以有效加快收敛速度和减少计算量,因为Relu:f(x)=max(0,x)更易于求导。
(2)Training on Multiple GPUs
受限于当时的算理使用了两块GTX 580 GPU,共6GB内存来计算,有效提高了计算速度和支持更复杂的网络。
(3)Local Response Normalization
在每一层的输出进行normalization,此方法已经被batch-normalization取代?
(4)Overlapping Pool
原理很简单,每个卷积层的运算可看做是一个pooling unit的网格,每个网格大小为z*z,stride=s。if s=z,这样每个pooling unit就不会有重合;if s<z,这样就会产生重合(overlapping)。对于一个pooling unit可能包含的像素只是有效信息的一部分,如果不重合下一个pooling unit里就会完全跳过上一个pooling unit,这样上一个pooling unit的有效信息就会被当前unit忽略掉,overlapping有效的避免了这个问题。如本文使用的就是s=2,z=3。

3.网络架构

(1)整体结构

整体架构

各层结构如下:
Input: [ m x227 x 227 x 3 ] (#images x width x height x #channels)
Conv1: [ 96 x 11 x 11 x 3/_{s=4}] (#filters x width x height x #channels)
Maxpool1: [ 3 x 3/_{s=2} ] (#filters x width x height x #channels)
Conv2: [ 256 x 5 x 5 x 48 /_{p=2} ] (#filters x width x height x #channels)
Maxpool2: [ 3 x 3/_{s=2} ] (#filters x width x height x #channels)
Conv3: [ 384 x 3 x 3 x 256 ] (#filters x width x height x #channels)
Conv4: [ 384 x 3 x 3 x 192 ] (#filters x width x height x #channels)
Conv5: [ 256 x 3 x 3 x 192 ] (#filters x width x height x #channels)
Maxpool3: [ 3 x 3/_{s=2} ] (#filters x width x height x #channels)
FC6: 4096 (#neural units)
FC7: 4096 (#neural units)
FC8: 1000 (#neural units)
Output: [ m x 1000 ] (#images x #classes)
(2) 架构展开(以一张图片作为输入为例):

架构展开

在本研究论文中提出了一种八层网络架构,并将其核心模块依次展开说明。其中输入图像的尺寸为224×224×3个通道,在实际应用中发现其尺寸应为227×227×3个通道。根据卷积运算的基本公式:

n_w^l=\frac{n_w^{l-1}-f^l+2p^l}{s^l}+1

n_h^l=\frac{n_h^{l-1}-f^l+2p^l}{s^l}+1

n_c^l=n_{filters}^{l}

其中n_w^l*n_h^l代表卷积后图像的空间维度乘积(单位数量),n_w^{l-1}*n_h^{l-1}代表卷积前图像的空间维度乘积(单位数量),fps分别表示卷积核的宽度、填充和步长参数的数量。根据上述公式推导可知:当n_w^{0}=n_h^{0}=227时才是正确的理论值。
此外,在实际计算过程中发现:
经过一次卷积操作后得到两个独立运行的结果(由两个GPU分别完成),随后再执行一次最大值池化操作得到最终结果。

Input

通过第一层计算产生的输出结果被传递给下一层操作作为输入,并接着经过一次卷积处理和maxpool池化操作后得到了13 x 13 x 128的结果。

Layer1

❤️. 同样的逻辑推导得出第三层的输出尺寸为13\times 13 \times 192。需要注意的是本层没有池化层。且由于GPU1和GPU2之间存在通信,因此箭头呈现交叉状态。值得注意的是,在该层采用了padding=SAME配置。因此输入与输出图像的尺寸保持一致

Layer3

该层仅执行一次卷积操作。值得注意的是,在此层中采用了padding=SAME策略。因此,输入与输出图像的尺寸保持一致。

Layer4

先执行卷积运算后应用SAME模式填充策略。随后进入池化层处理后将图像尺寸减半。最终输出结果为6×6×128的特征图。

Layer5

FC6层属于典型的全连接层结构,在神经网络模型中通常采用全连接层来处理信息传递过程。具体而言,在单GPU单输入条件下将上一层输出展平后作为当前层的输入(dense),这样当前层共有6×6×128= \texttt{6\times 6\times 128}个神经元作为当前全连接层的输入端口;而隐含层则包含2048个神经元单元,在这种情况下当前全连接层总共有6\times 6\times 128\times 2048 \times 4 =37,748,736$个参数(此处乘以系数4是因为每个输入都会被GPU重复计算两次)。当采用两个GPU并行计算时总参数数量将增加四倍。

Layer6

<7. 原理同上层一样,一共有2048x2048x4=16,777,216 个。

Layer7

<8. 同上,参数为2048x1000x2=4,096,000个。

Layer8

至此,AlexNet的网络结构已实现彻底分析。如需进一步了解相关信息,请参考原论文。

4.参考文献

1.ImageNet分类利用深度卷积神经网络
https://www.nvidia.cn/content/tesla/pdf/machine-learning/imagenet-classification-with-deep-convolution
2.《改进图像分类算法的研究与实现》
https://www.cnblogs.com/gongxijun/p/6027747.html
3.博客: chaipp0607的文章详细信息:改进图像分类算法的研究与实现

全部评论 (0)

还没有任何评论哟~