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. hdu 5654 xiaoxin and his watermelon candy 树状数组维护区间唯一元组

    题目链接 题意:序列长度为n(1<= n <= 200,000)的序列,有Q(<=200,000)次区间查询,问区间[l,r]中有多少个不同的连续递增的三元组. 思路:连续三元组-& ...

  2. Lucene基础(一)--入门

    Lucene介绍 lucene的介绍,这里引用百度百科的介绍Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引 ...

  3. 史上最全github使用方法:github入门到精通--备用

    [初识Github] 首先让我们大家一起喊一句“Hello Github”.YEAH!就是这样. Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理 ...

  4. Bootstrap简易使用指南

    1.框架 1.1全局样式 使用HTML5的doctype,scaffolding.less中定义全局样式,从2开始使用normalize.css,并使用reset.less进行简化 1.2默认栅格系统 ...

  5. SWFUpload下载地址

    SWFUpload托管在谷歌代码上面,点击下载: https://code.google.com/p/swfupload/

  6. SqlServer2008 设置修改表设计限制

    我记起来了 SQL Server 2008 对操作的安全性进行了限制 你要在Management Studio菜单栏 -工具-选项,弹出选项窗口:把 “阻止保存要求重新创建表的更改” 请的勾去掉.

  7. 标准初始化css样式表

    body { font-size:12px; line-height:1.3; font-family:'微软雅黑', Tahoma,Helvetica,Arial,'宋体', sans-serif; ...

  8. hadoop2.4.0 安装配置 (2)

    hdfs-site.xml 配置如下: <?xml version="1.0" encoding="UTF-8"?> <?xml-styles ...

  9. hbase 0.96 java 示例

    import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; impo ...

  10. easyui源码翻译1.32--Tree(树)

    前言 使用$.fn.tree.defaults重写默认值对象.下载该插件翻译源码 树控件在web页面中一个将分层数据以树形结构进行显示.它提供用户展开.折叠.拖拽.编辑和异步加载等功能. 源码 /** ...