VGG:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

牛津大学 visual geometry group(VGG)Karen Simonyan 和Andrew Zisserman 于14年发表的论文。论文地址:https://arxiv.org/pdf/1409.1556.pdf。与alex的文章虽然都采用层和每层之间用pooling层分开,最后三层FC层(Fully Connected全连接层)。但是AlexNet每层仅仅含有一个Convolution层,VGG每层含有多个(2~4)个Convolution层。AlexNet的filter的大小7x7(很大)而VGG的filter的大小是3x3(最小)。它通过降低filter的大小,增加层数实现更佳的效果。以下为论文解读。

ABSTRACT

研究了卷积网络深度对其大型图像识别的精准度的影响。主要贡献是使用非常小(3×3)卷积滤波器,将神经网络层次深度推到16-19层。2014年ImageNet分别在localisation和classification赛中获得了第一名和第二名。 同时模型对其他数据集很好地泛化。

1 INTRODUCTION

本文介绍了ConvNet架构的另一个重要方面设计 - 深度。很多人尝试改善2012年提出的AlexNet来实现更好的效果,ZFNet在第一卷积层使用更小的卷积(receptive window size)和更小的步长(stride)2,另一种策略是多尺度地在整张图像上密集训练和测试。

2 CONVNET CONFIGURATIONS

受到Ciresan et al.(2011); Krizhevsky et al. (2012).启发。为了公平测试深度带来的性能提升,VGGNet所有层的配置都遵循了同样的原则。

2.1 ARCHITECTURE

输入fixed-size 224 × 224 RGB image。数据预处理:每个像素上减去RGB的均值。在卷积层中小的Filter尺寸为3*3,有的地方使用1*1的卷积,这种1*1的卷积可以被看做是对输入通道的线性变换。卷积步长(stride)设置为1个像素,3*3卷积层的填充(padding)设置为1个像素。池化层采用max-pooling,共有5层,池化是2*2,步长为2。通过Relu进行非线性处理,增加网络的非线性表达能力。不使用局部响应标准化(LRN),这种标准化并不能在ILSVRC数据集上提升性能,却导致更多的内存消耗和计算时间。

2.2 CONFIGURATIONS

2.3 DISCUSSION

与AlexNet和ZFNet不同,VGGNet在网络中使用很小的卷积。用多个小filter代替大的filter更有好处。例如三个3*3卷积而不是一个7*7的卷积,因为每层后都有ReLU,我们结合了三个非线性整流层而不是单一层,这使得决策功能更具区分性。同类的网络例如Goodfellow et al的11层网络及GoogLeNet都采用的小的filter。

3 CLASSIFICATION FRAMEWORK

3.1 TRAINING

the input crops from multi-scale training images把原始 image缩放到最小边S>224后在图像上提取224*224crops,进行训练。

mini-batch gradient descent,batch size为256,momentum =0.9,权重衰减0.0005。

Dropout 在前两个全连接层。Dropout ratio设置为0.5。

3.2 TESTING

重缩放到尺寸Q,在网络中测试。细节论文介绍的很详细。

3.3 IMPLEMENTATION DETAILS

介绍了使用的机器及系统配置及训练时间。

4 CLASSIFICATION EXPERIMENTS

4.1 SINGLE SCALE EVALUATION

首先实验证明A-LRN network中用local response normalisation没有提升模型A的性能。所以在更深层次architectures (B–E)作者没有使用 normalisation。

训练数据集数据提升方法scale jittering显著的提高实验结果。

4.2 MULTI-SCALE EVALUATION

与表3对比,采用scale jittering在多尺度上评估可以提高分类的准确度。如表4所示。

4.3 MULTI-CROP EVALUATION

表5展示的是多剪裁评估及密集评估,及两者结合的效果。单模型通过与 dense ConvNet evaluation对比,效果好一点,如果结合两个方法,多剪裁和密集型则效果还可以提升一点。

4.4 CONVNET FUSION

结合多个卷积网络的sofamax输出,将多个模型融合在一起输出结果。表6展示的是结果。

4.5 COMPARISON WITH THE STATE OF THE ART

与当前STATE OF THE ART的模型做比较。与之前12,13的网络对比VGG优势明显。与GoogLeNet比较单模型好一点,7个网络融合不如googleNet。

5 CONCLUSION

本文的19层深的卷积神经网络,在效果和泛化能力上有很好的成果。论证了深度对于cv问题的重要性。

本文参考

https://arxiv.org/pdf/1409.1556.pdf

http://m.blog.csdn.net/muyiyushan/article/details/62895202

