三、VGG-Net
VGG-Net
是牛津大学计算机视觉组和DeepMind
公司共同研发一种深度卷积网络,并且在2014年在ILSVRC
比赛上获得了分类项目的第二名和定位项目的第一名。VGG-Net
的主要贡献是:- 证明了小尺寸卷积核(
3x3
)的深层网络要优于大尺寸卷积核的浅层网络。 - 证明了深度对网络的泛化性能的重要性。
- 验证了尺寸抖动
scale jittering
这一数据增强技术的有效性。
- 证明了小尺寸卷积核(
VGG-Net
最大的问题在于参数数量,VGG-19
基本上是参数数量最多的卷积网络架构。
3.1 网络结构
VGG-Net
一共有五组结构(分别表示为:A~E
), 每组结构都类似,区别在于网络深度上的不同。结构中不同的部分用黑色粗体给出。
卷积层的参数为
convx-y
,其中x
为卷积核大小,y
为卷积核数量。如:
conv3-64
表示64
个3x3
的卷积核。卷积层的通道数刚开始很小(64通道),然后在每个池化层之后的卷积层通道数翻倍,直到512。
每个卷积层之后都跟随一个
ReLU
激活函数,表中没有标出。
通用结构:
输入层:固定大小的
224x224
的RGB
图像。卷积层:卷积步长均为1。
填充方式:填充卷积层的输入,使得卷积前后保持同样的空间分辨率。
3x3
卷积:same
填充,即:输入的上下左右各填充1个像素。1x1
卷积:不需要填充。
卷积核尺寸:有
3x3
和1x1
两种。3x3
卷积核:这是捕获左右、上下、中心等概念的最小尺寸。1x1
卷积核:用于输入通道的线性变换。在它之后接一个
ReLU
激活函数,使得输入通道执行了非线性变换。
池化层:采用最大池化。
- 池化层连接在卷积层之后,但并不是所有的卷积层之后都有池化。
- 池化窗口为
2x2
,步长为 2 。
网络最后四层为::三个全连接层 + 一个
softmax
层。- 前两个全连接层都是 4096个神经元,第三个全连接层是 1000 个神经元(因为执行的是 1000 类的分类)。
- 最后一层是
softmax
层用于输出类别的概率。
- 所有隐层都使用
ReLU
激活函数。
VGG-Net
网络参数数量:其中第一个全连接层的参数数量为:
7x7x512x4096=1.02亿
,因此网络绝大部分参数来自于该层。与
AlexNet
相比,VGG-Net
在第一个全连接层的输入feature map
较大:7x7 vs 6x6
,512 vs 256
。网络 A , A-LRN B C D E 参数数量 1.13亿 1.33亿 1.34亿 1.38亿 1.44
3.2 设计技巧
输入预处理:通道像素零均值化。
先统计训练集中全部样本的通道均值:所有红色通道的像素均值 、所有绿色通道的像素均值 、所有蓝色通道的像素均值 。
其中:假设红色通道为通道
0
,绿色通道为通道1
,蓝色通道为通道2
; 遍历所有的训练样本, 遍历图片空间上的所有坐标。对每个样本:红色通道的每个像素值减去 ,绿色通道的每个像素值减去 ,蓝色通道的每个像素值减去 。
多尺度训练:将原始的图像缩放到最小的边 ,然后在整副图像上截取
224x224
的区域来训练。有两种方案:
在所有图像上固定 :用 来训练一个模型,用 来训练另一个模型。最后使用两个模型来评估。
对每个图像,在 之间随机选取一个 ,然后进行裁剪来训练一个模型。最后使用单个模型来评估。
- 该方法只需要一个单一的模型。
- 该方法相当于使用了尺寸抖动(
scale jittering
) 的数据增强。
多尺度测试:将测试的原始图像等轴的缩放到预定义的最小图像边,表示为 ( 不一定等于 ),称作测试尺度。
在一张测试图像的几个归一化版本上运行模型,然后对得到的结果进行平均。
- 不同版本对应于不同的 值。
- 所有版本都执行通道像素归一化。注意:采用训练集的统计量。
该方法相当于在测试时使用了尺寸抖动。实验结果表明:测试时的尺寸抖动导致了更好的性能。
评估有三种方案:
single-crop
:对测试图片沿着最短边缩放,然后选择其中的center crop
来裁剪图像,选择这个图像的预测结果作为原始图像的预测结果。该方法的缺点是:仅仅保留图片的中央部分可能会丢掉图片类别的关键信息。因此该方法很少在实际任务中使用,通常用于不同模型之间的性能比较。
multi-crop
:类似AlexNet
的做法,对每个测试图像获取多个裁剪图像,平均每个裁剪图像的预测结果为原始图像的预测结果。该方法的缺点是:需要网络重新计算每个裁剪图像,效率较低。
dense
:将最后三个全连接层用等效的卷积层替代,成为一个全卷积网络。其中:第一个全连接层用7x7
的卷积层替代,后面两个全连接层用1x1
的卷积层替代。该全卷积网络应用到整张图片上(无需裁剪),得到一个多位置的、各类别的概率字典。通过原始图片、水平翻转图片的各类别预测的均值,得到原始图片的各类别概率。
该方法的优点是:不需要裁剪图片,支持多尺度的图片测试,计算效率较高。
实验结果表明:
multi-crop
评估方式要比dense
评估方式表现更好。另外,二者是互补的,其组合要优于任何单独的一种。下表中,S=[256;512]
, 。还有一种评估策略:
ensemble error
。即:同时训练同一种网络的多个不同的模型,然后用这几个模型的预测结果的平均误差作为最终的ensemble error
。有一种术语叫
single-model error
。它是训练一个模型,然后采用上述的多种crop/dense
评估的组合,这些组合的平均输出作为预测结果。权重初始化:由于网络深度较深,因此网络权重的初始化很重要,设计不好的初始化可能会阻碍学习。
- 论文的权重初始化方案为:先训练结构
A
。当训练更深的配置时,使用结构A
的前四个卷积层和最后三个全连接层来初始化网络,网络的其它层被随机初始化。 - 作者后来指出:可以通过
Xavier
均匀初始化来直接初始化权重而不需要进行预训练。
- 论文的权重初始化方案为:先训练结构
实验结果表明:
- 分类误差随着网络深度的增加而减小。
- 从
A-LRN
和A
的比较发现:局部响应归一化层LRN
对于模型没有任何改善。