• 0、摘要
  • 1、引言
  • 2、VGG配置
    • 2.1 结构
    • 2.2 配置
  • 3、分类实验
    • 3.1 单尺度评估
    • 3.2 多尺度评估
    • 3.3 MULTI-CROP EVALUATION
    • 3.4 CNN融合
    • 3.5 ILSVRC2014(与最新技术相比)
  • 4、结论

本文增加了深度,设计了从11层到19层几种VGG模型,然后通过训练集和测试集多尺度变化进一步提高了性能。在ILSVRC2014大赛上通过多模型融合取得了次于GoogleNet的第二名成绩。

总之最大的成就应当是证明了深度对于图像分类的精度是有帮助的

0、摘要

VGG在ILSVRC2014夺得第二名(第一是GoogleNet,也就是InceptionV1),VGG主要使用3x3的滤波器并将网络深度推向更深的16~19层,实现了显著的提升。

并且对其他数据集泛化很好,在其他数据集上取得了最好的结果。

1、引言

  • 解决CNN另一个方面:深度
  • 为了稳定增长深度,使用了3x3卷积

综上提出了更精准的CNN,不仅在ILSVRC分类和定位任务上取得的最佳的准确性,在其他图像识别数据集也获得优异的性能。

总共发布两款表现最好的模型,以便进一步研究

2、VGG配置

2.1 结构

训练时,输入固定224x224的RGB图像。唯一的预处理是每个像素减去(训练集上计算的)RGB均值。

卷积设置:

  • 卷积层使用3x3的小滤波器(另一种配置中还有1x1卷积)
  • 固定stride=1
  • 为了保持分辨率大小,当卷积核=3时,padding=1

池化设置:

  • 空间池化操作由VGG中的5个maxpooling完成(位于Conv层后面,但并非所有Conv都跟有)
  • maxpooling大小=2,stride=2

全连接层设置:

  • 有三个全连接层
  • 前两个有4096通道,最后一个1000个通道(ILSVRC有1000个类)
  • 最后再加上softmax层

激活函数:

  • 所有隐藏层都有ReLU

所有的Conv和除了最后一个全连接层的所有全连接层后面都有ReLU
(实际上整个网络也只有Conv、MaxPool、Linear三种层+ReLU和Dropout,MaxPool后面肯定加激活,而最后一个Linear后面要跟Softmax)

(BN层是15年出来的,VGG中没有,但是比如在Pytorch的官方vgg实现代码中,可以通过参数batch_norm=True在Conv和ReLU之间加上BatchNorm层)

2.2 配置

从深度和宽度介绍,最后再比较下参数量

VGG总共有5中系列,不同在于深度不同。比如A有11层(8个conv+3个fc),而E有19层(16个conv+3个fc)。
VGG的宽度很小(通道数),从第一层的64开始,每次到maxpooling的下一个conv翻倍,直到最后的512通道
总之不同深度的VGG实际上Maxpooling和FC的数量不变,而是每个块(nxConv+1xMaxPooling)中的Conv层数量不同

Pytorch的VGG19官方实现,可以看到:

  • 最开始是64通道
  • 每次MaxPool2d的下一个Conv负责通道翻倍
  • 最后是512通道
----------------------------------------------------------------Layer (type)               Output Shape         Param #
================================================================Conv2d-1         [-1, 64, 224, 224]           1,792ReLU-2         [-1, 64, 224, 224]               0Conv2d-3         [-1, 64, 224, 224]          36,928ReLU-4         [-1, 64, 224, 224]               0MaxPool2d-5         [-1, 64, 112, 112]               0Conv2d-6        [-1, 128, 112, 112]          73,856ReLU-7        [-1, 128, 112, 112]               0Conv2d-8        [-1, 128, 112, 112]         147,584ReLU-9        [-1, 128, 112, 112]               0MaxPool2d-10          [-1, 128, 56, 56]               0Conv2d-11          [-1, 256, 56, 56]         295,168ReLU-12          [-1, 256, 56, 56]               0Conv2d-13          [-1, 256, 56, 56]         590,080ReLU-14          [-1, 256, 56, 56]               0Conv2d-15          [-1, 256, 56, 56]         590,080ReLU-16          [-1, 256, 56, 56]               0Conv2d-17          [-1, 256, 56, 56]         590,080ReLU-18          [-1, 256, 56, 56]               0MaxPool2d-19          [-1, 256, 28, 28]               0Conv2d-20          [-1, 512, 28, 28]       1,180,160ReLU-21          [-1, 512, 28, 28]               0Conv2d-22          [-1, 512, 28, 28]       2,359,808ReLU-23          [-1, 512, 28, 28]               0Conv2d-24          [-1, 512, 28, 28]       2,359,808ReLU-25          [-1, 512, 28, 28]               0Conv2d-26          [-1, 512, 28, 28]       2,359,808ReLU-27          [-1, 512, 28, 28]               0MaxPool2d-28          [-1, 512, 14, 14]               0Conv2d-29          [-1, 512, 14, 14]       2,359,808ReLU-30          [-1, 512, 14, 14]               0Conv2d-31          [-1, 512, 14, 14]       2,359,808ReLU-32          [-1, 512, 14, 14]               0Conv2d-33          [-1, 512, 14, 14]       2,359,808ReLU-34          [-1, 512, 14, 14]               0Conv2d-35          [-1, 512, 14, 14]       2,359,808ReLU-36          [-1, 512, 14, 14]               0MaxPool2d-37            [-1, 512, 7, 7]               0
AdaptiveAvgPool2d-38            [-1, 512, 7, 7]               0Linear-39                 [-1, 4096]     102,764,544ReLU-40                 [-1, 4096]               0Dropout-41                 [-1, 4096]               0Linear-42                 [-1, 4096]      16,781,312ReLU-43                 [-1, 4096]               0Dropout-44                 [-1, 4096]               0Linear-45                 [-1, 1000]       4,097,000
================================================================