卷积神经网络之VGG网络模型学习的更多相关文章

  1. 卷积神经网络之AlexNet网络模型学习

    ImageNet Classification with Deep Convolutional Neural Networks 论文理解  在ImageNet LSVRC-2010上首次使用大型深度卷 ...

  2. 卷积神经网络之ResNet网络模型学习

    Deep Residual Learning for Image Recognition 微软亚洲研究院的何凯明等人 论文地址 https://arxiv.org/pdf/1512.03385v1.p ...

  3. 了解卷积神经网络如何使用TDA学习

    在我之前的文章中,我讨论了如何对卷积神经网络(CNN)学习的权重进行拓扑数据分析,以便深入了解正在学习的内容以及如何学习它. 这项工作的重要性可归纳如下: 它使我们能够了解神经网络如何执行分类任务. ...

  4. 卷积神经网络之VGG

    2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发出了新的深度卷积神经网络:VGGNet,并取得了ILSVRC2014比 ...

  5. 卷积神经网络CNN与深度学习常用框架的介绍与使用

    一.神经网络为什么比传统的分类器好 1.传统的分类器有 LR(逻辑斯特回归) 或者 linear SVM ,多用来做线性分割,假如所有的样本可以看做一个个点,如下图,有蓝色的点和绿色的点,传统的分类器 ...

  6. 深度学习之卷积神经网络(CNN)学习

    1.卷积神经网络中卷积的核心意义是什么?每一组卷集核 权重是一个抽特征的滤波器, 从卷集核的角度抽取特征 2.卷积神经网络很好的特性参数共享机制每一个神经元固定一组a x b x c(图像的通道数) ...

  7. 卷积神经网络(CNN)学习算法之----基于LeNet网络的中文验证码识别

    由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013+Python2.7.12环境下的C ...

  8. 【深度学习与TensorFlow 2.0】卷积神经网络(CNN)

    注:在很长一段时间,MNIST数据集都是机器学习界很多分类算法的benchmark.初学深度学习,在这个数据集上训练一个有效的卷积神经网络就相当于学习编程的时候打印出一行“Hello World!”. ...

  9. SIGAI深度学习第七集 卷积神经网络1

    讲授卷积神经网络核心思想.卷积层.池化层.全连接层.网络的训练.反向传播算法.随机梯度下降法.AdaGrad算法.RMSProp算法.AdaDelta算法.Adam算法.迁移学习和fine tune等 ...

随机推荐

  1. 移动设备web开发插件iScroll的使用详解

    地址:http://blog.nnnv.cn/index.php/archives/65

  2. free和delete把指针怎么啦?

    别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉. 用调试器跟踪示例7-5,发现指针p被free以后其地址仍然不变(非NULL) ...

  3. JSON Schema(模式)

    JSON Schema指的是数据交换中的一种虚拟的“合同”. JSON验证器负责验证语法错误,JSON Schema负责提供一致性检验. JSON Schema是数据接收方额第一道防线,也是数据发送方 ...

  4. NamedParameterJdbcTemplate常用方法总结

    数据库结构 1.插入/修改/删除数据,使用update方法 插入数据1 API: int update(String sql, Map< String, ? > paramMap) 示例: ...

  5. [Linux] 使用rename批量重命名文件

    例如把所有png文件的后缀改为jpg $ rename 's/png/jpg/' *png

  6. Objective C----手动管理内存和自动管理内存

    对象的引用计数(Reference Counting) 正常情况下,当一段代码需要访问某个对象时,该对象的引用的计数加1:当这段代码不再访问该对象时,该对象的引用计数减1,表示这段代码不再访问该对象: ...

  7. ubuntu 安装nodejs/npm

    安装发行稳定版 Ubuntu 默认仓库里带有Node.js,版本较旧,这并不是最新版,但是应该很稳定.执行如下命令:   1 2 sudo apt-getupdate sudo apt-getinst ...

  8. javaScript之函数(基础篇)

    函数定义 定义一: function a(x,y......){if(x>y){return x;}else{return y;}} 详细讲解:function是定义函数的关键字: a(x,y. ...

  9. 使用 Task.Wait()?立刻死锁(deadlock)

    最近读到一篇异步转同步的文章,发现其中没有考虑到异步转同步过程中发生的死锁问题,所以特地在本文说说异步转同步过程中的死锁问题. 文章作者 林德熙 已经修复了描述: - win10 uwp 异步转同步 ...

  10. fortran语法笔记

    1,数据类型,fortran支持整形,real型,logical型,char型,复数型.整形分为为长整形和短整形定义长整形的方法 同时声明多个变量的话可以用逗号隔开. 加两个冒号的话可以直接在声明的时 ...