本文采用的GoogLenet网络(代号Inception)在2014年ImageNet大规模视觉识别挑战赛取得了最好的结果,该网络总共22层。

Motivation and High Level Considerations

提升深度神经网络的一个最直接的方法就是增加网络的大小。这包括增加网络的深度(网络的层数)和宽度(每一层神经元的个数)。这种简单粗暴的方法有两个缺点:1)更大网络意味着更多数量的参数,这非常容易导致过拟合。2)更大的网络意味着要使用更多的计算资源

解决这两个问题的一个基本的方式就是引入稀疏性,即将全连接层替换为稀疏连接(卷积层其实就是一个稀疏连接)(减少参数,降低过拟合风险)。而非均匀稀疏网络的弊端是计算效率不高,可以采用将多个稀疏矩阵合并成 相关的稠密子矩阵的方法来解决(即减少计算资源使用)。

Architectural Details

  Inception 结构的主要思路是怎样用密集成分来近似最优的局部稀疏结构

对上图做以下说明:

  1. 采用不同大小的卷积核意味着不同大小的感受野(尺寸不同的卷积核可以提取不同尺寸的特征,单层的特征提取能力增强了),最后拼接意味着不同尺度特征的融合;
  2. 之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;
  3. 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。
  4. 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。

  但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,文章借鉴Network in Network,采用1x1卷积核来进行降维。在Filter concatenation层将1×1/3×3/5×5的卷积结果连接起来。如此设计的好处在于防止了层数增多带来的计算资源的爆炸性需求。从而使网络的宽度和深度均可扩大。使用了Inception层的结构可以有2-3×的加速。

  例如:上一层的输出为100x100x128,经过具有256个输出的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256。其中,卷积层的参数为128x5x5x256。假如上一层输出先经过具有32个输出的1x1卷积层,再经过具有256个输出的5x5卷积层,那么最终的输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256,大约减少了4倍。

  具体改进后的Inception Module如下图:

Training Methodology

训练采用随机梯度下降(SGD),momentum为0.9,固定学习率每个8 epochs减小4%。训练策略一直在变化,参考文章Some improvements on deep convolutional neural network based image classification。

在测试中使用提升准确率的技巧

集成方法:训练了7个相同结构的GoogLeNet模型,初始化方法,学习率调整策略相同,图像采用(patch)以及随机输入的顺序不相同。

aggressive cropping方法:ILSVRC中使用的很多图是矩形,非正方形。将图像resize成4种scales,使得最短的边分别为256,288,320和352,然后从左、中、右分别截取方形square图像(如果是肖像图像,则分为上、中、下),然后对于每个square图像从4个角及中心截取224x224 square images,并把原square图像resize成224x224,在对上面5种做镜像变换。所以这样一幅图像可以得到4x3x6x2=144个crops。参考:Imagenet classification with deep convolutional neural networks

multiple crops的softmax概率取平均效果最好。

注:

(1)本文的主要想法其实是想通过构建密集的块结构来近似最优的稀疏结构,从而达到提高性能而又不大量增加计算量的目的。GoogleNet的caffemodel大小约50M,但性能却很优异。

(2)1X1卷积核作用:

1. 实现跨通道的交互和信息整合

2. 进行卷积核通道数的降维和升维

http://www.caffecn.cn/?/question/136

(3)Network-in-Network是Lin等人[12]为了增加神经网络表现能力而提出的一种方法。在他们的模型中,网络中添加了额外的1 × 1卷积层,增加了网络的深度。我们的架构中大量的使用了这个方法。但是,在我们的设置中,1 × 1卷积有两个目的:最关键的是,它们主要是用来作为降维模块来移除卷积瓶颈,否则将会限制我们网络的大小。这不仅允许了深度的增加,而且允许我们网络的宽度增加但没有明显的性能损失。

参考文献:

http://blog.csdn.net/Quincuntial/article/details/76457409?locationNum=7&fps=1

http://www.cnblogs.com/Allen-rg/p/5833919.html

