深度学习之ResNet家族

简介: ResNet是深度学习中的标志性架构,由何恺明在2016年提出,解决了深度网络训练的难题。ResNet通过残差块使得网络能有效学习,即使层数极深。后续发展包括ResNetV2,优化了信息传递和激活函数顺序;Wide Residual Networks侧重增加网络宽度而非深度;ResNeXt引入基数概念,通过多路径学习增强表示能力;Stochastic Depth通过随机丢弃层加速训练并提升泛化;DenseNet采用密集连接,增加信息交互;DPN结合ResNet和DenseNet优点;ResNeSt则综合了注意力机制、多路学习等。这些演变不断推动深度学习网络性能的提升。5月更文挑战第7天

深度学习之ResNet家族

1. ResNet

ResNet最早由KaiMing He(何恺明)在2016年提出,并获得当年ImageNet比赛的冠军; 当前引用量超过10W+,是深度学习具有里程碑意义的架构。

ResNet指出随意的增加网络的深度,测试误差和训练误差都会比更浅层的网络来的大,模型并不能如我们所愿有选择的学习:深层的网络即使不会更好,也不应该会比浅层的网络差。ResNet在此基础上人为的增加归纳偏至,提出了著名的残差结构,使得网络学习残差的部分,最差的情况下学习的到残差信息为0,而不使得网络变差,而实际上残差信息是可以学习到,使得深度学习可以训练更深的网络。

yyq-2022-04-17-22-58-41.png

ResNet提出之后,有大量的科研工作者对其改进和调整,涌现出很多优秀的工作。本文整理分享了这些ResNet家族的成员,供大家参考。

ResNet的改进方向:

  • 深度
  • 宽度
  • 因子
  • 信息传递的方式

2. ResNetV2

同样是KaiMing He(何恺明),在分析了残差连接的方式之后提出ResnetV2,以此训练了1001层的resnet模型。

yyq-2022-04-18-22-58-48.png

新旧对比可以看出有两个变化:

  • 上一层的信息到下一层的进行直接的传递(没有relu激活层),使得信息传递更直接,可重复利用上一层的信息。文中作者做了很多不同的信息传递的尝试,效果都不佳。

    yyq-2022-04-18-23-03-23.png

  • 作者也尝试了不同的激活函数的组合方式,发现预激活(pre-Activation)效果是最好的。

    yyq-2022-04-18-23-05-24.png

3. Wide Residual Networks

ResNetV2探索了在有效的信息传递的方式,可以训练更深的网络,效果也更好。而Wide Residual Networks指出网络可以训练的很深,但是往往精度的提升需要堆叠大量的层,使得训练时长加长;另一方面,ResNet天然的假设允许一个block可以不学习任何东西,某些网络层实际上是浪费的

在此基础上作者提出了WRN,减少深度,而增加宽度,使得每个block能学习到更加有效表示,文章指出即使16层的WRN也能达到更深网络的精度。

WRN在原始的特征channel上扩大K倍,同时也增加dropout层提高泛化。

yyq-2022-04-18-23-19-22.png
yyq-2022-04-18-23-21-01.png

4. ResNeXt

ResNeXt在深度和宽度设计之外,从cardinality(基数)角度重新考虑模型的设计。ResNet是采用重复的策略(repetition strategy),ResNeXt采用的是分裂-转换-合并(split-transform-merge strategy),这个分裂的数量就是cardinality。每个分裂的转换结构结构是相同的,但是学习是独立的,增加了学习特征的多样性,也是文章标题Aggregated集成多个特征转换的含义所在。

yyq-2022-04-18-23-31-28.png

5. Deep Networks with Stochastic Depth

在深度、宽度和三个维度探索ResNet架构的可能性的同时,Deep Networks with Stochastic Depth指出训练很深的网络存在耗时长和训练难的问题,论文提出一种通过设计随机深度降低训练难度,有在测试时可以利用深度网络的有点的训练策略。

ResNet with stochastic depth分析了ResNet结构的特点:残差学习,残差部分(下图中黄色的部分)是允许不学习任何信息,而可以顺利传递信息。ResNet with stochastic depth于是尝试将残差部分以一定随机概率丢弃,从而训练过程降低训练的参数,加快训练过程(不需要前向计算和梯度更新);另一方面由于每次迭代都随机丢弃某些残差层,迭代与迭代之间丢弃层可能是不同,每次训练的是不同的模型,而且参数是下次迭代共享更新,等同于一次训练了多个模型,在测试时综合和所有的使用的层,一定程度是集成的模型(多模型融合的效果),实验表明泛化能力更好。

yyq-2022-04-26-22-30-26.png

关于如何丢弃残差部分,如下图所示采用了随着深度加深逐层加大丢弃概率(pl)PL=0.5。

