ImageNet Classification with Deep Convolutional Neural Networks

序言:

  本篇文章于2012年发表,是近年来深度学习领域的代表之作,同样是由多伦多大学G.Hinton大神领导的人工智能小组发表,从此引发了卷积网络在图像领域应用的高潮。 本文主要提出了一个8层的深度神经网络,包括5层卷积层和3层连接层,以及三个池化层(不计入总层数),并且使用Relu作为**函数,取得了优异的效果,这种网络架构被称为AlexNet(论文一作是Alex Krizhevsky)

1.数据介绍

  文章主要用到的数据集是ILSVRC-2010,包括1.2million张training images,5000张validate images以及15000张test images。首先对图片处理取一个固定的分辨率256X256,然后对每个训练样本都进行了零均值处理。

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

3.网络架构

(1)整体结构
ImageNet Classification with Deep Convolutional Neural Networks
各层结构如下:
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) 架构展开(以一张图片作为输入为例):
ImageNet Classification with Deep Convolutional Neural Networks
这是本篇论文八层网络架构的核心,接下来一层一层介绍:
<0. 输入图片大小为227x227x3(width x height x number_channels),论文中写的是224x224x3,但是如果按照卷积变换公式:

nwl=nwl1fl+2plsl+1

nhl=nhl1fl+2plsl+1

ncl=nfiltersl

其中:nwlnhl 是图像卷积后的size,nwl1nhl1是卷积前图像的size,fps分别代表卷积核的filter size,padding和stride,nfilters代表卷积层用的卷积核的总个数。按公式推断的话,224是不正确的,应为227。
<1.输入图像经过一次卷积和一次maxpool池化得到了2个27 x 27 x 48的输出,分为由两个GPU单独计算,具体计算过程参照上面卷积计算的三个公式。
ImageNet Classification with Deep Convolutional Neural Networks
<2. 经过第一层的计算得到的输出,作为下一层运算的输入,然后同样经过一次卷积 和maxpool池化得到13 x 13 x 128的输出。
ImageNet Classification with Deep Convolutional Neural Networks
<3. 同样的道理得到第三层的输出为13 x 13 x 192,注意本层没有池化层,且GPU1和GPU2有通信,所以箭头有相交,注意这里用了padding=SAME,所以输入输出图像大小不变。
ImageNet Classification with Deep Convolutional Neural Networks
<4. 第四层同样只计算一次卷积运算,注意这里用了padding=SAME,所以输入输出图像大小不变。
ImageNet Classification with Deep Convolutional Neural Networks
<5. 先经过卷积,padding=SAME,然后经过池化层,图像大小减半,最终得到6 x 6 x 128x2 的输出。
ImageNet Classification with Deep Convolutional Neural Networks
<6. FC6, 全连接层,也就是普通的神经网络层。先把上一层的输出全部展开(dense)一共得到6 x 6 x 128 (以单GPU单输入为例)个神经元作为当前的输入层, 隐层为2048个神经元,这样在当前全连接层的总的参数的个数为6x6x128x2048x4=37,748,736(这里x4是因为每个输入都被GPU计算了两次,有两个GPU),相比一共60million的参数,第一个全连接层占据了大多数。
ImageNet Classification with Deep Convolutional Neural Networks
<7. 原理同上层一样,一共有2048x2048x4=16,777,216 个。
ImageNet Classification with Deep Convolutional Neural Networks
<8. 同上,参数为2048x1000x2=4,096,000个。
ImageNet Classification with Deep Convolutional Neural Networks

到此,AlexNet的网络结构就已经分析完成了,了解更多信息请阅读原论文。

4.参考文献

1.ImageNet Classification with Deep Convolutional Neural Networks:
https://www.nvidia.cn/content/tesla/pdf/machine-learning/imagenet-classification-with-deep-convolution
2.https://www.cnblogs.com/gongxijun/p/6027747.html
3.https://blog.csdn.net/chaipp0607/article/details/72847422

相关文章: