本文内容:

  • ResNets

  • 几个ResNet的Identity mapping 方式

  • WRNs

  • ResNeXt

  • Res2Net

ResNet:

论文链接:https://arxiv.org/abs/1512.03385

CNN网络存在的两个问题:一,vanishing/exploding gradients;深度会带来恶名昭著的梯度弥散/爆炸,导致系统不能收敛。然而梯度弥散/爆炸在很大程度上被normalized initialization and intermediate normalization layers处理了。二、degradation;当深度开始增加的时候,accuracy经常会达到饱和,然后开始下降,但这并不是由于过拟合引起的。如56-layer的error大于20-layer的error。
ResNet的核心方法:提出了一种基于残差块的identity mapping,通过学习残差的方式,而非直接去学习直接的映射关系

Deeper Bottleneck Architectures:

当换成上图右边这种Bottleneck 结构的时候,可以发现152层的ResNet竟然比VGG16/19 都要少的复杂度。先用1x1降维,3x3进行卷积,再用1x1进行升维。事实上,deeper左边这种结构也能获得很好的效果。用右边这种结构,主要是源自于practical,因为左边这种结构在训练时间上要比右边结构长的多。

ResNets的结构:

ResNet34与VGG19 架构对比:

几种 Identity mappings的结构:

作者通过探究Identity Mapping来使得网络变得更容易训练,并且能够提高其网络泛化能力

原始Residual unit和改进后的效果及比较:

原始Residual unit 公式是:

改进的unit,将h(x)与f(x)都为identity mapping后,公式为:

two identity mappings: (i) the identity skip connection h(xl) = xl, and (ii) the condition that f is an identity mapping

作者发现如果h(x)和f(y)都是identity mapping的话,那么在forward或者backward的时候,信号都能直接propagate from 一个unit to other unit。residualNet在backward的时候,可以将梯度完全的往回传

这样表示有两个好处:
1) feature XL可以表示为浅层的xl + 残差累计,真正的实现了残差网络
2)目前的输出可以看做所有preceding residual functions (plus x0),跟VGG这类plain Network不同的是,instead matrix-vector products,目前的算法相当于summation

skip connection结构探索:

效果:

Activation上的结构探索:

效果:

事实上这些附加实验显示这些算法并不是很work

WRNs:

文章链接:https://arxiv.org/abs/1605.07146

解决的问题:非常深的网络往往会出现diminishing feature reuse,这往往会导致网络的训练速度会变得相当的慢。为了解决这个问题,提出了wide ResNet。

像ResNet这类网络也会存在着一些问题:由于梯度在反向传播的时候,可以直接经过shortcut,而不用被强制经过residual block,这会导致可能只有很有限的layer学到了有用的知识,而更多的layers对最终结果只做出了很少的贡献。这个问题也被称之为diminishing feature reuse。当然在后续的工作中,很多人都朝着解决这个问题的方向做,比如residual block进行随机失活,类似于特殊的dropout。基于上述问题,作者认为widening of ResNet blocks可能会提供更有效的方法。WRN-40-4(40层,宽度为4倍)精度赶上了1000layer 的resNet, 并且在训练速度上提升了8倍。

改进的方式:

dropout作为一种正则化的技术也体现了它的有效性,d结构可以继续提升网络效果

结构:

效果:

ResNeXt:

文章链接:https://arxiv.org/abs/1611.05431

在ResNet提出deeper可以带来网络性质提高的同时,WideResNet则认为Wider也可以带来深度网络性能的改善。为了打破或deeper,或wider的常规思路,ResNeXt则认为可以引入一个新维度,称之为cardinality。并且作者在实验上也证明了: increasing cardinality is more effective than going deeper or wider when we increase the capacity

模块结构对比:

左边是ResNet结构,而右边则是cardinality=32的ResNeXt结构(也就是含32个group)。

等效结构:

上面三个设计是等价设计,主要看最后一个C的结构,是不是极其类似ResNet的bottleneck,但是通道数却比ResNet多的多。这就意味着,ResNeXt引入Inception结构,通过稀疏连接来approach之前的dense连接

网络结构对比:

本文则提出了一个simple architecture将Inception和ResNet进行很好的结合。跟同期的Inception-ResNet不同的是,ResNeXt在每个path中都采取相同的设计(采用相同的卷积参数),从Figure1中也能看出来,这可以带来更好的泛化

可以看到在每个conv中,感觉总的通道数要比Resnet多的多,但是两者的参数量是一样的。

计算一下便可得:假设输入特征图为256维,如图1则得知,
resnet的参数量为:
256x64+3x3x64x64+64x256=70k
ResNeXt的参数量为:
Cx(256xd+3x3xdxd+dx256) 当C取32,d=4时,上式也等于70k

Res2Net:

论文地址:https://arxiv.org/pdf/1904.01169.pdf

目前现有的特征提取方法大多都是用分层方式表示多尺度特征。分层方式即要么对每一层使用多个尺度的卷积核进行提特征(如SPPNet),要么就是对每一层提取特征进行融合(如FPN)。

本文提出的Res2Net在原有的残差单元结构中又增加了小的残差块,在更细粒度上,增加了每一层的感受野大小。Res2Net也可以嵌入到不同的特征提取网络中,如ResNet, ResNeXt, DLA等等。

