GoogLeNetGoing deeper with convolutions

Inception结构

目前最直接提升DNN效果的方法是increasing their size,这里的size包括depth和width两方面。在有足够的labeled training data 时这种方法是最简单以及稳妥的方法来获得一个高质量的模型。但是往往实际中大的网络会有更多的参数,当training data数量很少时,很容易出现overfitting,并且大的网络需要的计算资源也是更多。这是需要将fully connected改变成sparsely connected:

 

1x1大小卷积最主要的作用是dimension reduction,否则会限制网络的大小,1x1卷积核的应用允许从depth和width上都增大网络,而不会带来大量计算的负担。

在Inception中1x1考虑到local region,3x3和5x5则考虑到spatially spread out clusters。所以在lower的层中主要是local信息,所以1x1的output number要多一些,但在higher的层中往往捕捉的是features of higher abstraction,所以在higher layer中3x3和5x5的比例应该增大。

但在这种naïve Inception中有一个跟严重的问题是:经过结构以后的卷积output number增加太多,这样就导致只经过几个stage就会出现computation blow up问题。因为pooling只能改变mapping的大小,而不改变output num,所以当使用naïve Inception时需要concatenate三个卷积的输出以及pooling的输出,所以当上一层的channel较大时,输出的output number会更大。并且5x5的卷积即使在output number适中时,当channel极大时,计算量也是巨大的。

上述问题引出了带有dimension reduction的Inception结构:这种方法源于即使一个低维度的embedding也能包含一个相对大的image patch的很多信息。但embedding压缩过于稠密,但需要这种结构的稀疏性,所以在耗费计算量的3x3和5x5卷积之前使用1x1 reduction减少卷积输入的channel。在使用reduction后同时使用ReLU一方面降维减少输入channel数量,另一方面增强非线性。

上述的结构主要有两个优点:一是可以再每个stage增加units的数量,仅为即使output number多了,在下一个stage时也会通过dimension reduction去减少channel数,所以不会出现计算爆炸的情况。二是这种结构满足了在不同的scale下处理视觉信号然后聚集在一起输入到下一个阶段以至于可以继续从多scales下提取特征。

GoogLeNet22层)

所有的卷积包括Inception都使用ReLU,训练图像大小为224x224,RGB三通道,减均值。“#3x3 reduce”和“#5x5 reduce”表示1x1 reduction layer的数量。“pool proj”表示max-pooling后1x1 projection layer的数量。在网络中,并没有完全使用Inception,一开始的三层使用的是原始的卷积,这样是出于技术的原因(memory efficiency during training),但不是必须。

网络中的最后使用的是average pooling,而不是全连接,结果发现可以提高0.6%,但使用dropout是必要的,使用linear线性层是为了方便fine-tuning模型。

另外,发现在网络中间层产生的特征很有判别性,所以在中间层添加辅助分类器(auxiliary classifiers)希望在较浅的层中获得具有判别性的分类器,为反传过程增强梯度并且增强正则化。在训练过程中这些损失都会加权计入总损失(0.3),详细的结构见论文。

Training Methodology

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

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

  1. 集成方法:训练了7个相同结构的GoogLeNet模型,初始化方法,学习率调整策略相同,图像采用(patch)以及随机输入的顺序不相同。
  2. 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
  3. multiple crops的softmax概率取平均效果最好。

解读(GoogLeNet)Going deeper with convolutions的更多相关文章

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

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

  2. Going Deeper with Convolutions (GoogLeNet)

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

  3. Going deeper with convolutions 这篇论文

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

  4. Going Deeper with Convolutions阅读摘要

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

  5. [论文阅读]Going deeper with convolutions(GoogLeNet)

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

  6. 【网络结构】GoogLeNet inception-v1:Going deeper with convolutions论文笔记

    目录 0. 论文链接 1. 概述 2. inception 3. GoogleNet 参考链接 @ 0. 论文链接 1. 概述   GoogLeNet是谷歌团队提出的一种大体保持计算资源不变的前提下, ...

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

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

  8. Going deeper with convolutions(GoogLeNet、Inception)

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

  9. 论文阅读笔记四十二:Going deeper with convolutions (Inception V1 CVPR2014 )

    论文原址:https://arxiv.org/pdf/1409.4842.pdf 代码连接:https://github.com/titu1994/Inception-v4(包含v1,v2,v4)   ...

随机推荐

  1. osg 基本几何图元

    转自:osg 基本几何图元 //osg 基本几何图元 // ogs中所有加入场景中的数据都会加入到一个Group类对象中,几何图元作为一个对象由osg::Geode类来组织管理. // 绘制几何图元对 ...

  2. Android分类前言

    柚子园项目搁置后,半年多时间里都在开发微信公众平台和在公司实习,用的都是python,django,bottle,已经很久没有开发android了.技术的东西,不用就容易生疏甚至忘掉.刚好现在需要写毕 ...

  3. javascript随手记

    编码规范 避免使用全局变量 写在所有函数外面的变量就是全局变量. 之所以要避免使用全局变量是因为:如果有多个类库的话,它们都定义了一个名字的变量.这时候后引入的类库中该变量的值就会覆盖前面引入的类库中 ...

  4. oracle数据库的建表,删除字段,添加字段,修改字段,修改字段......

    1. 使用oracle创建一张表: SQL> create table loginuser( id ,), username ), password ), email ), descriable ...

  5. 【win8技巧】win8一键截图自动保存到文件夹

    以前截图都是按着键盘的PrtSc键,但是这个只是保存到剪贴板,还需要粘贴才行. 现在win8可以直接使用 Win + PrtSc 进行全屏截图,不仅保存到剪贴板,而且自动保存到[库]--[图片]--[ ...

  6. RWD

    http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries http://www.webdesigns ...

  7. Echarts-JAVA

    http://www.oschina.net/p/echarts-java http://my.oschina.net/flags/blog/316920

  8. [Gauss]POJ1222 EXTENDED LIGHTS OUT

    题意:给一个5*6的矩阵 1代表该位置的灯亮着, 0代表该位置的灯没亮 按某个位置的开关,可以同时改变 该位置 以及 该位置上方.下方.左方.右方, 共五个位置的灯的开.关(1->0, 0-&g ...

  9. scrollView的几个属性contentSize contentOffset contentInset

    01-  ontentSize是scrollview可以滚动的区域 比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960), 代表你的scrollvie ...

  10. 带你走进EJB--MDB实现发送邮件(3)

    接上篇,在业务逻辑中已经发送JMS消息,而接下来的消息驱动Bean作为JMS消息监听器,主要是负责监听指定的JMS消息,此时已经接受到JMS的消息,那么MDB的onMessage()方法会被触发.调用 ...