Going Deeper with Convolutions(Inception v1)笔记
目录
- Abstract
- Introduction
- Related Work
- Motivation and High Level Considerations
- Architecture Details
- GoogLeNet
- Training Methodology
Abstract
该网络结构可以在增加网络宽度和深度的同时保持计算预算不变。结构的选择基于Hebbian原理和多尺度处理的直觉。
Introduction
First of All
- 图像识别和对象检测方面的进步,不但来源于更强的硬件、更大的数据集和更大的模型,而且主要是因为新的思路、算法和改进之后的网路结构。
例如Girshick大神的R-CNN,不是只利用深层网路或更大的模型,而是要结合深层结构和经典计算机视觉算法。 - 移动和嵌入式计算使得算法(CNN)的效率越来越重要。
Inception
"We need to go deeper"(盗梦空间里的台词)
Depth
- 一个新的组织水平(Inception module)
- 网络深度的增加
Related Work
- 在大的数据集上,趋势是增加层数和层的size,同时使用dropout解决过拟合问题
- 多尺度:一种类似灵长类视觉皮层的机制(primate visual cortex),但是Inception结构有所不同(Arora的论文)
- Inception是学习得到的
- Inception会在网络中重复多次
- NIN:1x1的卷积可以降低维度,限制网络的大小
- R-CNN:两步检测,本文提出了类似的pipeline,但是有改进
- 多边框(multi-box)
- 更好的候选框
Motivation and High Level Considerations
增加网络的深度和宽度会带来两个问题
- 过拟合
- 所需计算资源的暴增(二次方)
解决思路
- 使用稀疏连接结构
- Arora的开创性工作:根据特征和输出聚类之间的相关性逐层进行学习,得到最优网络结构
- Hebbian原理:neurons that fire together, wire together
不利因素
- 现今的计算架构对非均匀(non-uniform)稀疏数据结构的数值计算十分低效
- 即使算数运算减少100倍,计算稀疏矩阵也不一定能成功
- 当使用充分改进、精心调整、尽可能利用底层CPU和GPU硬件细节,使得密集矩阵(dense matrix)的乘法速度极快的数值运算库时,差距会进一步增大
- 目前面向视觉的机器学习系统中实现空间域稀疏性的方式是使用卷积
- 传统上(LeNet5)使用随机的稀疏连接表,以打破对称性,改进学习能力
- 从AlexNet开始又回到全连接方式,以便更好的优化并行计算
- 结构上的均一性、大量的滤波器和更大的batch size允许使用高效的密集计算(dense computation)
解决方法
- 是否存在一种网络结构,可以通过计算密集矩阵充分挖掘目前的硬件性能,从而利用额外的稀疏性,甚至是在滤波器层面
- 文献:聚类
- 具有可行性(It dose not seem far-fetched)
Starting
- 第一作者(C.Szegedy)评估一个复杂的网络拓扑结构构建算法的假设输出,该网络试图逼近Arora提出的稀疏结构
- 尽管有很大的推测性,但仅仅两轮迭代之后,就看到了不错的结果(modest gains),最终建立起了Inception结构
注意
- 结果的改善是否归因于Inception结构的设计原则是值得深究的
- 这些原则在其他领域是否可以构建更好的网络
Architecture Details
The Main Idea
- 在卷积视觉网络中如何逼近最优局部稀疏结构,并由现有的密集计算工具(卷积)实现
Inception
- Figure2.a(可以进一步参考Arora的论文和NIN)
- 用1x1的卷积对局部区域的相关单元(理解为像素???)进行聚类
- 用3x3和5x5的卷积对空间上分散的相关单元进行聚类
- 池化是CNN中必要的结构
- Figure2.b
- 直接使用a结构,越到后面堆积的层越多,参数越多,非常低效
- 使用维度下降和投影
- 先卷积后降维会破坏特征图的稀疏性,因为降维是一个压缩过程,是一种密集性的信息表达方式,更难以去建模(先池化后降维???)
- 前几层为传统的卷积操作
- 现有架构计算效率的原因
- 优势
- 增加计算单元不会导致计算复杂度爆表
- 符合视觉信息的多尺度处理方式
- 实践
- 建立精度稍低,但是计算成本更低的版本
GoogLeNet
- 224x224,减均值
- 所有降维和投影之后都使用ReLU
- 22个有参数的层(卷积层),总层数大约100
- 使用平均池化代替全连接层
- dropout
- 网络中间层产生的特征或许具有非常高的可区分性
- 添加辅助分类输出(相当于小网络)
- 增强底层分类器的可discrimination
- 增加梯度信号
- 提供额外的正则化
- 训练时loss的权重为0.3
- 添加辅助分类输出(相当于小网络)
Training Methodology
说不清那个trick更有用,太乱
- DistBelief
- SGD with 0.9 momentum
- 学习率每8个epoch降低4%
- Polyak averaging
- 随机crop,大小8%-100%,高宽比3/4或4/3
- photometric distortions
- random interpolation methods
Going Deeper with Convolutions(Inception v1)笔记的更多相关文章
- 论文阅读笔记四十二:Going deeper with convolutions (Inception V1 CVPR2014 )
论文原址:https://arxiv.org/pdf/1409.4842.pdf 代码连接:https://github.com/titu1994/Inception-v4(包含v1,v2,v4) ...
- 解读(GoogLeNet)Going deeper with convolutions
(GoogLeNet)Going deeper with convolutions Inception结构 目前最直接提升DNN效果的方法是increasing their size,这里的size包 ...
- GoogLeNet 之 Inception v1 v2 v3 v4
论文地址 Inception V1 :Going Deeper with Convolutions Inception-v2 :Batch Normalization: Accelerating De ...
- 图像分类(一)GoogLenet Inception_V1:Going deeper with convolutions
论文地址 在该论文中作者提出了一种被称为Inception Network的深度卷积神经网络,它由若干个Inception modules堆叠而成.Inception的主要特点是它能提高网络中计算资源 ...
- Going deeper with convolutions 这篇论文
致网友:如果你不小心检索到了这篇文章,请不要看,因为很烂.写下来用于作为我的笔记. 2014年,在LSVRC14(large-Scale Visual Recognition Challenge)中, ...
- 深度学习面试题20:GoogLeNet(Inception V1)
目录 简介 网络结构 对应代码 网络说明 参考资料 简介 2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名.VGG获得了第二 ...
- 网络结构解读之inception系列二:GoogLeNet(Inception V1)
网络结构解读之inception系列二:GoogLeNet(Inception V1) inception系列的开山之作,有网络结构设计的初期思考. Going deeper with convolu ...
- Inception V1、V2、V3和V4
Inception模块分为V1.V2.V3和V4. V1(GoogLeNet)的介绍 论文:Going deeper with convolutions 论文链接:https://arxiv.org/ ...
- 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2
from:https://blog.csdn.net/qq_14845119/article/details/73648100 Inception v1的网络,主要提出了Inceptionmodule ...
随机推荐
- Java框架-mybatis03使用注解实现mybatis
1.面向接口编程: 好处:扩展性好,分层开发中,上层不用管具体的实现,都遵循共同的标准,使得开发变得容易.规范性更好 2.注解的实现 a)编写Dao接口 public interface UserDa ...
- LinuxShell脚本编程基础5--数值,字符串,文件状态测试,((..))和[[..]]的使用
1.数值比较 ! /bin/bash echo "enter a score:" read num1 ] then echo "Very Good" elif ...
- 【微信小程序】采坑之scroll-view组件
一.摘要 今天在使用scroll-view组件的时候发现结果跟预想的不一样.其实也不是第一次用了,同样的写法却出现了意料之外的效果,所以认定是bug了.博主使用的是2.3.0版本,所以之前的版本应该也 ...
- c# winfrom 页面的enter变为tab 功能使用 在特定的按钮里面如何继续当enter使用求大神帮忙解答一下 !!急
enter 当tab 键用 已经实现 :例如按回车的时候切换一直走 ,走到一个按钮如何让回车键在这个按钮的时候还是执行enter按钮的功能而不是tab 求大神解答一下, 目前页面tab功能改为 ...
- Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)
平时我们所看到的雪花(Falling Snow)飘飘的效果实际上也是一个动画,是由许多的动画对象共同完成的一个界面效果.对于不同大小的雪片可以通过缩放变换(ScaleTransform)功能特性确定, ...
- JQ(查找)
1.由下级到上级再到下级 var aa=$("td:eq(0)").parents("tr").find("td:eq(1)"); 2.
- Oracle 数据库字典 sys.obj$ 表中关于type#的解释
sys.obj$ 表是oracle 数据库字典表中的对象基础表,所有对象都在该表中有记录,其中type#字段表明对象类型,比如有一个表 test ,则该对象在sys.obj$ 中存在一条记录,name ...
- 简单工厂模式的C++、Java实现
1.简单工厂模式UML UML如下: 图1. 简单工厂模式UML 2.C++实现 类视图如下: 图2. C++实现简单工厂模式类视图 其中,SimpleFactory实现为: Product * Si ...
- 移动端布局注意事项与less
用Koala实现less的实时编译 1.下载Koala(Koala可以实现实时编译) 2.把CSS文件夹(如index.css,index.less)拖到Koala中 3.点击到需要编译的index. ...
- Java函数调用总结
//思考:1.方法能不能写方法 2.为什么不能写 public static void main(String[] args) { public static void name(){}; } 方法中 ...