VGG(Visual geometry group)是继AlexNet后的又一个经典卷积神经网络模型。它在2014年的ILSVRC比赛中获得了第二名(第一名是GoogleLeNet模型),在工作和个人使用中应用较多的是VGG16和VGG19,这里16和19表示的是神经网络的层数。这里接上文提到的AlexNet网络模型对VGG模型进行解析。
基础架构
模型训练输入图像为\(224 \times 224\)的RGB图像,唯一的预处理为对训练集的每个像素减去训练集上的平均RGB值。卷积层选用的核大小是\(3 \times 3\),步长为1,部分卷积核采用\(1 \times 1\)尺寸;最大池化层的核大小为\(2 \times 2\),步长为2。最后连接的3个全连接层中前两个有4096个通道,再接一个\(softmax\)层;隐藏层激活函数采用\(ReLU\),不采用AlexNet中使用的LRN局部响应规范化。具体结构如下表:
上面的网络中都遵循前文提到的基础架构,唯一不同的是网络的深度(在表中都有体现)。网络层的宽度的话,从第一层开始是\(64 \times 64\),之后在每一个最大池化层之后的卷积层都会加倍直至达到\(512 \times 512\)。下面一张表展示的是每个网络模型的参数数量。
一些技巧
在构建网络模型中,作者全部采用了小型的\(3 \times 3\)卷积核,步长为1,两个\(3 \times 3\)的卷积层堆叠(中间没有池化操作)有着等同于\(5 \times 5\)卷积层的感受能力,同理,三个\(3 \times 3\) 的卷积层堆叠等同于一个\(7 \times 7\)的卷积层。
使用小卷积核的卷积层堆叠代替大卷积核的卷积层的优势主要有以下几个:
- 使用多个非线性整流层而不是一个,这增强了模型的表达能力;
- 降低了模型的参数规模
这种操作也可以视为是对原卷积层的正规化,迫使它们通过小型卷积核进行分解,同时引入非线性因素,整流函数也引入了额外的非线性。
训练过程中采用的是具有小批量梯度下降优化多项逻辑回归目标的方法来进行优化(动量参数为0.9,batch size为256);使用权重衰减的正则化操作,其中\(L_2\)正则化系数为\(5 \times 10^{-4}\);在前两个全连接层中使用Dropout正则化(Dropout层的参数设置为0.5);学习率初始化为\(10^{-2}\),并同AlexNet模型类似:当验证集的得分不再提升时,学习率会发生一次下调,下调三次或者模型训练迭代次数达到370K(即满74轮)时则停止训练。
作者在经过尝试训练后,采用均值为0,方差为0.01的正态分布对权重进行初始化,偏差初始化为0。为了适应\(224 \times 224\)的图像输入,作者随机地从每一轮每张已重新调整过的图像中进行裁剪,同时对图片进行随机水平翻转和随机RGB色移。
训练图像尺寸处理
假设\(S\)为各向同性重新缩放的训练图像的最小边(这个参数也指定为训练图像的尺度)。原则上\(S\)须取得不小于224的值(因图像输入尺寸为\(224 \times 224\)),当\(S = 224\),此时裁剪块可以取遍所有像素值;当\(S >> 224\)时,裁剪块对应于原图像的一小块区域,可能包括小目标或目标的一部分。作者提出了两种方法来设置训练尺度\(S\)。首先是固定尺度训练,对应于单一规模的训练;其次是多尺度训练,通过从特定范围\([S_{min}, S_{max}]\)随机采样\(S\)来单独地重新调整每个训练图像(作者使用的范围是\([256, 512]\))。由于不同的目标有着不同的尺寸,所以这种处理方式能更好地捕捉到目标,同时这种方法也可视为是通过尺度抖动对训练集进行增强。
测试集处理
假设测试集尺度为\(Q\)(作者实验发想测试集尺度不必与训练集尺度相同)。将模型的完全连接层转换为卷积层(第一个FC层转为\(7 \times 7\)的卷积层,后面两个FC层转为\(1 \times 1\)卷积层),更改后的模型直接应用于整个为裁剪图像中(包括对图像进行的增强处理),得到的结果是类别得分图(其中通道数与类别数相同),然后对得到的类别得分图进行空间平均(求和)以得到固定大小的图像的类别得分向量,最后将原始图像和翻转图像的\(softmax\)类后验平均化以获得图像的最终分数。
由于全卷积网络是应用于整个图像的,所以在测试阶段并不需要进行多尺度裁剪。但多尺度裁剪评估可以是对测试集密集评估的补充,因为当卷积网络应用于裁剪时,卷积特征图会使用0填充,而对测试集的密集评估应用裁剪时会使用邻近的像素值来填充特征图(这是由卷积核池化操作造成的),这会获得更多的上下文信息。
具体的模型和实验结果可以查看原论文
致谢
本文参考自Karen Simonyan等人于2015年发表的论文:
VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION