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. Distributed R

    R语言的分布式目前有这几个产品: (A)RHadoop:对hadoop族系的产品,其中提供了以下的组件 A.1 rhdfs  浏览读取增加修改hdfs上面的文件数据: A.2 rhbase 浏览读取增 ...

  2. Render Texture的使用(截取rendertexture的一帧到Texture2D)

    游戏里人物角色太多,每个角色都要有张头像或全身照等,这样就必须截取大量的图片,花费大量的时间,有时截取的不满意还得重新截,即浪费时间又浪费精力.所以就想了个投机取巧的方法.那就是用unity搭建一个照 ...

  3. JQ+AJAX实现多级联动

    利用JQ与AJAX实现三级联动实现的效果: 当前两级改变时,后边一级或两级都会改变: 使用的数据库: html代码: <!doctype html> <html lang=" ...

  4. Git Commit Template 提交模板

    多人协作开发一个项目时,版本控制工具是少不了的,git是linux 内核开发时引入的一个优秀代码管理工具,利用它能很好使团队协作完成一个项目.为了规范团队的代码提交,也方便出版本时的release n ...

  5. js构造函数传参

    1.直接传参并用this关键字初始化属性 function Person(name,age,learn){ this.name = name; this.age = age; this.learn = ...

  6. CSS使块半透明方法,兼容IE6

    前言 今天LOL玩机器人玩得真心不爽,实在崩溃,还是逛博客园比较爽些,记录自己的成长!说句实话我在编程方面确实是个菜鸟,菜到一种超神的地步,没一样自己特擅长的,悲催...... 废话少说,进入正题,H ...

  7. iOS 并发:NSOperation 与调度队列入门(1)

    一直以来,并发都被视为 iOS 开发中的「洪水猛兽」.许多开发者都将其视为危险地带,唯恐避之而不及.更有谣传认为,多线程代码应该尽力避免.笔者同意,如果你对并发的了解不够深入,就容易造成危险.但是,危 ...

  8. DataTable转换List<T>集合的方法

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data; ...

  9. jquery sortTable拖拽排序

    所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象   ui.helper - 表示sortable元素的JQuery对象,通常是当前元素的克隆对象   ...

  10. POJ 3352 Road Construction (边双连通分量)

    题目链接 题意 :有一个景点要修路,但是有些景点只有一条路可达,若是修路的话则有些景点就到不了,所以要临时搭一些路,以保证无论哪条路在修都能让游客到达任何一个景点 思路 :把景点看成点,路看成边,看要 ...