【网络结构】GoogLeNet inception-v1:Going deeper with convolutions论文笔记
@
0. 论文链接
1. 概述
GoogLeNet是谷歌团队提出的一种大体保持计算资源不变的前提下,通过精妙的设计来增加网络的深度和宽度,基于Hebbian法则和多尺度处理来进行设计,在ILSVRC2014中获得了分类和检测第一的好成绩。
通过实验,可以发现神经网络的效果可以通过网络更深、更宽来提升。但也有两个很明显的问题:过拟合和极大的增加了计算量,作者想通过增加网络的稀疏性的同时加深与加宽网络,但是计算机的基础结构在遇到稀疏数据计算时会很不高效,使用稀疏矩阵会使得效率大大降低,所以作者提出了一种既能利用稀疏性,又可以利用稠密计算的网络结构。
ps:读论文的时候,文章中很多sparse,十分不理解,在网上查阅了一些资料,1.CNN具有稀疏性跟参数共享的特性,稀疏性指的是他相比于同规格的全连接,输出的数值量较少。2.稀疏性就是有输出的神经元比例比较少的意思(某 UCLA大神在知乎上的回答)
总得来说,1.inception-v1引入了inception结构,并针对一些问题进行了改进。2.因为网络很深,训练的时候增加辅助分类器防止梯度消失。3.巧用1x1卷积。
2. inception
inception结构主要考虑了如何设计近似卷积视觉网络的最优稀疏结构并用容易获得的密集组件进行覆盖,然后在网络中重复这个局部结构。他们先提出了这个“naive inception”,如下图
针对结构图做以下说明
1)采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
2) 之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;
3) 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了;
4) 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加;
可以发现,这样设计,网络结构不但更宽了而且融合不同尺度的特征,同时他们的输出拼接起来组成一个输出向量,因此相当于一个“神经元”,这样保证了网络结构的稀疏性,算是设计的十分巧妙了。
但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,论文借鉴NIN结构,采用1x1卷积核在进行3x3以及5x5卷积之前先进行降维,这样在增加宽度与深度的同时平衡计算量。改进的inception如下:
3. GoogleNet
这是他们团队在比赛中使用的模型,基于inception模型,采用模块化结构,方便添加和修改。为了防止梯度消失,同时网络中间的层次生成的特征会非常有区分性,所以给这些层增加一些辅助分类器。这些分类器以小卷积网络的形式放在Inception(4a)和Inception(4b)的输出上。在训练过程中,损失会根据折扣后的权重(折扣权重为0.3)叠加到总损失中(详细的可以看下图)。
把全连接层改成average pooling层,想法来自NIN,经过试验可以将top-1 acc提高0.6%,即使去掉了FC层同样需要dropout,但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune(原因是网上同学解释的),在总得结构图中也可以发现在每个分类器之前都有一个average pooling层。
总体结构:
- 包括Inception模块的所有卷积,都用了修正线性单元(ReLU);
- 网络的感受野大小是224x224,采用RGB彩色通道,且减去均值;
- #3x3 reduce和#5x5 reduce分别表示3x3和5x5的卷积前缩减层中1x1滤波器的个数;pool proj表示嵌入的max-pooling之后的投影层中1x1滤波器的个数;缩减层和投影层都要用ReLU;
- 网络包含22个带参数的层(如果考虑pooling层就是27层),独立成块的层总共有约有100个;
- 添加辅助分类器
具体细节:
- 均值pooling层滤波器大小为5x5,步长为3,(4a)的输出为4x4x512,(4d)的输出为4x4x528;
- 1x1的卷积有用于降维的128个滤波器和修正线性激活;
- 全连接层有1024个单元和修正线性激活;
- dropout层的dropped的输出比率为70%;
- 线性层将softmax损失作为分类器(和主分类器一样预测1000个类,但在inference时移除)。
参考链接
https://www.jianshu.com/p/ffae362527f0
https://blog.csdn.net/xjz18298268521/article/details/52381919
https://blog.csdn.net/wspba/article/details/61921619
【网络结构】GoogLeNet inception-v1:Going deeper with convolutions论文笔记的更多相关文章
- 图像分类(一)GoogLenet Inception_V1:Going deeper with convolutions
论文地址 在该论文中作者提出了一种被称为Inception Network的深度卷积神经网络,它由若干个Inception modules堆叠而成.Inception的主要特点是它能提高网络中计算资源 ...
- 深度学习面试题20:GoogLeNet(Inception V1)
目录 简介 网络结构 对应代码 网络说明 参考资料 简介 2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名.VGG获得了第二 ...
- Inception V1、V2、V3和V4
Inception模块分为V1.V2.V3和V4. V1(GoogLeNet)的介绍 论文:Going deeper with convolutions 论文链接:https://arxiv.org/ ...
- 深度学习面试题29:GoogLeNet(Inception V3)
目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...
- 网络结构解读之inception系列二:GoogLeNet(Inception V1)
网络结构解读之inception系列二:GoogLeNet(Inception V1) inception系列的开山之作,有网络结构设计的初期思考. Going deeper with convolu ...
- Going Deeper with Convolutions(Inception v1)笔记
目录 Abstract Introduction First of All Inception Depth Related Work Motivation and High Level Conside ...
- GoogLeNet 之 Inception v1 v2 v3 v4
论文地址 Inception V1 :Going Deeper with Convolutions Inception-v2 :Batch Normalization: Accelerating De ...
- 解读(GoogLeNet)Going deeper with convolutions
(GoogLeNet)Going deeper with convolutions Inception结构 目前最直接提升DNN效果的方法是increasing their size,这里的size包 ...
- Going Deeper with Convolutions (GoogLeNet)
目录 代码 Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]. computer vision and pattern ...
随机推荐
- 购物车 cookie session
0-服务器识别用户的目的:服务器存有不同用户的信息,而对这些信息,服务器自身.网站开发管理者.网站访问者会对其读写: 1-暂且存入服务器数据库,购物车分为2种表:购物车入车表和购物车下单表: 2-单个 ...
- Docker与virtualenv
docker环境统一,组件隔离 关于Docker与virtualenv,其本质是一样的,virtualenv虚拟python运行环境,保证系统python环境的整洁,docker也是一样,只是它虚拟的 ...
- 用flask开发个人博客(4)—— flask中4种全局变量
https://blog.csdn.net/hyman_c/article/details/53512109 一 current_app current_app代表当前的flask程序实例,使用时需 ...
- java中的 final 关键字 修饰引用时的问题
final使得被修饰的变量”不变”,但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变. 引用本身的不变: final StringBuffer a= ...
- 适配器模式(Adapter Pattern)--不兼容结果的协调
定义:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper); 分类: 对象适配器:适配器与适配者之间是关联关系; 类适配器:适配器和适配者之间是继承 ...
- 网络编程(基于udp协议的套接字/socketserver模块/进程简介)
一.基于UDP协议的套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就 ...
- Push h.264 rawdata to rtmp server
Push h.264 rawdata to rtmp server /* The MIT License (MIT) Copyright (c) 2013-2015 SRS(ossrs) Permis ...
- XDU 1140 寻找万神(字符串匹配)
学会strstr的使用 strstr(str1,str2)函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. #include ...
- Java线程的几个概念
线程的生命周期: 新建状态:用new语句创建的线程对象处于新建状态,此时它和其它的java对象一样,仅仅在堆中被分配了内存 就绪状态:当一个线程创建了以后,其他的线程调用了它的start()方法,该线 ...
- react.js 引用 NavBar 报错svg-spite-loader
Navbar iconName="false" 配置 改为 iconName={this.props.bool}