VGGNet结构分析

VGG是Visual Geometry Group, Department of Engineering Science, University of Oxford的缩写。他们组参加ILSVRC 2014时候组名叫VGG,所以提交的那种网络结构也叫VGG,或者叫VGGNet。VGG和GoogleNet同在2014年参赛,图像分类任务中GoogLeNet第一,VGG第二,它们都是重要的网络结构。

VGG相应的论文“Very Deep Convolutional Networks for Large-Scale Image Recognition”,下载地址:https://arxiv.org/abs/1409.1556

VGG比较出名的是VGG-16和VGG-19,最常用的是VGG-16。各种VGG的网络结构如下:

VGGNet结构分析_第1张图片

VGG-16有16个卷积层或全连接层,包括五组卷积层和3个全连接层,即:16=2+2+3+3+3+3。这个结构应该牢记于心。

认真比较ResNet和VGG,你会发现ResNet的第一个卷积层的stride=2,因此在分辨率缩小相同倍数(32倍)的情况下,它不需要像VGG那样在最后一组卷积层后面跟一个stride=2的pooling层。

VGGNet的卷积层有一个显著的特点:特征图的空间分辨率单调递减,特征图的通道数单调递增。

这样做是合理的。对于卷积神经网络而言,输入图像的维度是HxWx3(彩色图)或者是HxWx1(灰度图),而最后的全连接层的输出是一个1x1xC的向量,C等于分类的类别数(例如ImageNet中的1000类)。如何从一个HxWx3或HxWx1的图像转换到1x1xC的向量呢?上文所说的VGGNet的特点就是答案:特征图的空间分辨率单调递减,特征图的通道数单调递增,使得输入图像在维度上流畅地转换到分类向量。用于相同ImageNet图像分类任务的AlexNet的通道数无此规律,VGGNet后续的GoogLeNet和Resnet均遵循此维度变化的规律。

VGG-16具体的feature map的维度如下图所示,黑色边框是卷积层的输出,红色边框是pooling层的输出,蓝色边框是全连接层,最后的猪肝色边框是soft-max层的输出:

VGGNet结构分析_第2张图片

上述VGG结构是用于ImageNet 1000类的图像分类数据集的,相应的VGG也有用于cifar数据集的网络。由于cifar数据集的分辨率只有32x32且类别只有10类,因此相应的VGG-cifar网络会更浅,同时全连接层的参数量大幅减少。下图是cifar数据样例:

VGGNet结构分析_第3张图片

你可能感兴趣的:(VGGNet结构分析)