1. 简介
AlexNet是一个用于图像识别的卷积神经网络,其应用在ILSVRC比赛中,AlexNet所用的数据集是ImageNet,总共识别1000个类别
2. 网络结构
整体网络结果如下图所示,一共有8层,前五层是卷积层,后三层是全连接层,最后一个全链接层输出是经过softmax处理后的1000分类。
(1)输入图像大小:224*224*3
(2)第一层卷积设置:卷积–>ReLU–>局部响应归一化(LRN)–>池化
- 卷积核:96个大小为11*11*3的卷积核, stride=4;
- 输出:根据卷积计算公式 ( i n p u t _ s i z e + 2 ∗ p a d d i n g − k e r n e l _ s i z e ) / s t r i d e + 1 = ( 227 + 2 ∗ 0 − 11 ) / 4 + 1 = 55 (input\_size + 2 * padding - kernel\_size) / stride + 1=(227+2*0-11)/4+1=55 (input_size+2∗padding−kernel_size)/stride+1=(227+2∗0−11)/4+1=55,即输出结果为得到输出是55*55*96,将其分成两组得到55*55*48
- 池化:使用3x3,stride=2的池化单元进行最大池化操作,输出为(55-3)/2+1 = 27,即27*27*48
(3)第二层卷积:卷积–>ReLU–>局部响应归一化(LRN)–>池化
- 卷积核:128个5x5x48的卷积核进行卷积,padding=2,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(27+2*2-5)/1+1=27,得到每组输出是27x27x128
- 池化:使用3x3,stride=2的池化单元进行最大池化操作(max pooling),(27+2*0-3)/2+1=13,每组得到的输出为13x13x128
(4)第三层卷积:卷积–>ReLU
- 输入是13x13x256(此处两个GPU之间有通信),使用384个3x3x256的卷积核进行卷积,padding=1,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(13+2*1-3)/1+1=13,得到输出是13x13x384
(5)第四层卷积:卷积–>ReLU
两组输入均是13x13x192,各组分别使用192个3x3x192的卷积核进行卷积,padding=1,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(13+2*1-3)/1+1=13,得到每组FeatureMap输出是13x13x192
(6)第五层卷积:卷积–>ReLU–>池化
两组输入均是13x13x192,各组分别使用128个3x3x192的卷积核进行卷积,padding=1,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(13+2*1-3)/1+1=13,得到每组FeatureMap输出是13x13x128
使用3x3,stride=2的池化单元进行最大池化操作(max pooling)。注意这里使用的是重叠池化,即stride小于池化单元的边长。根据公式:(13+2*0-3)/2+1=6,每组得到的输出为6x6x128
(7)全连接层
输入为6×6×256,使用4096个6×6×256的卷积核进行卷积,由于卷积核尺寸与输入的尺寸完全相同,即卷积核中的每个系数只与输入尺寸的一个像素值相乘一一对应,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(6+2*0-6)/1+1=1,得到输出是1x1x4096。既有4096个神经元,该层被称为全连接层
ReLU:这4096个神经元的运算结果通过ReLU激活函数中
Dropout:随机的断开全连接层某些神经元的连接,通过不激活某些神经元的方式防止过拟合。4096个神经元也被均分到两块GPU上进行运算
(8)全连接层2
输入为4096个神经元,输出也是4096个神经元, 4096个神经元被分到两个GPU
(9)输出层(全连接层3)
输入为4096个神经元,输出是1000个神经元。这1000个神经元即对应1000个检测类别
参考
[1]. ImageNet Classification with Deep Convolutional
Neural Networks