几种VGG的参数量,可以看出似乎没有太大的区别,因为参数量绝大部分集中在FC层,从上面这个Param 列可见一斑

3、分类实验

实验是在ILSVRC-2012数据集上进行的,分为训练集、验证集和测试集

对于大多数实验,我们使用验证集作为测试集。在测试集上也进行了一些实验,并将其作为ILSVRC-2014竞赛(Russakovsky等,2014)“VGG”小组的输入提交到了官方的ILSVRC服务器。

3.1 单尺度评估

单尺度就是测试时尺寸固定

这里首先要注意S和Q的概念:
VGG的输入是固定的224x224,但是原图不一定是这个,也就是224x224是从原图直接裁剪来的。
S为等比缩放的训练图(理解为原图)的最小边(比如270x330则S=270),然后训练的输出是从上面裁剪224x224的图像。
这个S有两种方法来设置:

  • 固定:固定S=256或S=384,然后裁剪出224x224的图像作为输入
  • 随机:将S随机设置在如[256,512]的范围内的一个值,然后裁剪出224x224的图像作为输入

实际上这个随机方法有点数据增强的感觉,因为同一张图片每次都先缩放到[256,512]的随机尺寸,然后裁剪出224x224的尺寸训练,实际上从效果来看使用了随机的error都比同类型VGG要低。
同时因为ImageNet数据集中物体大小不同,这样不同尺度的缩放可能对于大小物体的分类有益,从而涨点

Q则是测试时图像的最小边,这里是直接将Q的尺寸作为输入图像,那么问题来了训练输入和测试输入不一致,这对于有全连接层的网络是行不通的,所以作者将全连接层(训练好的参数)转换成了卷积层:

  • 第一个FC层转换为7x7的Conv
  • 后两个FC层转换为1x1的Conv

如果S固定,则Q=S;若S不固定,则S=(Qmax+Qmin)/2

经过最后三个假Conv层得到(尺寸变换的因为与输入尺寸有关,并且通道数等于分类数)特征图,然后将特征图转换为分类分数,原话是“ the class score map is spatially averaged (sum-pooled)”,也就是使用sum-pooling将特征图转换为了分类分数。

这部分更详细的介绍看看vgg net 全连接层改成卷积层,可以对任意宽高的图片进行测试


其次LRN可以看到加了没效果,所以后面也就没加了

然后结论上

  • 分类误差随着深度增加而减小
  • CD配置一样,只不过D中某些3x3卷积在C中变成了1x1卷积,可以看到使用1x1卷积的C更差。所以使用额外的非线性虽然有帮助(C比B好),但是使用了更大感受野的D更胜一筹,可以捕获上下文。
  • 19层的E的误差接近饱和了,但可能适合较大的数据集
  • 将B和5x5卷积的浅层比较(将B中2个3x3替换为了5x5,感受野相同),发现5x5浅层的error高了7%,证明小的比大的好
  • 抖动的S比固定的S的效果好

3.2 多尺度评估

4.1中讲了测试时尺度固定,多尺度就是测试时尺度不固定。

后面的error就是测试时不同尺度Q的均值。

考虑到测试时尺寸与训练时尺寸差太大也不好,所以Q取值=(S−32,S,S+32)(S-32,S,S+32)(S−32,S,S+32),如S不固定则=(Smax+Smin)/2(S_{max}+S_{min})/2(Smax​+Smin​)/2

从表4可以看出测试集尺度抖动得到了更好的性能(与表3相比)

3.3 MULTI-CROP EVALUATION

太复杂,而且提升只有2个小数点
VGG神经网络论文中multi-crop evaluation的结论什么意思?

3.4 CNN融合

在ILSVRC12和13年提交过成绩,当时的性能如表6

ILSVRC submission是提交给ILSVRC的,作者训练了7个模型进行融合
post-submission是后面作者融合两个表现最好的多尺度模型组合
(单模型最好的表5的模型E,7.1%的error)

3.5 ILSVRC2014(与最新技术相比)

众所周知,VGG在ILSVRC2014获得了第2名(第一是GoogleNet,即InceptionV1)

