应用于图像识别的深度残差网络:ResNet

  • 1.论文背景
  • 2.论文工作
    • 2.1 BN层
    • 2.2 残差块
    • 2.3 34层ResNet网络结构

1.论文背景

《Deep Residual Learning for Image Recognition》ResNet是微软MSRA何凯明团队在2015年ImageNet上使用的网络,在当年的classification、detection、localization比赛中,ResNet均获了第一名的好成绩。

2.论文工作

作者首先提出了在加深网络深度进行训练时发现的问题:只是进行卷积层与池化层的叠加时,与浅层网络(比如20层)相比,随着网络层数的增加(比如56层),误差反而增大。

原因分析:随着网络加深,1.梯度消失或梯度爆炸问题加重;2.网络能力退化。

问题解决:

  • 对于问题1,作者在网络中加入了BN(BatchNormalization)层。
  • 对于问题2,作者提出了残差块(ResidualBlock)。

2.1 BN层

Batch Normalization是Google团队在2015年论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》中提出的。通常神经网络的输入满足一定分布的特征矩阵,但是随着神经元的非线性变换,会使得除了第一层之外其它层的输入不一定满足一定的分布了,从而网络难以快速收敛,难以训练。

BN的目的是使特征图满足均值为0,方差为1的分布规律,这里的特征图理论上是指整个训练样本集所对应特征图的数据要满足分布规律,也就是说要计算出整个训练集的特征图然后在进行标准化处理,但是这对于一个大的数据集明显是不可能做到的,所以这里是Batch Normalization,也就是计算一个Batch数据的特征图然后再进行标准化(batchsize越大越接近整个数据集的分布,效果越好)。

BN计算方法:

其中μ和σ平方分别是均值和方差,它们是在正向传递过程中统计得到的。ε是一个很小的值,用来防止分母为0。γ和β是可学习的两个参数,γ用来调整数值分布的方差大小,初始为1,β用来调节数值均值的位置,初始为0,这两个参数是在反向传播过程中学习得到的。

2.2 残差块

作者提出了两种残差块,如下图:

左边的结构针对于网络层数较少(34层)的网络结构。该结构主线将输入特征图经过2个深度64的3×3卷积,弧线(论文中叫shortcut)表示将主线处理后的特征图与原输入特征图进行一个相加,因此主分支输出应当与shortcut,也就是原输入特征图的shape必须相同,然后经过Relu激活函数。

右边的结构针对于网络层数较多(50/101/152层)的网络结构。该结构计算过程与左边结构类似,两个1×1卷积用分别来对特征图进行降维和升维。

2.3 34层ResNet网络结构

其中实弧线结构与上面说的残差块是一样的,它们的输入特征图和输出特征图shape是一样的。而虚弧线完成了特征图shape上的变换,即下采样,对应的是Conv3_x至Conv5_x中的第一次残差块,以Conv3_x中的第一个残差块为例,它的具体结构如下,右边虚线上的1×1卷积保证了主线输出和shortcut特征图shape上的一致:

应用于图像识别的深度残差网络:ResNet相关推荐

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

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

  2. 何恺明编年史之深度残差网络ResNet

    文章目录 前言 一.提出ResNet原因 二.深度残差模块 1.数学理论基础 2.深度网络结构 三.Pytorch代码实现 四.总结 前言 图像分类是计算机视觉任务的基石,在目标监测.图像分割等任务中 ...

  3. TF2.0深度学习实战(七):手撕深度残差网络ResNet

    写在前面:大家好!我是[AI 菌],一枚爱弹吉他的程序员.我热爱AI.热爱分享.热爱开源! 这博客是我对学习的一点总结与记录.如果您也对 深度学习.机器视觉.算法.Python.C++ 感兴趣,可以关 ...

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

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

  5. 深度残差网络ResNet解析

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

  6. 深度残差网络RESNET

    一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别的效果有着很大的影响,所以正常想法就是能把网络设计的越深越好, 但是事实上却不是这样,常规的网络的堆叠(plain netw ...

  7. 【深度学习】深度残差网络ResNet

    文章目录 1 残差网络ResNet 1.1要解决的问题 1.2 残差网络结构 1.3 捷径连接 1.4 总结 1 残差网络ResNet 1.1要解决的问题   在传统CNN架构中,如果我们简单堆叠CN ...

  8. 通过深度残差网络ResNet进行图像分类(pytorch网络多网络集成配置)

    通过深度残差网络进行图像分类(pytorch网络多网络集成配置) 简介 本项目通过配置文件修改,实现pytorch的ResNet18, ResNet34, ResNet50, ResNet101, R ...

  9. 深度学习论文导航 | 08 ResNet:用于图像识别的深度残差网络

    写在前面:大家好!我是[AI 菌],一枚爱弹吉他的程序员.我热爱AI.热爱分享.热爱开源! 这博客是我对学习的一点总结与记录.如果您也对 深度学习.机器视觉.算法.Python.C++ 感兴趣,可以关 ...

最新文章

  1. 百战程序员试题与答案(仅供参考)
  2. 解决Win10 Virtualbox5.2.18桥接不能联网小记
  3. 关闭用playsound函数的WAV文件
  4. 计算机应用技术研究生开题报告,计算机应用技术专业论文开题报告.doc
  5. ZooKeeper学习总结(1)——ZooKeeper入门介绍
  6. 笔记_pytorch
  7. opencv图像分析与处理(15)- 图像压缩中的编码方法:霍夫曼编码、Golomb编码、Rice编码、算术编码及其实现
  8. C# 实现打开和关闭可执行文件
  9. Mentor Graphics QuestaSim 2021 出现“正在运行后安装脚本...脚本:1/1”的问题
  10. PLC和工控机有什么关系?
  11. 系统设计.如何设计一个秒杀系统(完整版)
  12. js转换金钱为中文单位元、万元、亿元、万亿
  13. 明翰豆瓣列表V1.5(持续更新)
  14. 利用android monkey 抢支付宝红包
  15. 很不错的英语听力网站
  16. 网线直接接电脑可以上网,但是接到无线路由器上,就不能上网了
  17. 房地产泡沫,经济发展的真正毒瘤
  18. Spread for WPF-Silverlight 新功能使用指南
  19. 创意信息子公司作为华为合作伙伴 携产品登录华为云端展厅
  20. google 2fa 双因子印证

热门文章

  1. 汉诺塔递归python搬运次数_Python3.x | 汉诺塔递归理解
  2. JavaScript函数式编程之偏函数(Partial Function)
  3. Scala 中的偏函数
  4. xvfb与x11vnc
  5. 网站卡了?4步方法一秒排查
  6. 一剑封喉:Uniswap V3引领AMM向CEX发起冲锋
  7. 批处理简明教程及示例
  8. Linux Centos 配置IP,DNS地址及Xshell远程登陆
  9. php 读取html内容_php读取html文件(或php文件)的方法
  10. bugku-web-bp-wp