文章来源: https://www.cnblogs.com/shouhuxianjian/p/7786760.html

Feature Extractor[Inception v4]


0. 背景

随着何凯明等人提出的ResNet v1,google这边坐不住了,他们基于inception v3的基础上,引入了残差结构,提出了inception-resnet-v1和inception-resnet-v2,并修改inception模块提出了inception v4结构。基于inception v4的网络实验发现在不引入残差结构的基础上也能达到和inception-resnet-v2结构相似的结果,从而认为何凯明等人认为的:

“要想得到深度卷积网络必须使用残差结构”

这一观点是不完全正确的。

不过值得注意的是,google这边对于inception v2是属于哪篇论文有些不同观点:

  • 在《Rethinking the Inception Architecture for Computer Vision》中认为:基于inception v1进行结构的改进是inception v2;在inception v2上加上BN是inception v3;
  • 在《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》中将《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》认为是inception v2(即inception v1 上进行小改动再加上BN);《Rethinking the Inception Architecture for Computer Vision》认为是inception v3

google认为他们之前在改变架构选择上相对保守:网络结构的改变只局限于独立的网络组件范围内,从而保持剩下模型稳定。而如果不改变之前的这种原则,那么生成的模型将会比需要的还复杂(即过头了)。在这里,他们决定抛弃之前那个设计原则,对不同尺度的网格都采用统一的inception模块

在下面的网络结构图中:所有后面不带V的卷积,用的都是same-padded,也就是输出的网格大小等于输入网格的大小(如vgg的卷积一样);带V的使用的是valid-padded,表示输出的网格尺寸是会逐步减小的(如lenet5的卷积一样)。

在下面的结构图中,每一个inception模块中都有一个1∗1" role="presentation" style="position: relative;">1∗11∗1的没有激活层的卷积层,用来扩展通道数,从而补偿因为inception模块导致的维度约间。其中Inception-ResNet-V1的结果与Inception v3相当;Inception-ResNet-V1与Inception v4结果差不多,不过实际过程中Inception v4会明显慢于Inception-ResNet-v2,这也许是因为层数太多了。且在Inception-ResNet结构中,只在传统层的上面使用BN层,而不在合并层上使用BN,虽然处处使用BN是有好处,不过更希望能够将一个完整的组件放入单独的GPU中。因为具有大量激活单元的层会占用过多的显存,所以希望这些地方丢弃BN,从而总体增加Inception模块的数量。使得不需要去解决计算资源和模块什么的权衡问题。

1. inception v4

图1.1 inception v4 网络结构图

图1.2 图1.1的stem和Inception-A部分结构图

图1.3 图1.1的Reduction-A和Inception-B部分结构图

图1.4 图1.1的Reduction-B和Inception-C部分结构图

2. Inception-resnet-v1 & Inception-resnet-v2

图2.1 Inception-resnet-v1 & Inception-resnet-v2的结构图

2.1 Inception-resnet-v1的组成模块

图2.1.1 图2.1的stem和Inception-ResNet-A部分结构图

图2.1.2 图2.1的Reduction-A和Inception-ResNet-B部分结构图

图2.1.3 图2.1的Reduction-B和Inception-ResNet-C部分结构图

2.2 Inception-resnet-v2的组成模块

图2.2.1 图2.1的stem和Inception-ResNet-A部分结构图

图2.2.2 图2.1的Reduction-A和Inception-ResNet-B部分结构图

图2.2.3 图2.1的Reduction-B和Inception-ResNet-C部分结构图

3. 模型训练

在上述的Inception V4,Inception-Resnet-V1,Inception-ResNet-v2这三个模型中都用到了Reduction-A,他们各自的具体参数如下:



图3.1 不同模型下Reduction-A的模型超参数

作者们在训练的过程中发现,如果通道数超过1000,那么Inception-resnet等网络都会开始变得不稳定,并且过早的就“死掉了”,即在迭代几万次之后,平均池化的前面一层就会生成很多的0值。作者们通过调低学习率,增加BN都没有任何改善。

不过他们发现如果在将残差汇入之前,对残差进行缩小,可以让模型稳定训练,值通常选择[0,1.0.3],如图3.2



图3.2 对inception-resnet模块进行最后输出值的等比例缩小

同样的在ResNet-v1中,何凯明等人也在cifar-10中发现了模型的不稳定现象:即在特别深的网络基础上去训cifar-10,需要先以0.01的学习率去训练,然后在以0.1的学习率训练。