在ILSVRC2014上,GoogleNet成绩是6.7(6.665),VGG是7.3(看提交成绩)

4、结论

评估了非常深的CNN用于大规模图像分类。

证明了深度有利于分类精度,实现了最佳性能。

在附录B还展示了在其他数据集上的泛化能力

(VGG)VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION--Karen Simonyan相关推荐

  1. (VGG)VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

    本文研究了卷积网络深度对其大规模图像识别设置精度的影响.我们的主要贡献是使用非常小的(3×3)卷积滤波器的架构对深度增加的网络进行深入的彻底评估,这表明通过将深度推到16-19重量层,可以实现对现有技 ...

  2. 卷积神经网络CNN(3)—— FCN(Fully Convolutional Networks)要点解释

    卷积神经网络CNN(3)-- FCN(Fully Convolutional Networks)要点解释

  3. 【论文阅读及复现】(2017)Densely Connected Convolutional Networks + Pytorch代码实现

    文章目录 一.摘要 二.Dense Net 网络结构 三.Dense Block 四.PyTorch-GPU代码实现 论文来源:(2017)Densely Connected Convolutiona ...

  4. 《Very Deep Convolutional Networks For Large-Scale Image Recognition》翻译

    1 引言 2 ConvNet配置 2.1 架构 2.2 配置 2.3 讨论 3 分类框架 3.1 训练 3.2 测试 3.3 实现细节 4 分类实验 4.1 单尺度评估 4.2 多尺度评估 4.3 多 ...

  5. 【论文翻译】VGG网络论文中英对照翻译--(very deep convolutional networks for large-scale image  recognition)

    [开始时间]2018.09.23 [完成时间]2018.09.24 [论文翻译]VGG网络论文中英对照翻译--(very deep convolutional networks for large-s ...

  6. 论文笔记:Very deep convolutional networks for large-scale image recognition(VGG)

    一.基本信息 标题:Very deep convolutional networks for large-scale image recognition 时间:2014 出版源:arXiv 论文领域: ...

  7. 深度学习论文阅读图像分类篇(三):VGGNet《Very Deep Convolutional Networks for Large-Scale Image Recognition》

    深度学习论文阅读图像分类篇(三):VGGNet<Very Deep Convolutional Networks for Large-Scale Image Recognition> Ab ...

  8. 【图像超分辨率】(VDSR)Accurate Image Super-Resolution Using Very Deep Convolutional Networks

    Accurate Image Super-Resolution Using Very Deep Convolutional Networks 摘要 介绍 2 相关工作 2.1 图像超分辨率的卷积神经网 ...

  9. 深度学习论文随记(二)---VGGNet模型解读-2014年(Very Deep Convolutional Networks for Large-Scale Image Recognition)

    深度学习论文随记(二)---VGGNet模型解读 Very Deep Convolutional Networks forLarge-Scale Image Recognition Author: K ...

  10. VGG - Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition ICLR 2015 (oral) http://www.robot ...

最新文章

  1. Java 10更新汇总,新的编译器通吃主流编程语言
  2. ASP.NET Core 2.2+Quartz.Net 实现Web定时任务
  3. 环境科学跨考专计算机,环境 计算机相结合 跨学科
  4. getComputedStyle与currentStyle获取样式(style/class)
  5. 中国移动虚拟服务器设置,在中国移动公众服务云平台上服务器虚拟化的设计与实现...
  6. 6410裸机开发教程下载
  7. 完美仿MSN右下角弹出广告代码并可自动消失,附带关闭按钮
  8. 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制隔离级别
  9. 如何解决佳能mp288打印机P08、P07报错
  10. Android中的armeabi等如何适配
  11. 【MySQL】JDBC下载
  12. 来自一个大牛对ACM的总结
  13. 领域驱动设计实践(战术篇)
  14. Word2vec词向量
  15. c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc
  16. HTML小游戏15 —— 网页版3D反恐英雄(附完整源码)
  17. SDUTOJ 2178 - 链表的有序集合
  18. ADNI数据集-数据分析11.17
  19. 平常水题 - Atcoder 058 - C - 怪文書 / Dubious Document(字符串的处理)
  20. 锂电池充放电曲线、设置充电电流、检测TP4054的3种充电状态

热门文章

  1. 怎么讲bpm文件读入Matlab,bpm Matlab环境下基于期望传播算法的贝叶 类器工 238万源代码下载- www.pudn.com...
  2. TFN系列超声波探伤仪为什么在众多品牌竞争中脱颖而出
  3. 清代徽州家政与乡族社会的善治
  4. 计算机的神奇功能华为,接上线就变PC!华为Mate 10的电脑模式究竟好用不?
  5. deb文件的安装与卸载
  6. 销售人员必看~~三个经典电话销售案例
  7. Chrome浏览器下载文件名乱码
  8. 密码编码学与网络安全
  9. java中美元符号的作用_MyBatis中#号与美元符号的区别
  10. php 过滤所有符号,php过滤所有特殊符号