yyq-2022-04-26-22-48-21.png
yyq-2022-04-26-22-34-15.png
yyq-2022-04-26-22-45-21.png

在测试时,ResNet with stochastic depth综合了所有使用的层,还原成完整的深度的网络结果,每一层按照丢弃的概率进行融合,达到模型集成的目的。集成方式如下:
yyq-2022-04-26-22-53-41.png

ResNet with stochastic depth和Dropout很类似(包括测试的概率还原),不同的是,Dropout是对神经元的丢弃而ResNet with stochastic depth是丢弃整个层,而其正式得意于Resnet的残差结果。

6. DenseNet

DenseNet在信息传递方式上拓展了Resnet。DenseNet的一个特点就是密集的连接,加大信息的共享和利用,另外DenseNet并没有采用残差的方式来合并信息,而是采用concat补充信息的方式来整合当前层和前面所有层的信息,这样的好处是可以增加更多的信息。DenseNet和ResNet with stochastic depth为同一作者。

yyq-2022-04-26-23-10-32.png

从上图可知,一个5层的dense block中,第2层的输入时来自第一层,而第三层的输入为第一层和第二层,以此类推,最后一层的输入为前面所有层的信息;从另一个角度看,第一层的信息传递到后面的每一层。DenseNet通过growth rate来决定多少信息传递到下一层。

7. DPN(Dual Path Network)

到现在为止,前面2到6是Resnet上演化,DenseNet是信息传递方式拓展了Resnet。还能其他的方式吗?

啊哈时刻来了,有的。DPN综合了ResNet和DenseNet两种信息传递方式,构建了两路信息传递网络。
yyq-2022-04-26-23-31-27.png

论文中的图看的有点费解(最右边为DPN),我们可以从论文中的出发点来理解就可以理解图中的含义:关键词为两路信息(残差部分和concat叠加部分)。从上图中为偏黄的一路为残差部分,灰色部分为concat叠加部分,也就是在block分支信息加工之后分成两部分,一部分学习残差的部分,另一部分作为新信息叠加到原始信息中。

DPN指出ResNet的残差方式没有增加更多信息的特征,而保留了特征和残差学习,而Densenet能通过密集连接并concat叠加的方式创造更多的特征,能给网络带来学习表征能力。

8. ResNest

ResNest是2020李沐团队和Facebook(meta)提出的一种结果特征注意力和多路表征学习的结构。ResNest可以说是之前技术的结合体:注意力机制 + 多路特征(基) + 残差学习。注意力机制会在后续和大家做详细分享。
yyq-2022-04-26-23-51-51.png
yyq-2022-04-26-23-50-31.png

看起来很复杂,ResNest通过组合通道注意力和分解多路特征和残差学习来学习更好的特征。 其中

  • 通道注意力(split attention):为每一个通道计算一个权重对输入通道进行加权来学习通道的重要性
  • 多路特征:和ResNeXt类似,输入拆分成多路分别进行表征学习,只不过多路有进行进行多个小组(group),每个group进行通道注意力后,所有group信息进行合并最终和输入进行残差连接。

ResNest是站在巨人肩膀上的吧。

9. 总结

本文从深度 宽度 基数信息传递方式和大家分享了ResNet的后继深度学习架构的演进,希望对你有帮助。总结如下:

  • ResNetV2: 信息直接传递 + 预激活
  • ResNext: 多路(基)学习能学到更好的表征
  • Wide Residual Networks:可以试着加宽,更有效的进行残差学习,充分利用残差提取更多特征
  • deep Networks with Stochastic Depth:随机深度降低训练耗时,又能融合多模型集成,提升泛化能力
  • DenseNet:密集连接产生新特征,学习更好的特征
  • DPN:融合ResNet和DenseNet的特点
  • ResNeSt则是融合Attention + ResNext + group conv + Resnet,站在巨人肩膀上

搜索关注公众号:人工智能微客(AIweker)可批量下载所有论文(发送resnet)和讨论更详细的细节思路

10. 参考文献

  • Deep residual learning for image Recognition
  • Identity Mappings in Deep Residual Networks
  • Wide Residual Networks
  • Aggregated Residual Transformations for Deep Neural Networks
  • Deep Networks with Stochastic Depth
  • Densely Connected Convolutional Networks
  • Dual Path Network
  • ResNeSt: Split-Attention Networks
