VGGNet
VGGNet
VGGNet是2014年ILSVRC竞赛分类任务的第二名(第一名是 GoogLeNet)和定位任务的第一名。
VGGNet新特点
- 对卷积核和池化大小进行了统一: 3x3卷积和2x2最大池化操作
- 采用卷积层堆叠的策略,将多个连续的卷积层构成卷积层组
- 采用小的卷积滤波器,网络更深(16/19层)
- 不采用LRN(Local Response Normalization)
VGG网络架构
VGG-16有16个卷积层或全连接层,包括五组卷积层和3个全连接层,即: 16-2+2+3+3+3+3.
卷积堆叠
-
与单个卷积层相比,卷积组可以提高感受野范围,增强网络的学习能力和特征表达能力
-
与具有较大核的卷积层相比,采用多个具有小卷积核的卷积层串联的方式能够减少网络参数
-
在每层卷积之后进行ReLU非线性操作可提升网络的特征学习能力
两次3x3相比与一次5x5:感受野一样、参数更少、两次**函数。 -
网络包含5组卷积操作,每组内的卷积层具有相同的结构
-
每组包含1-3个连续的卷积层,每两个卷积层之间为ReLU层。
-
VGGNet的卷积层有一个显著的特点:特征图的空间分辨率单调递减,特征图的通道数单调递增。使得输入图像在维度上流畅地转换到分类向量。
-
AlexNet的通道数无此规律, VGGNet后续的GoogLeNet和ResNet均遵循此维度变化的规律。
参数计算
*反向传播的梯度值,需乘2
训练与测试
- 训练是通过使用带有动量的小批次梯度下降的反向传播来优化多类别逻辑回归目标
- 批次大小设置为256,动量为0.9,通过权重衰减正则化(L2惩罚因子设置为5 x 10-4)和前两个全连接层的丢弃(丢弃率设置为0.5)对训练进行正则化。学习率初始设定为10-2,然后当验证集准确率度停止改善时,学习率降低10倍训练图像大小
数据增强
-
训练图像大小
单尺度训练single-scale training: 剪裁大小固定为224x224 (S= 244)或S =384
多尺度训练multi-scale training:
scale jittering (尺度抖动)
[Smin, Smax] (Smin = 256 and Smax = 512) -
训练阶段,将图像缩放到不同尺寸s,并随机裁剪大小为224x224的训练样本
-
测试阶段,将图像缩放到固定尺寸Q,并对网络最后的卷积层使用滑动窗口进行分类预测,对不同窗口的分类结果取平均
-
测试图片大小设置为:
对于固定的s设置Q = s;
对于有抖动的s设置Q= 0.5(Smin + Smax), S E [Smin, Smax).
多剪裁和密集评估(Multi-Crop vs Dense Evaluation)
- Multi-Crop evaluation:从测试图像中剪切出一大批224x224的小块图像,在输出时取平均得到一个1000维的平均结果。
- Dense evaluation:测试图像的尺寸不作任何变化,将,后一个卷积层和全连接层看成为一个卷积操作,然后对所作的结果进行平均,全卷积网络因为没有全连接的限制,因而可以接收任意宽或高的输入。
Dense evaluation做法:
首先将全连接的层转换为卷积层(第一个FC层转换到7x7卷积层,最后两个FC层转换到1x1转换层) 。然后将得到的全卷积网络应用于整个(未剪切的)图像。
比如,对于训练图像其大小为224x224,经过最后一个卷积得到7 x 7 x m的特征图,然后输出为1000个结点。这是训练好的网络。对于一个448:448的测试图像,经过训练好的网络的映射,最后会输出2x2x1000大小的结果,将2x2里面的内容进行平均,即得到1000维向量
单尺度下测试的性能
VGG有ABCDE多个不同版本的配置:(D有16层,E有19层)
数据表明,层数、特征数增加,错误率降低;在训练集上使用多尺度图像,在测试集上使用固定尺度图像是有效果的。
- 随着ConvNet深度的增加,分类错误减小
- 即使在测试时使用单个尺度,在训练时的尺度抖动(S E [256; 512])比具有固定最小边(S= 256或S= 384)的图像上的训练有更好的结果。通过尺度抖动的训练集增强确实有助于获得多尺度图像的统计。
随机从256:512范围内选择一个尺寸:
多个尺度下测试的性能
- 在测试时的尺度抖动会带来更好的性能
- 在测试集上,配置E达到7.5%的Top-5错误
多剪裁下测试的性能
训练尺度s从[256;512]中取样,考虑三个测试尺度: (256,384,512).
- 使用multiple crops评估的效果略好于dense评估。
- 这两种方法是互补的,因为它们的组合优于每种方法