(VGG)VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION--Karen Simonyan
- 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相关推荐
- (VGG)VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
本文研究了卷积网络深度对其大规模图像识别设置精度的影响.我们的主要贡献是使用非常小的(3×3)卷积滤波器的架构对深度增加的网络进行深入的彻底评估,这表明通过将深度推到16-19重量层,可以实现对现有技 ...
- 卷积神经网络CNN(3)—— FCN(Fully Convolutional Networks)要点解释
卷积神经网络CNN(3)-- FCN(Fully Convolutional Networks)要点解释
- 【论文阅读及复现】(2017)Densely Connected Convolutional Networks + Pytorch代码实现
文章目录 一.摘要 二.Dense Net 网络结构 三.Dense Block 四.PyTorch-GPU代码实现 论文来源:(2017)Densely Connected Convolutiona ...
- 《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 多 ...
- 【论文翻译】VGG网络论文中英对照翻译--(very deep convolutional networks for large-scale image recognition)
[开始时间]2018.09.23 [完成时间]2018.09.24 [论文翻译]VGG网络论文中英对照翻译--(very deep convolutional networks for large-s ...
- 论文笔记:Very deep convolutional networks for large-scale image recognition(VGG)
一.基本信息 标题:Very deep convolutional networks for large-scale image recognition 时间:2014 出版源:arXiv 论文领域: ...
- 深度学习论文阅读图像分类篇(三):VGGNet《Very Deep Convolutional Networks for Large-Scale Image Recognition》
深度学习论文阅读图像分类篇(三):VGGNet<Very Deep Convolutional Networks for Large-Scale Image Recognition> Ab ...
- 【图像超分辨率】(VDSR)Accurate Image Super-Resolution Using Very Deep Convolutional Networks
Accurate Image Super-Resolution Using Very Deep Convolutional Networks 摘要 介绍 2 相关工作 2.1 图像超分辨率的卷积神经网 ...
- 深度学习论文随记(二)---VGGNet模型解读-2014年(Very Deep Convolutional Networks for Large-Scale Image Recognition)
深度学习论文随记(二)---VGGNet模型解读 Very Deep Convolutional Networks forLarge-Scale Image Recognition Author: K ...
- 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 ...
最新文章
- Java 10更新汇总,新的编译器通吃主流编程语言
- ASP.NET Core 2.2+Quartz.Net 实现Web定时任务
- 环境科学跨考专计算机,环境 计算机相结合 跨学科
- getComputedStyle与currentStyle获取样式(style/class)
- 中国移动虚拟服务器设置,在中国移动公众服务云平台上服务器虚拟化的设计与实现...
- 6410裸机开发教程下载
- 完美仿MSN右下角弹出广告代码并可自动消失,附带关闭按钮
- 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制隔离级别
- 如何解决佳能mp288打印机P08、P07报错
- Android中的armeabi等如何适配
- 【MySQL】JDBC下载
- 来自一个大牛对ACM的总结
- 领域驱动设计实践(战术篇)
- Word2vec词向量
- c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc
- HTML小游戏15 —— 网页版3D反恐英雄(附完整源码)
- SDUTOJ 2178 - 链表的有序集合
- ADNI数据集-数据分析11.17
- 平常水题 - Atcoder 058 - C - 怪文書 / Dubious Document(字符串的处理)
- 锂电池充放电曲线、设置充电电流、检测TP4054的3种充电状态
热门文章
- 怎么讲bpm文件读入Matlab,bpm Matlab环境下基于期望传播算法的贝叶 类器工 238万源代码下载- www.pudn.com...
- TFN系列超声波探伤仪为什么在众多品牌竞争中脱颖而出
- 清代徽州家政与乡族社会的善治
- 计算机的神奇功能华为,接上线就变PC!华为Mate 10的电脑模式究竟好用不?
- deb文件的安装与卸载
- 销售人员必看~~三个经典电话销售案例
- Chrome浏览器下载文件名乱码
- 密码编码学与网络安全
- java中美元符号的作用_MyBatis中#号与美元符号的区别
- php 过滤所有符号,php过滤所有特殊符号