Very Deep Convolutional Networks for Large-Scale Image Recognition-VGGNet解读

VGGNet是一种用于大规模图像识别的深度卷积神经网络,由牛津大学计算机视觉组和Google DeepMind公司共同研发。该网络通过增加网络深度,使用3x3的小卷积核和2x2的池化核,成功构建了16~19层的深度网络,证明了增加网络深度能够有效提升图像分类性能。

作者:HYH

日期:2020-9-10

论文期刊:ICLR2015

标签:VGG

论文:《Very Deep Convolutional Networks for Large-Scale Image Recognition》

一、简介:

  1. 2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发出了一种新的深度卷积神经网络:VGGNet,并取得了ILSVRC2014比赛分类项目的第二名(第一名是GoogLeNet,也是同年提出的)。

  2. VGGNet的产生主要源于2012年AlexNet将深度学习的方法应用到ImageNet的图像分类比赛中并取得了惊人的效果后,大家都竞相效仿并在此基础上做了大量尝试和改进,例如,在卷积层使用更小的卷积核以及更小的步长(Zeiler&Fergus,2013; Sermanet,2014),又或者在整个图像和多个尺度上密集地训练和测试网络(Sermanet,2014:Howard,2014)。但这些优化中作者觉得都没有谈到网络深度的工作,因此受到启发,不仅将上面的两种方法应用到自己的网络设计和训练测试阶段,同时想再试试深度对结果的影响。

  3. 因此VGGNet主要探索了卷积神经网络的深度与其性能之间的关系,并成功地构筑了16~19层深的卷积神经网络,证明了增加网络的深度能够在一定程度上影响网络最终的性能,使错误率大幅下降。所以到目前为止,VGG仍然被用来提取图像特征。换句话说,VGGNet可以看成是加深版本的AlexNet,都是由卷积层、全连接层两大部分构成。

  4. 他们最好的网络包含了13个卷积层和3个全连接层(VGG16),网络的结构非常一致,从头到尾全部使用的是3x3的卷积核和2x2的池化核(Alexnet中使用的是3x3池化核)。他们的预训练模型是可以在网络上获得并在Caffe中使用。 VGGNet不好的一点是它耗费更多计算资源,并且使用了更多的参数,导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层。作者后来发现这些全连接层即使被去除,对于性能也没有什么影响,而且还可以使输入的图片尺寸不受限制,因此在后面的测试阶段将这三个全连接层转化成了卷积层使用。因此目前使用比较多的深层网络结构主要有ResNet(152-1000层),GooleNet(22层),VGGNet(19层)。而后面大多数模型都是基于这几个模型进行改进,采用新的优化算法,多模型融合等。

主要贡献: 最重要的就是讨论了在大规模图像识别中,神经网络深度对于其准确率的影响。

二、VGG的网络配置

因为论文主要讨论的是网络结构的深度,所以一开始先给出了多种不同深度的网络,分别称为为A-E网络,从11-19层,其中D和E被称为VGG16和VGG19。各网络结构配置如下:
在这里插入图片描述
在这篇论文中分别使用了A、A-LRN、B、C、D、E这6种网络结构进行测试,这6种网络结构相似,都是由5层卷积层、3层全连接层组成,其中区别在于每个卷积层的子层数量不同,从A至E依次增加(子层数量从1到4),总的网络深度从11层到19层(添加的层以粗体显示),表格中的卷积层参数表示为“conv⟨感受野大小⟩-通道数⟩”,例如con3-128,表示使用3x3的卷积核,通道数为128。为了简洁起见,在表格中不显示ReLU激活功能。

基本了解了VGG的网络配置之后,可以提炼出一些VGG的特点:

1.小卷积核与多卷积子层
一般说到网络深

### VGG网络架构 VGG网络由牛津大学视觉几何组(Visual Geometry Group)开发,旨在解决大规模图像识别中的挑战[^1]。该网络的特点在于使用非常深的卷积层结构来提取特征。 #### 架构特点 - **多层堆叠**:VGG采用了多个连续的小尺寸(3×3)卷积核进行特征抽取,而不是采用较大尺寸的卷积核。 - **固定步幅和填充方式**:所有的卷积操作都保持相同的步幅(stride=1),并使用零填充使得输入输出具有相同的空间维度。 - **池化层配置**:在网络的不同阶段之后加入最大池化层以减少空间分辨率,从而降低参数数量并控制过拟合风险。 - **全连接层设计**:最后几层通常为全连接层,在分类任务中用于映射到类别标签上;然而现代实现往往省略这些密集层转而使用全局平均池化替代。 具体来说,最著名的两个版本分别是: - **VGG16**:包含13个卷积层以及3个全连接层; - **VGG19**:则进一步扩展到了16卷积层加3个全连接层。 这种简单却有效的设计方案不仅提高了模型性能,同时也促进了后续研究者对于更深更复杂网络结构探索的热情。 ```python import torch.nn as nn class VGG(nn.Module): def __init__(self, num_classes=1000): super(VGG, self).__init__() # 定义卷积部分 self.features = nn.Sequential( *make_layers([64]*2 + [128]*2 + [256]*3 + [512]*3 + [512]*3)) # 定义分类器部分 (可选) self.classifier = nn.Linear(512*7*7, num_classes) def forward(self, x): out = self.features(x) out = out.view(out.size(0), -1) # 展平处理 out = self.classifier(out) return out def make_layers(cfg): layers = [] in_channels = 3 for v in cfg: if v == 'M': layers += [nn.MaxPool2d(kernel_size=2, stride=2)] else: conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1) layers += [conv2d, nn.ReLU(inplace=True)] in_channels = v return nn.Sequential(*layers) ``` ### 应用领域 自发布以来,VGG已被广泛应用于各种计算机视觉任务当中: - 图像分类与目标检测; - 实例分割; - 场景理解; 此外,VGG作为预训练基础模型也被用来迁移学习新数据集上的相似问题求解.
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中南大学苹果实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值