AlexNet 结构学习

      在2012年的时候,Geoffrey和他学生Alex为了回应质疑者,在ImageNet的竞赛中出手了,刷新了imageclassification的记录,一举奠定了deep learning 在计算机视觉中的地位。后边的故事大家都知道了,deeplearning一统天下,所向披靡。
在这次竞赛中Alex所用的结构被称为作为AlexNet。本部分首先介AlexNet的基本的architecture,在后边的学习中将分析其算法的基本原理以及参数细节。


针对2012年的这组数据集caffe也定义了自己的结构,被称为caffeNet,文档中说在迭代30多w次的的情况下精度大概提高了0.2个百分点。下面是两个Net的结构图,它们的区别在于norm1,pool1,以及norm2,pool2互换了顺序。




下面来看一下AlexNet的结构。在Alex的论文中,其基本结构为




1. 基本结构

a. 共有8层,其中前5层convolutional,后边3层full-connected,最后的一个full-connected层的output是具有1000个输出的softmax,最后的优化目标是最大化平均的multinomiallogistic regression

b. 在第一层conv1和conv2之后直接跟的是Response-nomalizationlayer,也就是norm1,norm2层。

c. 在每一个conv层以及full-connected层后紧跟的操作是ReLU操作。

d. Max pooling操作是紧跟在第一个norm1,norm2,以及第5个conv层,也就是conv5

e.Dropout操作是在最后两个full-connected层。

2. 操作流程

a.在第一个conv层(conv1)中,AlexNet采用了96个11*11*3的kernel在stride为4的情况下对于224*224*3的图像进行了滤波。直白点就是采用了11*11的卷积模板在三个通道上,间隔为4个像素的采样频率上对于图像进行了卷积操作。4个像素是receptivefield中心在kernel map上的距离,这是个经验数据。

最初的输入神经元的个数为224*224*3 = 150528个。对于每一个map来说,间隔为4,因此224/4 =56,然后减去边缘的一个为55个,也就是本层的map大小为55*55,然后神经元数目为55*55*96 =290400(原文中是253440,这个不太理解,有知道的请告知)

得到基本的conv数据后,则进行一次ReLU(relu1)以及Norm(norm1)的变换后,然后进行pooling(pool1),作为输出传递到下一层。

本层map数目为96.

b.第二个conv层(conv2)是第一个conv层(conv1)经过norm(norm1)以及pool(pool1)后,然后再apply256个5*5的卷积模板卷积后的结果。

pool1后,map的size减半int(55/2)= 27,得到的本层的神经元数目为27*27*256 =186642个。

本层map数目为256个。

c. 第三个conv层(conv3)的生成过程和第二层类似,不同的是这一层是apply384个3*3的卷积模板得到的。

pool2后,map的size减半int(27/2) = 13,得到本层神经元数目为13*13*384 =64896。

本层map数目为384个。

d. 第四个conv层(conv4)是第三个conv层(conv3)进行一次ReLU(relu3)后,然后直接apply384个3*3的卷积模板得到的。

本层神经元的数目为13*13*384 = 64896。

本层map数目为384个,size还是13*13.

e.第五个conv层(conv5)与第四个生成类似,只是对上层进行了一个ReLU(relu4)后生成的,不同之处在于此处apply的卷积模板为256个3*3的。

本层神经元的数目为13*13*256 = 43264。

本层map数目为256个,size还是13*13。

f.第一个full-connected层(fc6)是上一个conv层(conv5)进行pooling(pool5)后的全连接。

pool5后,map的size减半int(13/2) =6,上层基本连接为6*6*256,然后全连接后到4096个节点,本层最终节点为4096个。

g.第二个full-connected层(fc7)是上一个full-connected(fc6)进行ReLU(relu6)后,然后进行dropout(drop6)后再进行全连接的结果

本层节点数目为4096个。

h.最后一个full-connetcted层(fc8)则是上一个full-connected层(fc7)再次进行ReLU(relu7)以及dropout(drop7)后再进行全连接的结果。最后输出为融合label的softmaxloss。

本层节点数目为1000个,对应着1000类对象。

在下面将对于AlexNet的原理进行以及算法的执行细节进行分析。

你可能感兴趣的:(深度学习,AlexNet,caffe)