一、AlexNet(2012)
包含8个网络层,5个卷积层,3个全连接层
AlexNet的特点:
- 更深的网络结构;
- 使用层叠的卷积层,即卷积层+卷积层+池化层来提取图像的特征;
- 使用Dropout抑制过拟合;
- 使用数据增强抑制过拟合;
- 使用Relu替换sigmoid作为激活函数,解决了sigmoid在网络较深时出现的梯度弥散问题;
- 使用归一化层对局部神经元的活动创建竞争机制,抑制反馈较小的神经元,放大反馈较大的神经元,增强模型泛化能力;
- 使用重叠池化,有利于减轻过拟合;
- 使用多GPU进行训练。
输入图像大小:227*227*3
AlexNet分层信息介绍:
卷积层1:conv1
- 输入图像大小:227*227*3
- 卷积核:大小11*11,数量96个,步长4
- 输出特征图大小:55*55*96 (因为有上下两个通道)
激活函数Relu
第一个池化层:pool1
- 卷积核大小3*3,步长2
- 输出特征图大小:27*27*96
标准化(归一化层1)norm1:
- local_size=5
- 生成特征图大小为:27*27*96
卷积层2:conv2
- 输入特征图大小:27*27*96
- 卷积核大小5*5,数量256个,步长1,填充2
- 输出特征图大小:27*27*256
激活函数Relu
第二个池化层:pool2
- 输入特征图大小:27*27*256
- 卷积核大小3*3,步长2
- 输出特征图大小:13*13*256
标准化:norm2
- local_size=5
- 生成特征图大小为:13*13*256
卷积层3:conv3
- 输入特征图大小:13*13*256
- 卷积核大小3*3,数量384个,步长1,填充1
- 输出特征图大小:13*13*384
激活函数Relu
卷积层4:conv4
- 输入特征图大小:13*13*384
- 卷积核大小3*3,数量384个,步长1,填充1
- 输出特征图大小:13*13*384
激活函数Relu
卷积层5:conv5
- 输入特征图大小:13*13*384
- 卷积核大小3*3,数量256个,步长1,填充1
- 输出特征图大小:13*13*256
激活函数Relu
第三个池化层:pool5
- 输入特征图大小:13*13*256
- 卷积核大小3*3,步长2
- 输出特征图大小:6*6*256
全连接层6:fc6
- 输入特征图大小:6*6*256
- 输出向量:4096维向量
第一个dropout层:dropout6
- 训练时以1/2的概率使隐藏层的某些神经元的输出为0,丢掉一般节点的输出,这些节点在BP时也不更新,生成4096维向量。
全连接层7:fc7
- 输入和输出都是4096维向量。
第二个dropout层:dropout7
- 生成4096维特征向量
全连接层8:fc8
- 输入:4096维特征向量;
- 输出:1000维特征向量。
AlexNet创新点:
- 1.Relu激活函数
- 2.数据增强
- 3.重叠池化:一般的池化是不重叠的,池化区域的窗口大小与步长相同。
- 4.使用局部归一化的方案有助于增加泛化能力:核心思想就是利用临近的数据做归一化,这个策略贡献了1.2%的Top-5错误率。
表示使用核i作用于然后再采用ReLU非线性函数计算得到的活跃度。N是该层核的总数目,常数是超参数,它们的值使用一个验证集来确定,文中使用。
上述公式看上去比较复杂,但理解起来非常简单。表示第i个核在位置运用激活函数ReLU后的输出,n是同一位置上临近的卷积核的数目,N是卷积核的总数。
- 5.Dropout随机失活操作:Dropout也可以看作是一种模型组合,每次生成的网络结构都不一样,通过组合多个模型的方式能够有效地减少过拟合。
AlexNet的缺陷:
- 第一个卷积层使用了非常大的卷积核,导致计算量大;
- 网络的深度不够。
二、VGG网络
VGG网络主要证明了增加网络的深度能够在一定程度上影响网络最终的性能。VGG有两种结构,VGG16和VGG19,两者并没有本质区别,只是网络深度不一样。VGG模型中卷积核大小全部为3*3。
VGG网络的特点:
- 使用了非常小的卷积核(3*3)搭建更深的网络结构;
- 层数更深更宽(11层、13层、16层、19层);
- 池化核变小且为偶数;
- 网络测试阶段将训练段的三个全连接替换为三个卷积。
VGGNet的优点:
- 结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3*3)和最大池化尺寸(2*2);
- 几个小滤波器(3*3)卷积层的组合比一个大滤波器(5*5或7*7)卷积层好;
- 验证了通过不断加深网络结构可以提升性能。
VGG16模型的结构:
- 共有13个卷积层,全部采用大小为3*3的卷积核,步长为1;
- 拥有5个大小为2*2的最大池化核,步长为2;
- 拥有3个全连接层。
输入层
- 输入图片大小:224*224*3,图片在输入层进行了减均值预处理;
conv1_1:
- 输入特征图大小:224*224*3
- 卷积核大小:3*3
- 卷积核数量:3*64
- 输出特征图大小:224*224*64
conv1_2:
- 输入特征图大小:224*224*64
- 卷积核大小:3*3
- 卷积核数量:64*64
- 输出特征图大小:224*224*64
pool1:最大池化
- 输入特征图大小:224*224*64
- 池化核大小:2*2
- 输出特征图大小:112*112*64
conv2_1:
- 输入特征图大小:112*112*64
- 卷积核大小:3*3
- 卷积核数量:64*128
- 输出特征图大小:112*112*128
conv2_2:
- 输入特征图大小:112*112*128
- 卷积核大小:3*3
- 卷积核数量:128*128
- 输出特征图大小:112*112*128
pool2:最大池化
- 输入特征图大小:112*112*128
- 池化核大小:2*2
- 输出特征图大小:56*56*128
conv3_1:
- 输入特征图大小:56*56*128
- 卷积核大小:3*3
- 卷积核数量:128*256
- 输出特征图大小:56*56*256
conv3_2:
- 输入特征图大小:56*56*256
- 卷积核大小:3*3
- 卷积核数量:256*256
- 输出特征图大小:56*56*256
conv3_3:
- 输入特征图大小:56*56*256
- 卷积核大小:3*3
- 卷积核数量:256*256
- 输出特征图大小:56*56*256
pool3:最大池化
- 输入特征图大小:56*56*256
- 池化核大小:2*2
- 输出特征图大小:28*28*256
conv4_1:
- 输入特征图大小:28*28*256
- 卷积核大小:3*3
- 卷积核数量:256*512
- 输出特征图大小:28*28*512
conv4_2:
- 输入特征图大小:28*28*512
- 卷积核大小:3*3
- 卷积核数量:512*512
- 输出特征图大小:28*28*512
conv4_3:
- 输入特征图大小:28*28*512
- 卷积核大小:3*3
- 卷积核数量:512*512
- 输出特征图大小:28*28*512
pool4:最大池化
- 输入特征图大小:28*28*512
- 池化核大小:2*2
- 输出特征图大小:14*14*512
conv5_1:
- 输入特征图大小:14*14*512
- 卷积核大小:3*3
- 卷积核数量:512*512
- 输出特征图大小:14*14*512
conv5_2:
- 输入特征图大小:14*14*512
- 卷积核大小:3*3
- 卷积核数量:512*512
- 输出特征图大小:14*14*512
conv5_3:
- 输入特征图大小:14*14*512
- 卷积核大小:3*3
- 卷积核数量:512*512
- 输出特征图大小:14*14*512
pool5:最大池化
- 输入特征图大小:14*14*512
- 池化核大小:2*2
- 输出特征图大小:7*7*512
fc6:
- 输入:7*7*512
- 输出:1*1*4096
fc7:
- 输入:1*1*4096
- 输出:1*1*4096
fc8:
- 输入:1*1*4096
- 输出:1*1*1000
为什么需要更深的网络?
- 表达能力更强;
- 学习更加简单。