提出了一个新维度,scale:

上图左边是最基本的卷积模块。右图是针对中间的3x3卷积进行的改进。

首先对经过1x1输出后的特征图按通道数均分为s(图中s=4)块,每一部分是xi,i ∈ {1,2,...,s}。

每一个xi都会具有相应的3x3卷积,由Ki()表示。我们用yi表示Ki()的输出。

特征子集xi与Ki-1()的输出相加,然后送入Ki()。为了在增加s的同时减少参数,我们省略了x1的3×3卷积,这样也可以看做是对特征的重复利用。

与其他模块结合(ResNeXt、SE模块):

深度、基数、scale维度变化效果的对比:

在分类任务上的表现:

参考文章:

https://blog.csdn.net/shwan_ma/article/details/78203020

https://blog.csdn.net/ruoruojiaojiao/article/details/89074763

ResNet及其变种相关推荐

  1. ResNet及其变种的结构梳理、有效性分析与代码解读(PyTorch)

    点击我爱计算机视觉标星,更快获取CVML新技术 本文来自知乎,作者费敬敬,现为同济大学计算机科学与技术硕士. https://zhuanlan.zhihu.com/p/54289848 温故而知新,理 ...

  2. resnet结构_来聊聊ResNet及其变种

    加入极市专业CV交流群,与 10000+来自港科大.北大.清华.中科院.CMU.腾讯.百度 等名校名企视觉开发者互动交流! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总,行业技术交流.关注 ...

  3. 机器学习笔记:ResNet 及残差连接

    1 为什么会有ResNet? 自从深度神经网络在ImageNet大放异彩之后,后来问世的深度神经网络就朝着网络层数越来越深的方向发展.直觉上我们不难得出结论:增加网络深度后,网络可以进行更加复杂的特征 ...

  4. 深入理解ResNet原理解析及代码实现

    github地址:https://github.com/pytorch/vision/blob/master/torchvision/models/resnet.py 论文地址:https://arx ...

  5. [paper reading] ResNet

    [paper reading] ResNet GitHub:Notes of Classic Detection Papers 本来想放到GitHub的,结果GitHub不支持公式. 没办法只能放到C ...

  6. 百万奖金悬赏AI垃圾分类,就问你来不来?

    也许我们从来没有想过, 看似简单的垃圾分类居然给"聪明"的人类带来如此大的困扰 2019年7月1日,史称"最严格的垃圾分类法" <上海市生活垃圾管理条例& ...

  7. 上海居民被垃圾分类逼疯!这款垃圾自动分类器也许能帮上忙

    作者 | 视说君 来源 | 授权转载自视说AI(ID:techtalkai) 让垃圾自动分类 近期垃圾分类成为了一个热门话题,原来直接一次性扔掉的垃圾,现在都需要分门别类进行投放.从今年7月1日起,新 ...

  8. 深度学习:垃圾自动分类

    导 言 垃圾分类,指按一定规定或标准将垃圾分类储存.分类投放和分类搬运,从而转变成公共资源的一系列活动的总称.这不仅是出于生态环境角度考虑,"没有垃圾,只有放错位置的资源",分类收 ...

  9. CNN网络架构演进:从LeNet到DenseNet

    原文来源:https://www.cnblogs.com/skyfsm/p/8451834.html 卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从 ...

最新文章

  1. 树莓派做网站服务器同时做nas,【项目分享】树莓派4搭建NAS,让硬盘轻松联网...
  2. 了解机器学习回归的3种最常见的损失函数
  3. hive底层原理 sql执行过程_Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了-阿里云开发者社区...
  4. eclipse使用git提交本地项目,提交至远程github上
  5. docker export_docker构建python3.7镜像
  6. 划入 .NET 6版本目标,微软鼓励开发人员信任第三方库
  7. python实现用户登录_Python实现简单的用户登录功能并且限制次数
  8. 阿里在美申请区块链专利;Win10 最新漏洞被发现;MongoDB 4.2 发布​ | 极客头条...
  9. ImportError : No module named graphics
  10. jQuery数据存储的相关方法
  11. 使用pyton在本地指定目录模拟服务器
  12. Linux使文件变成二进制,linux 二进制文件显示方法
  13. 后渗透篇:清理windows入侵痕迹总结【详细】
  14. ArcGIS模型构建器计算几何的方法
  15. 报表工具能实现怎么的导出效果?
  16. 使用百度翻译API实现一键翻译
  17. UED团队规范设计参考及建议
  18. Python爬虫--喜马拉雅三国音频爬取
  19. ecu故障现象_汽车电脑ECU的故障诊断检修方法9种
  20. 下载电影、软件、工具的利器--讯雷

热门文章

  1. C# 入门(14) 枚举器(enumerator)和迭代器(iterator)
  2. android 剪切板遇到的坑
  3. Windows 通过浏览器打开应用程序
  4. cmake -fpic
  5. 中级职称计算机考试复习多久,中级计算机职称考试的通关心得
  6. 12306铁路订票系统的一个小bug
  7. 夜深人静写算法(八)- 二分图最大匹配
  8. 读《游戏自动化测试实践》
  9. android studio开发工具遇到一个新问题一直卡indexing paused due to batch update不停的转
  10. win10 上 vhdx 虚拟盘 数据丢失 大坑