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. New Concept English three(16)

    35w/m 43 Mary and her husband Dimitri lived in the tiny village of Perachora in southern Greece. One ...

  2. JS中关于把函数作为另一函数的参数的几点小总结

    //JS中关于把函数作为函数的参数来传递的问题的小总结//第一,最简单的形式无参函数,直接形式函数的函数名放到括号中,再在执行部分这个函数即可.//当然调用时要穿另一个真正的定义好的函数/*funct ...

  3. 【PL/SQL编程】数据类型说明

    1. 数值类型 数值类型主要包括NUMBER.PLS_INTEGER.和BINARY_INTEGER 3种基本类型.NUMBER可以用来存储整数或浮点数,PLS_INTEGER和BINARY_INTE ...

  4. Android敏捷开发、CI(持续集成)探究

    比较老的几篇文章,依旧有学习价值 http://blog.csdn.net/baodinglaolang/article/details/9530695 http://blog.csdn.net/ba ...

  5. Vue(2) : Vue for Gank.io

    简介 最近学习Vue2.0,由于不懂前端知识,学习过程比较缓慢.文档学习过程如下: 通读vue官文 通读vue-router 2中文指南 学习axios 通读vuex官文 数据接口 再次感谢代码家的G ...

  6. Leetcode 590. N-ary Tree Postorder Traversal

    DFS,递归或者栈实现. """ # Definition for a Node. class Node: def __init__(self, val, childre ...

  7. Java 保存对象到文件并恢复 ObjectOutputStream/ObjectInputStream

    1.从inputFile文件中获取内容,读入到set对象: 2.然后通过ObjectOutputStream将该对象保存到outputFile文件中: 3.最后通过ObjectInputStream从 ...

  8. 用前序和中序重建二叉树 python

    程序实现了用二叉树的前序遍历序列和中序遍历序列重建二叉树,代码用python实现. 首先定义二叉树节点的类: class TreeNode: def __init__(self, x): self.v ...

  9. 看完前任三,想起我的前任java女程序员,她曾教会我……

    前任三最近非常火了,票房蹭蹭往上升,昨天也去电影院看了,想起了我的前任,她是一名女程序员,为了让我学好java,她曾经亲自教我Java的算法,学算法是件非常重要的事,在这忍住回忆的悲伤,分享给你们. ...

  10. java之接口

    背景 为了防止[多重继承]:(在面向对象的编程语言(例如java)中,指一个类可以同时继承多个父类的行为和特征功能)所引发的"致命方块",出现了接口. 使用  定义 public ...