http://www.cnblogs.com/neuface/archive/2016/03/11/5265740.html

附录:GoogLeNet网络结构:

图片出处见水印

[论文阅读]Going deeper with convolutions(GoogLeNet)的更多相关文章

  1. Going Deeper with Convolutions (GoogLeNet)

    目录 代码 Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]. computer vision and pattern ...

  2. 【CV论文阅读】Going deeper with convolutions(GoogLeNet)

    目的: 提升深度神经网络的性能. 一般方法带来的问题: 增加网络的深度与宽度. 带来两个问题: (1)参数增加,数据不足的情况容易导致过拟合 (2)计算资源要求高,而且在训练过程中会使得很多参数趋向于 ...

  3. Going deeper with convolutions(GoogLeNet、Inception)

    从LeNet-5开始,cnn就有了标准的结构:stacked convolutional layers are followed by one or more fully-connected laye ...

  4. 解读(GoogLeNet)Going deeper with convolutions

    (GoogLeNet)Going deeper with convolutions Inception结构 目前最直接提升DNN效果的方法是increasing their size,这里的size包 ...

  5. 图像分类(一)GoogLenet Inception_V1:Going deeper with convolutions

    论文地址 在该论文中作者提出了一种被称为Inception Network的深度卷积神经网络,它由若干个Inception modules堆叠而成.Inception的主要特点是它能提高网络中计算资源 ...

  6. Going deeper with convolutions 这篇论文

    致网友:如果你不小心检索到了这篇文章,请不要看,因为很烂.写下来用于作为我的笔记. 2014年,在LSVRC14(large-Scale Visual Recognition Challenge)中, ...

  7. Going Deeper with Convolutions阅读摘要

      论文链接:Going deeper with convolutions 代码下载: Abstract We propose a deep convolutional neural network ...

  8. 论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》

     论文阅读:Face Recognition: From Traditional to Deep Learning Methods  <人脸识别综述:从传统方法到深度学习>     一.引 ...

  9. 论文阅读(Zhuoyao Zhong——【aixiv2016】DeepText A Unified Framework for Text Proposal Generation and Text Detection in Natural Images)

    Zhuoyao Zhong--[aixiv2016]DeepText A Unified Framework for Text Proposal Generation and Text Detecti ...

随机推荐

  1. 解析xml文件的四种方式

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

  2. Servlet的三个域对象

    我们在开发javaweb项目的时候,经常会遇到jsp和Servet之间互相传值,既然有传值,就要有对象来传,这里先说Servlet的三大域对象,request,session,application他 ...

  3. phpStorm安装方法

    1)下载 http://big2.h5gamen.com/soft/jetbrainscrack-2.6.2.zip 放到phpstorm安装目录下的lib文件夹 如放到f盘 F:\PhpStorm ...

  4. 01-Python的介绍_Python编程之路

    首先用一句业内非常出名的话来介绍Python "人生哭短,我用Python" 这也是Python宣传时经常说的一句话 从这句话中,可以非常清楚Python他到底优点在哪里,为什么要 ...

  5. 走进webpack(1)--环境拆分及模块化

    初级的文章和demo已经基本完成了,代码也已经上传到了我的github上,如果你对webpack的使用并不是十分了解,那么建议你回头看下走近系列,里面包括了当前项目中使用频繁的插件,loader的讲解 ...

  6. linux新建用户登录不了

    useradd----创建用户命令 简单的创建普通用户(当然得在root登录下执行) useradd username -p password userdel username 删除用户 用上面的命令 ...

  7. Redis --> 为redis分配新的端口

    为redis分配新的端口 为redis分配一个8888端口,操作步骤如下:1.$REDIS_HOME/redis.conf重新复制一份,重命名为redis8888.conf.2.打开redis8888 ...

  8. JWT 简介

    JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息 ...

  9. 面试常考---html篇

    1.html5新特性,语义化 HTML5为我们提供了一系列的语义标签. 1.<section></section> 定义文档中的主体部分的节.段. 2.<article& ...

  10. 2018.3.28html学习笔记

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...