1.3.2 VGG
VGG是由Oxford Visual Geometry Group提出的(出自论文Very Deep Convolutional Networks for Large-Scale Image Recognition)。VGG的主要工作是证明增加网络的深度能够在一定程度上影响网络最终的性能。VGG 有两种结构,分别是 VGG16 和VGG19,两者并没有本质上的区别,只是网络深度不一样。
下面先认识一下VGG的基本架构,如图1.9所示。
图1.9 VGG的基本架构
VGG相比于AlexNet的一个改进是采用连续的几个3×3卷积核代替AlexNet中较大的卷积核(11×11、7×7、5×5)。对于给定的特征,采用堆叠的小卷积核优于采用大卷积核,因为多个非线性层的叠加可以增加网络深度,以此来保证模型可以学习更复杂的特征,而且计算复杂度比较低(参数量更少)。
简单来说,在VGG中,使用3个3×3卷积核可以代替1个7×7卷积核,使用2个3×3卷积核可以代替1个5×5卷积核。这样做的主要目的是在保证网络具有相同感受野的前提下增加网络的深度,在一定程度上改善模型的性能。例如,3个步长为1的3×3卷积核的叠加作用可看作1个卷积核尺寸为7×7的感受野。简单来说,连续的3个3×3卷积就相当于1个7×7卷积,其参数量为27× C2。如果直接使用7×7卷积核,则其参数量为49×C2。这里的 C 指的是输入和输出的通道数。很明显,27×C2小于49×C2,即减少了参数量。此外,3×3卷积可以更好地保持图像特性。
为什么VGG选择了这种用多个小卷积核代替大卷积核的方案呢?这里简单解释一下:5×5卷积可以看作1个小的全连接网络在5×5区域滑动(卷积操作),可以先用1个3×3卷积,再用1个3×3卷积输出,这样就可以用2个连续的3×3卷积级联(叠加)起来代替1个5×5卷积,如图1.10所示。
图1.10 3×3卷积与5×5卷积示意图