不过这里的作者们认为如果通道数特别多的话,即使以特别低的学习率(0.00001)训练也无法让模型收敛,如果之后再用大学习率,那么就会轻松的破坏掉之前的成果。然而简单的缩小残差的输出值有助于学习的稳定,即使进行了简单的缩小,那么对最终结果也造成不了多大的损失,反而有助于稳定训练。

  • 在inception-resnet-v1与inception v3的对比中,inception-resnet-v1虽然训练速度更快,不过最后结果有那么一丢丢的差于inception v3;
  • 而在inception-resnet-v2与inception v4的对比中,inception-resnet-v2的训练速度更块,而且结果比inception v4也更好一点。所以最后胜出的就是inception-resnet-v2。

图3.3 不同模型的结果对比

posted @ 2017-11-05 15:00 仙守 阅读(6440) 评论(0) 编辑 收藏

【Network Architecture】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning(转)的更多相关文章

  1. Feature Extractor[Inception v4]

    0. 背景 随着何凯明等人提出的ResNet v1,google这边坐不住了,他们基于inception v3的基础上,引入了残差结构,提出了inception-resnet-v1和inception ...

  2. 网络结构解读之inception系列五:Inception V4

    网络结构解读之inception系列五:Inception V4 在残差逐渐当道时,google开始研究inception和残差网络的性能差异以及结合的可能性,并且给出了实验结构. 本文思想阐述不多, ...

  3. 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测

    话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...

  4. 【Network Architecture】Densely Connected Convolutional Networks 论文解析

    目录 0. Paper link 1. Overview 2. DenseNet Architecture 2.1 Analogy to ResNet 2.2 Composite function 2 ...

  5. Network architecture for minimalistic connected objects

    In one embodiment, a network architecture comprises minimalistic connected objects (MCOs), distribut ...

  6. 【Network architecture】Rethinking the Inception Architecture for Computer Vision(inception-v3)论文解析

    目录 0. paper link 1. Overview 2. Four General Design Principles 3. Factorizing Convolutions with Larg ...

  7. [DeeplearningAI笔记]卷积神经网络2.5-2.7 Network in Network/1*1卷积/Inception网络/GoogleNet

    4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Inception网络 --Szegedy C, Liu W, Jia Y, et al. Going deepe ...

  8. [Network Architecture]Xception 论文笔记(转)

    文章来源 论文:Xception: Deep Learning with Depthwise Separable Convolutions 论文链接:https://arxiv.org/abs/161 ...

  9. [Network Architecture]ResNext论文笔记(转)

    文章地址: https://blog.csdn.net/u014380165/article/details/71667916 论文:Aggregated Residual Transformatio ...

随机推荐

  1. UNIX或LINUX时间戳转时间

    ORACLE: select TO_DATE('19700101', 'yyyymmdd') + 1481148929 / 86400 + TO_NUMBER(SUBSTR(TZ_OFFSET(ses ...

  2. Yii框架2.0的安装过程

    Yii框架是个不错的php开发框架,大型项目上都可以使用.和大多框架一样他也是开源,而且采用了mvc结构的. Yii1.*,直接下载然后用脚步可以创建自己的项目了,最近看了下Yii2.0版本的,他推荐 ...

  3. MapReduce自定义InputFormat和OutputFormat

    一.自定义InputFormat 需求:将多个小文件合并为SequenceFile(存储了多个小文件) 存储格式:文件路径+文件的内容 c:/a.txt I love Beijing c:/b.txt ...

  4. 深入了解跟踪(trace)

    深入了解跟踪(trace) 转自:https://www.cnblogs.com/zhijianliutang/p/4113911.html 前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们 ...

  5. XTU1198:Candy(背包)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/libin56842/article/details/26182519 题目描写叙述 Henry和Le ...

  6. 009-Shell 函数

    一.函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] { action; ...

  7. JDK动态代理实现源码分析

    JDK动态代理实现方式 在Spring框架中经典的AOP就是通过动态代理来实现的,Spring分别采用了JDK的动态代理和Cglib动态代理,本文就来分析一下JDK是如何实现动态代理的. 在分析源码之 ...

  8. 别真以为JavaScript中func.call/apply/bind是万能的!

    自从学会call/apply/bind这三个方法后我就各种场合各种使用各种得心应手至今还没踩过什么坑,怎么用?说直白点就是我自己的对象没有某个方法但别人有,我就可以通过call/apply/bind去 ...

  9. Spring第八发—自动装配及让Spring自动扫描和管理Bean

    依赖注入–自动装配依赖对象(了解即可) 对于自动装配,大家了解一下就可以了,实在不推荐大家使用.例子: byName:按名称装配,可以根据属性的名称,在容器中寻找跟该属性名相同的bean,如果没有找到 ...

  10. hashmap,ConcurrentHashMap与hashtable的区别

    1.hashmap与hashtable的区别 1.我们从他们的定义就可以看出他们的不同,HashTable基于Dictionary类,而HashMap是基于AbstractMap.Dictionary ...