@

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层。

总体结构:

  1. 包括Inception模块的所有卷积,都用了修正线性单元(ReLU);
  2. 网络的感受野大小是224x224,采用RGB彩色通道,且减去均值;
  3. #3x3 reduce和#5x5 reduce分别表示3x3和5x5的卷积前缩减层中1x1滤波器的个数;pool proj表示嵌入的max-pooling之后的投影层中1x1滤波器的个数;缩减层和投影层都要用ReLU;
  4. 网络包含22个带参数的层(如果考虑pooling层就是27层),独立成块的层总共有约有100个;
  5. 添加辅助分类器

具体细节:

  1. 均值pooling层滤波器大小为5x5,步长为3,(4a)的输出为4x4x512,(4d)的输出为4x4x528;
  2. 1x1的卷积有用于降维的128个滤波器和修正线性激活;
  3. 全连接层有1024个单元和修正线性激活;
  4. dropout层的dropped的输出比率为70%;
  5. 线性层将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论文笔记的更多相关文章

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

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

  2. 深度学习面试题20:GoogLeNet(Inception V1)

    目录 简介 网络结构 对应代码 网络说明 参考资料 简介 2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名.VGG获得了第二 ...

  3. Inception V1、V2、V3和V4

    Inception模块分为V1.V2.V3和V4. V1(GoogLeNet)的介绍 论文:Going deeper with convolutions 论文链接:https://arxiv.org/ ...

  4. 深度学习面试题29:GoogLeNet(Inception V3)

    目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...

  5. 网络结构解读之inception系列二:GoogLeNet(Inception V1)

    网络结构解读之inception系列二:GoogLeNet(Inception V1) inception系列的开山之作,有网络结构设计的初期思考. Going deeper with convolu ...

  6. Going Deeper with Convolutions(Inception v1)笔记

    目录 Abstract Introduction First of All Inception Depth Related Work Motivation and High Level Conside ...

  7. GoogLeNet 之 Inception v1 v2 v3 v4

    论文地址 Inception V1 :Going Deeper with Convolutions Inception-v2 :Batch Normalization: Accelerating De ...

  8. 解读(GoogLeNet)Going deeper with convolutions

    (GoogLeNet)Going deeper with convolutions Inception结构 目前最直接提升DNN效果的方法是increasing their size,这里的size包 ...

  9. Going Deeper with Convolutions (GoogLeNet)

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

随机推荐

  1. python open-falcon docker.WEB developers---flask,---django.

    http://www.verydemo.com/demo_c281_i2477.html (python Gevent – 高性能的Python并发框架) http://www.django-rest ...

  2. hbctf---whatiscanary学习

    题目中除了能栈溢出实在找不到其他能泄露信息的地方了.而且也没法修改GOT表,始终绕不过stack_chk_fail函数.感到无从下手.只到官方给WP了,才觉得自己基础太过浅薄了. 如果我们仔细观察崩溃 ...

  3. Storm-源码分析- Messaging (backtype.storm.messaging)

    先定义两个接口和一个类 TaskMessage类本身比较好理解, 抽象storm的message格式 对于IContext, 注释也说了, 定义messaging plugin, 通过什么渠道去发送m ...

  4. HBase-MR

    一.需求1:对一张表的rowkey进行计数 官方HBase-Mapreduce 需求1:对一张表的rowkey进行计数 1)导入环境变量 export HBASE_HOME=/root/hd/hbas ...

  5. react 将字符串解析为markdown

    react 中有许多组件支持把字符串转化为markdown,并以html的形式展示出来.这里我试用了 react-markdown 和 hyperdown 两个库,发现hyperdown比较好,因为r ...

  6. OVN实战---《OVN and Containers》翻译

    Overview 在本篇文章中,我们要讨论的是OVN和容器的集成.到本次实验中,我们将会创建一个包含有一对容器的“虚拟机”,这些容器会直接和OVN logical switch相连,并且可以供逻辑网络 ...

  7. RocketMQ 单机安装

    本章快速入门指南是在本地机器上设置 RocketMQ 消息传递系统以发送和接收消息的详细说明. 在这先对RocketMQ 做一个简单介绍. RocketMQ是一个纯java.分布式.队列模型的开源消息 ...

  8. ios极光推送快速集成教程

    内容中包含 base64string 图片造成字符过多,拒绝显示

  9. 记一次服务器迁移 TFS客户端ip更换

    服务器迁移,TFS服务端IP由原10.58.8.231更换至10.58.1.230 TFS客户端更换ip操作比较复杂,请谨慎操作,避免脱库的风险!!! 打开注册表,运行->regedit 找到H ...

  10. Mysql之正则匹配

    Regex与Like的关系Mysql中我们经常会用到正则表达式就是Like filed like '%?%' .但是有时对于一些复杂场景下的正则过滤,单单一个like就显得有些力不从心了 Regex的 ...