ResNet

论文:“Deep Residual Learning for Image Recognition”

面临的问题

ResNet解决的是深度神经网络的“退化”(degradation)问题。对于卷积神经网络,网络的深度对于最终网络的表现性能至关重要,从vgg、GoogLeNet等网络就可以看出。然而随着网络层数的加深,会出现许多问题:梯度消失、梯度爆炸、过拟合以及退化。梯度消失、梯度爆炸的问题通过权重初始化和引入Batch Normalization来解决。过拟合也可以通过引入dropout来解决。但是Batch Normalization和Dropout不能同时使用

退化是指网络整体的性能下降,无论是在训练集还是在测试集上的水平都下降。

残差块(Residual Block)

设潜在需要学习到的映射为 H ( x ) H(x) H(x) 。对于一般的神经网络,都是让神经元 F ( x ) F(x) F(x) 去直接学习潜在的映射 H ( x ) H(x) H(x)。 而ResNet是让 F ( x ) F(x) F(x)去学习残差 H ( x ) − x H(x)-x H(x)−x 。用 F ( x ) + x F(x)+x F(x)+x 来拟合 H ( x ) H(x) H(x) 。

比如需要学习的潜在映射 H ( x ) H(x) H(x) 本身就是一个恒等映射(identity mapping),那么让 F ( x ) F(x) F(x) 学习残差优化得到0,比直接让 F ( x ) F(x) F(x) 学习恒等映射简单得多。

这样后面层的表现至少不会比之前层的差。

在具体实现上,使用的是上图的结构。 F ( x ) + x F(x)+x F(x)+x 构成的block成为Residual Block,即残差块。 一个残差块有两条路径, F ( x ) F(x) F(x) 和 x x x 。 x x x 是恒等映射,成为**“shortcut connections”**。 F ( x ) F(x) F(x) 路径拟合残差。两条路径的结果相加(element-wise addition)之后进行激活。shortcut connections没有需要学习的参数。用数学公式描述就是:
F ( x ) = W 2 σ ( W 1 x ) F(x)=W_2\sigma(W_1x) F(x)=W2​σ(W1​x)
两条路径相加时需要维度相同。如果 F ( x ) F(x) F(x) 这一路有下采样层导致维度不等,则可以给shortcut connections这一路进行线性变换
y = F ( x , { W i } ) + W s x y=F(x,\{W_i\})+W_sx y=F(x,{Wi​})+Ws​x

这里 W s W_s Ws​ 也可以用在维度相同时的情况,但"Identity Mapping in Deep Residual Networks"文中指出恒等映射效果最好。

实现

论文中对比了两种网络:Plain Network和Residual Network。

Plain Network

Plain Network主要仿照VGG网络设计,除了第一层,其他所有曾都使用最多 3 × 3 3\times3 3×3卷积,并且遵循两条简单的设计规则:

  • 输入输出通道数相同的,卷积核数量与特征图的通道数相同。
  • 当特征图的通道数减半时,卷积核数量翻倍。

直接通过将卷积层的 stride 设为2来进行下采样,并且结束时使用全局均值池化(GAP)层加1000的全连接层最后跟随一个softmax层。

这个Plain Network总共有34层,但只有VGG-19运算量的18%。

在每个卷积层之后,激活之前使用BN层。

Residual Network

在Plain Network的基础上加入shortcut connections。图中实线表示的是两条路维度相等。虚线表示的是两条路维度不相等。对于不相等的情况有两种方法:

  • 将多的通道置零,直接相加
  • 使用 1 × 1 1\times1 1×1 卷积进行升维

在每个卷积层之后,激活之前使用BN层。

在此之外,实验阶段还训练了一个18层的网络。

实验

使用ImageNet数据集对18层、34层、ResNet-34进行训练,发现34层网络无论是训练误差还是测试误差都高于18层的网络。