目录
相关文章
|
5天前
|
机器学习/深度学习 计算机视觉
深度学习第6天:ResNet深度残差网络
深度学习第6天:ResNet深度残差网络
|
10月前
|
机器学习/深度学习 数据库
【MATLAB第49期】基于MATLAB的深度学习ResNet-18网络不平衡图像数据分类识别模型
【MATLAB第49期】基于MATLAB的深度学习ResNet-18网络不平衡图像数据分类识别模型
|
12月前
|
算法 数据挖掘 计算机视觉
CVPR2023部署Trick | 解决量化误差振荡问题,让MobileNetv2的能力超过ResNet家族(二)
CVPR2023部署Trick | 解决量化误差振荡问题,让MobileNetv2的能力超过ResNet家族(二)
283 0
|
12月前
|
机器学习/深度学习 算法 计算机视觉
CVPR2023部署Trick | 解决量化误差振荡问题,让MobileNetv2的能力超过ResNet家族(一)
CVPR2023部署Trick | 解决量化误差振荡问题,让MobileNetv2的能力超过ResNet家族(一)
142 0
|
机器学习/深度学习 人工智能 计算机视觉
深度学习经典网络解析图像分类篇(七):ResNet
 如果说你对深度学习略有了解,那你一定听过大名鼎鼎的ResNet,正所谓ResNet 一出,谁与争锋?现如今2022年,依旧作为各大CV任务的backbone,比如ResNet-50、ResNet-101等。ResNet是2015年的ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)中获得了图像分类和物体识别的冠军,是中国人何恺明、张祥雨、任少卿、孙剑在微软亚洲研究院(AI黄埔军校)的研究成果。
356 0
|
机器学习/深度学习 数据挖掘 Go
深度学习论文阅读图像分类篇(五):ResNet《Deep Residual Learning for Image Recognition》
更深的神经网络更难训练。我们提出了一种残差学习框架来减轻 网络训练,这些网络比以前使用的网络更深。我们明确地将层变为学 习关于层输入的残差函数,而不是学习未参考的函数。我们提供了全 面的经验证据说明这些残差网络很容易优化,并可以显著增加深度来 提高准确性。在 ImageNet 数据集上我们评估了深度高达 152 层的残 差网络——比 VGG[40]深 8 倍但仍具有较低的复杂度。这些残差网络 的集合在 ImageNet 测试集上取得了 3.57%的错误率。这个结果在 ILSVRC 2015 分类任务上赢得了第一名。我们也在 CIFAR-10 上分析 了 100 层和 1000 层的残差网络。
172 0
|
机器学习/深度学习 人工智能 并行计算
PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类
本期将提供一个利用深度学习进行花卉图片分类的案例,并使用迁移学习的方法解决训练数据较少的问题。图片分类是根据图像的语义信息对不同的图片进行区分,是计算机视觉中的基本问题,也是图像检测、图像分割、物体跟踪等高阶视觉任务的基础。在深度学习领域,图片分类的任务一般基于卷积神经网络来完成,如常见的卷积神经网络有 VGG、GoogleNet、ResNet 等。而在图像分类领域,数据标记是最基础和烦琐的工作。有时由于条件限制,往往得不到很多经过标记的、用于训练的图片,其中一个解决办法就是对已经预训练好的模型进行迁移学习。 本文是以 ResNet 为基础,对花卉图片进行迁移学习,从而完成对花卉图片的分类任
398 0
PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类
|
机器学习/深度学习 存储 算法
PyTorch深度学习实战 | 基于ResNet的人脸关键点检测
人脸关键点检测指的是用于标定人脸五官和轮廓位置的一系列特征点的检测,是对于人脸形状的稀疏表示。关键点的精确定位可以为后续应用提供十分丰富的信息。因此,人脸关键点检测是人脸分析领域的基础技术之一。许多应用场景(如人脸识别、人脸三维重塑、表情分析等)均将人脸关键点检测作为其前序步骤来实现。本文将通过深度学习的方法来搭建一个人脸关键点检测模型。 1995年,Cootes提出 ASM(active shape model) 模型用于人脸关键点检测,掀起了一波持续多年的研究浪潮。这一阶段的检测算法常常被称为传统方法。2012年,AlexNet 在 ILSVRC 中力压榜眼夺冠,将深度学习带进人们的视野。
529 0
PyTorch深度学习实战 | 基于ResNet的人脸关键点检测
|
机器学习/深度学习 计算机视觉
深度学习:ResNet从理论到代码
深度学习:ResNet从理论到代码
109 0
深度学习:ResNet从理论到代码
|
5天前
|
机器学习/深度学习 PyTorch 语音技术
Pytorch迁移学习使用Resnet50进行模型训练预测猫狗二分类
深度学习在图像分类、目标检测、语音识别等领域取得了重大突破,但是随着网络层数的增加,梯度消失和梯度爆炸问题逐渐凸显。随着层数的增加,梯度信息在反向传播过程中逐渐变小,导致网络难以收敛。同时,梯度爆炸问题也会导致网络的参数更新过大,无法正常收敛。 为了解决这些问题,ResNet提出了一个创新的思路:引入残差块(Residual Block)。残差块的设计允许网络学习残差映射,从而减轻了梯度消失问题,使得网络更容易训练。
123 0

热门文章

最新文章