> 文档中心 > VGGNet网络详解与模型搭建

VGGNet网络详解与模型搭建

哎呀,今天又在研究深度学习模型啦!这次要聊的是VGGNet,这可是卷积神经网络中的老网红了,当初可是风光无限啊!VGGNet是由牛津大学的“视觉几何小组”(VGG,名字听起来就像是个搞视觉的战队)提出的,他们用堆叠3x3的小卷积核,愣是把模型的性能提升了一大截,还拿了ImageNet比赛的亚军呢!这下可把3x3卷积核吹上了天,成了后来无数模型的标配,比如ResNet、Inception系列都深受影响。

说到模型结构,VGGNet可是实打实的“层数党”,从11层到19层,越堆越多,仿佛在说“层数深,性能稳!”不过,这小卷积核的堆叠可不是单纯的“重复粘贴”,而是通过小步快跑的方式,用多个3x3卷积层代替一个大卷积层。比如,两个3x3卷积层就能覆盖等同于一个5x5卷积层的效果,但参数量却少了好几倍!这招“化大为小”不仅减少了计算量,还让网络有了更多的非线性激活,学起特征来那是相当生猛。

不过,VGGNet也不是没缺点,毕竟层数多了容易梯度消失,训练起来可不轻松。但它的成功确实为后来的模型设计指明了一个方向:小而精,才是王道!所以,下次你用3x3卷积的时候,可别忘了向VGGNet致敬哦!

文章目录

    • 1 模型介绍
    • 2 模型结构
    • 3 模型特性
    • 4 Pytorch模型搭建代码

1 模型介绍

​ VGGNet是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以7.32%的错误率赢得了2014年ILSVRC分类任务的亚军(冠军由GoogLeNet以6.65%的错误率夺得)和25.32%的错误率夺得定位任务(Localization)的第一名(GoogLeNet错误率为26.44%),网络名称VGGNet取自该小组名缩写。VGG网络原论文《Very Deep Convolutional Networks For Large-Scale Image Recognition》发表于ICLR-2015,VGGNet所提出的 3 × 3 3\times3 3×3卷积核的思想为后来许多模型所沿用。

2 模型结构

​ 在原论文中,作者尝试了不同深度的配置(11层,13层,16层,19层),是否使用LRN(Local Response Normalization)以及卷积核1x1与卷积核3x3的差异,VGGNet尝试使用了6种不同的模型结构,分别对应VGG11、VGG11-LRN、VGG13、VGG16-1、VGG16-3和VGG19,不同的后缀数值表示不同的网络层数(VGG11-LRN表示在第一层中采用了LRN的VGG11,VGG16-1表示后三组卷积块中最后一层卷积采用卷积核尺寸为 1 × 1 1\times1 1×1,相应的VGG16-3表示卷积核尺寸为 3 × 3 3\times3 3×3)。下表是从原论文中截取的几种VGG模型的配置表,VGGNet网络模型结构非常工整,其卷积层全部都采用了大小为3x3,步距为1,padding为1的卷积操作(即same卷积,经过卷积后不会改变特征矩阵的高和宽);最大池化下采样层全部都是池化核大小为2,步距为2的池化操作,每次通过最大池化下采样后特征矩阵的高和宽都会缩减为原来的一半。

在这里插入图片描述

​ 我们通常使用的VGG模型是表格中的VGG16(D)配置,根据表格中的配置信息以及上文所讲的卷积层和池化层的详细参数,可以搭建如下图所示的feature map大小的变化图。在VGG模型中,卷积操作不会改变feature map的大小,池化操作会使feature map大小减小为原来的一半。
在这里插入图片描述

3 模型特性

(1)通过堆叠多个3x3的卷积核来替代大尺度卷积核

​ 论文中提到,可以通过堆叠两层 3 × 3 3\times 3 3×3的卷积核替代一层 5 × 5 5\times 5 5×5的卷积核,堆叠三层 3 × 3 3\times3 3×3的卷积核替代一层 7 × 7 7\times7 7×7的卷积核。这样的连接方式使得网络参数量更小(见下例),而且多层的激活函数令网络对特征的学习能力更强。

  • 如果使用一层卷积核大小为7的卷积所需参数(第一个C代表输入特征矩阵的channel,第二个C代表卷积核的个数也就是输出特征矩阵的深度): 7×7×C×C=49 C 2 7\times 7\times C\times C=49C^27×7×C×C=49C2

  • 如果使用三层卷积核大小为3的卷积所需参数: 3×3×C×C+3×3×C×C+3×3×C×C=27 C 2 3\times 3\times C\times C + 3\times 3\times C\times C + 3\times 3\times C\times C=27C^23×