在给34层的网络加上残差的 shortcut connections之后,34层模型的效果则会优于18层的网络。(升维时使用zero padding

除此之外,还发现了残差的结构可以加快收敛速度

结论:

  • 带残差的比不带残差的网络效果好
  • 带残差的深度网络比浅层网络效果好
  • 带残差可以加快收敛速度
  • 使用 1 × 1 1\times1 1×1 卷积效果比zero padding效果好,但参数多

对于更深层的残差网络,为了减少计算量,可以改用 Bottleneck Architectures ,如下图所示

类似于GoogLeNet的Inception结构,在 3 × 3 3\times3 3×3 卷积前后使用 1 × 1 1\times1 1×1 卷积进行降维和升维。

ResNet-50(升维时projection)、ResNet-101、ResNet-152都使用了Bottleneck Architectures。对于152层的网络,尽管层数增加了很多,但是计算量仍然小于 VGG-16/19。

层数计算时只算带学习参数的层

ResNet深度残差网络相关推荐

  1. 详解ResNet(深度残差网络)

    引言 深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件,让我们先看一下ResNet在ILSVRC和COCO 2015上的战绩: ResN ...

  2. 【PyTorch】Resnet/深度残差网络

    1 模型描述 深度残差网络(Resnet)是由来自Microsoft Research的4位学者(Kaiming He等人)提出的卷积神经网络,在2015年的ImageNet大规模视觉识别竞赛(Ima ...

  3. 7 Resnet深度残差网络实现102种花卉分类

    Resnet(Deep residual network, ResNet),深度残差神经网络,卷积神经网络历史在具有划时代意义的神经网络.与Alexnet和VGG不同的是,网络结构上就有很大的改变,在 ...

  4. ResNet(深度残差网络)

    参考:同济子豪兄

  5. 42_ResNet (深度残差网络)---学习笔记

    1.39.ResNet (深度残差网络) Why call Residual # -*- coding: UTF-8 -*-import torch.nn as nn import torch.nn. ...

  6. 【深度学习之ResNet】——深度残差网络—ResNet总结

    目录 论文名称:Deep Residual Learning for Image Recognition 摘要: 1.引言 2.为什么会提出ResNet残差网络呢? 3.深度残差网络结构学习(Deep ...

  7. 深度残差网络ResNet解析

    ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它"简单与实用"并存,之后很多方法都建立在ResNet50或者ResNet1 ...

  8. dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...

    opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...

  9. 深度残差网络(ResNet)详解与实现(tensorflow2.x)

    深度残差网络(ResNet)详解与实现(tensorflow2.x) ResNet原理 ResNet实现 模型创建 数据加载 模型编译 模型训练 测试模型 训练过程 ResNet原理 深层网络在学习任 ...

最新文章

  1. 陈怡然团队最新研究:用复数神经网络提高梯度正则化准确度 | ICML 2021
  2. 【错误记录】Android Studio 编译报错 ( Cannot use connection to Gradle distribution . as it has been stopped. )
  3. ThinkPad系列笔记本待机恢复后,双击我的电脑始终运行而无法打开
  4. 单片机四位数加减计算机程序,51单片机简易计算器程序 实现数字的加减乘除运算...
  5. Linux下安装-配置-mysql-5.7.13
  6. 去哪儿-14-vuex_localstorage
  7. git之提交本地代码到远端指定仓库
  8. 【NOI 2001】食物链(种类并查集)
  9. windows freeSSHd搭建SFtp服务器
  10. 登录注册页面html模版
  11. 这款打怪升级的小游戏,7 年前出生于 GitHub 社区,如今在谷歌商店有 8 万人打了满分...
  12. mac打不开磁盘映像资源忙
  13. 从unity3d官网下载教程
  14. UiPath中文教程PDF
  15. 三国志2017攻略 服务器维护,三国志2017新手攻略少走弯路
  16. C++——打印乘法口诀表
  17. 全文检索服务 _ ElasticSearch
  18. 关掉win10电脑hyper-v虚拟机方法
  19. GBase 8c的易维护性
  20. 17年电赛综合测评——四分频电路

热门文章

  1. 为博客添加樱花飘落的效果
  2. html 拖放插件,DAD – jQuery拖拽/拖放插件
  3. 生物医学数据统计分析-相关性分析
  4. GIS大讨论(九):GIS专业就业之职位篇
  5. java过滤xss_java处理XSS过滤的方法
  6. Linux系统-gzip命令 – 压缩和解压文件
  7. nor flash驱动
  8. vivado 2021.2下载安装兼容的matlab
  9. 更换JDK然后打不开eclipse的解决方法
  10. nmap命令小结(一)