一、ResNet(总结自csdn文章)

随着网络的加深,出现了训练集准确率下降的现象,确定这不是由于Overfit过拟合造成的。作者针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络尽可能的加深,其中引入了全新的结构如图1:

残差指的是什么?

其中ResNet提出了两种mapping:

一种是identity mapping,指的就是图1中”弯弯的曲线”,另一种residual mapping,指的就是除了”弯弯的曲线“那部分,所以最后的输出是 y=F(x)+x。identity mapping顾名思义,就是指本身,也就是公式中的x,而residual mapping指的是“差”,也就是y−x,所以残差指的就是F(x)部分。

为什么ResNet可以解决“随着网络加深,准确率不下降”的问题?

理论上,对于“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式,也就是identity mapping和residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。

ResNet结构

它使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思。“弯弯的弧线“这个就是所谓的”shortcut connection“,也是文中提到identity mapping,这张图也诠释了ResNet的真谛,真正在使用的ResNet模块并不是这么单一,文章中就提出了两种方式:

这两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图),一般称整个结构为一个”building block“。其中右图又称为”bottleneck design”,目的一目了然,就是为了降低参数的数目,第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的话就是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,差了16.94倍。

对于常规ResNet,可以用于34层或者更少的网络中,对于Bottleneck Design的ResNet通常用于更深的如101这样的网络中,目的是减少计算和参数量(实用目的)。

如果F(x)和x的channel个数不同怎么办,因为F(x)和x是按照channel维度相加的,channel不同怎么相加呢?

针对channel个数是否相同,要分成两种情况考虑,如下图:

实线的的Connection部分(”第一个粉色矩形和第三个粉色矩形“)都是执行3x3x64的卷积,他们的channel个数一致,所以采用计算方式: y=F(x)+xy=F(x)+x

虚线的的Connection部分(”第一个绿色矩形和第三个绿色矩形“)分别是3x3x64和3x3x128的卷积操作,他们的channel个数不同(64和128),所以采用计算方式: y=F(x)+Wxy=F(x)+Wx

其中W是卷积操作,用来调整x的channel维度的;

两种Shortcut Connection方式实例(左图channel一致,右图channel不一样)

ResNet50和ResNet101

Resnet网络结构的设计遵循两种设计规则:1)对于相同的输出特征图尺寸,层具有相同数量的滤波器;2)如果特征图大小减半,则滤波器的数量加倍,以便保持每一层的时间复杂度。

这里把ResNet50和ResNet101特别提出,主要因为它们的出镜率很高,所以需要做特别的说明。给出了它们具体的结构:

上面一共提出了5中深度的ResNet,分别是18,34,50,101和152,首先看表2最左侧,我们发现所有的网络都分成5部分,分别是:conv1,conv2_x,conv3_x,conv4_x,conv5_x,之后的其他论文也会专门用这个称呼指代ResNet50或者101的每部分。

实现部分的 tricks:

图片resize:短边长random.randint(256,480);裁剪:224*224随机采样,含水平翻转;减均值;标准颜色扩充[2]

conv和activation间加batch normalization帮助解决vanishing/exploding问题

minibatch-size:256

learning-rate: 初始0.1, error平了lr就除以10

weight decay:0.0001

momentum:0.9

没用dropout[3]

二、ResNet V2(总结自csdn文章)

下面(1)-(5)的结构哪个是我们常用的ResNet结构?

其中weight指conv层,BN指Batch Normalization层,ReLU指激活层,addition指相加;

根据ResNet的描述,似乎以上五组都符合,那么2016年ResNet原文是哪一个结构呢?以及其他四组结构也都work么?

针对第一个问题,ResNet原文中使用的结构是(1),(1)的特点有两个:1)BN和ReLU在weight的后面;2)最后的ReLU在addition的后面;对于特点1),属于常规范畴,我们平时也都这个顺序:Conv->BN->ReLU;对于特点2),为什么ReLU放在addition后面呢?按照常规,不是应该是图(3)这种么,那么我们接下来引出的问题就是:

图(3)的结构work么?

对于每个图右侧部分我们称作“residual”分支,左侧部分我们称作“identity”分支,如果ReLU作为“residual”分支的结尾,我们不难发现“residual”分支的结果永远非负,这样前向的时候输入会单调递增,从而会影响特征的表达能力,所以我们希望“residual”分支的结果应该在(-∞, +∞);这点也是我们以后设计网络时所要注意的。

对于图(3)不OK的情况,那如果把BN也挪到addition后面呢?如图(2),同时也保证了“residual”分支的取值范围;

这里BN改变了“identity”分支的分布,影响了信息的传递,在训练的时候会阻碍loss的下降;这里大家肯定又有个问题:

为什么“identity”分支发生变化,会影响信息传递,从而影响训练呢?

到此也就彻底回答了图(2)的结构为何会阻碍反向传播时的信息。

在分析图(4)和图(5)之前,我们引出一个概念:”Post-activation”和”Pre-activation”,其中Post和Pre的概念是相对于weight(conv)层来说的,那么我们不难发现,图(1), (2), (3)都是”Post-activation”,图(4), (5)都是”Pre-activation”,那么两种模式哪一个更好呢?这里我们就用实验结果说话。

上图是5种结构在Cifar10上的实验结果,一共实验了两种网络ResNet110和ResNet164(注:这里直接摘抄了原文的图片,本人并没有真实的试验过);

从实验结果上,我们可以发现图(4)的结构与ResNet原结构伯仲之间,稍稍逊色,然而图(5)的结构却好于ResNet原结构。图5的结构好的原因在于两点:1)反向传播基本符合假设,信息传递无阻碍;2)BN层作为pre-activation,起到了正则化的作用;

最后我们通常把图5的结构称作ResNetV2,把ResNetV1和ResNetV2结构再次show:

resnet结构_经典卷积网络(二)-ResNet相关推荐

  1. 经典卷积网络进阶--ResNet详解

    一.ResNet概述 resnet在2015名声大噪,微软公司提出了一种新的网络结构---残差网络(resnet).残差模块结构图如下图1,图中曲线连接方式(X identity)称为近道连接,这种连 ...

  2. 41_经典卷积网络、LeNet、AlexNet、VGG、GoogleNet、ResNet、NIN、DenseNet、EfficientNet、MobileNetV1/2/3、SENet等

    1.38.经典卷积网络 1.38.1.LeNet 1.38.1.1.介绍 1.38.1.2.网络结构 1.38.1.3.代码实现 1.38.2.AlexNet 1.38.2.1.介绍 1.38.2.2 ...

  3. 经典卷积网络:AlexNet、ZFNet、VGG、GoogleNet、ResNet

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.AlexNet 1.理论介绍 2.代码实现 model部分 二.ZFNet 三.VGG 四.GoogleNet 五 ...

  4. 经典卷积网络--InceptionNet

    经典卷积网络--InceptionNet 1.InceptionNet网络模型 2.1 * 1的卷积运算是如何降低特征厚度? 3.InceptionNet完整实现(使用CIFAR10数据集) 借鉴点: ...

  5. 经典卷积网络--VGGNet

    经典卷积网络--VGGNet 1.VGGNet网络模型 2.VGGNet网络模型搭建(使用Tensorflow) 3.完整代码实现(使用CIFAR10数据集) 借鉴点:小卷积核减少参数的同时,提高识别 ...

  6. 深度学习笔记(27) 经典卷积网络

    深度学习笔记(27) 经典卷积网络 1. 前言 2. LeNet-5 3. AlexNet 4. VGGNet 1. 前言 讲了基本构建,比如卷积层.池化层以及全连接层这些组件 事实上,过去几年计算机 ...

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

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

  8. 【TensorFlow实战】TensorFlow实现经典卷积神经网络之ResNet

    ResNet ResNet(Residual Neural Network)通过使用Residual Unit成功训练152层深的神经网络,在ILSVRC 2015比赛中获得冠军,取得3.57%的to ...

  9. 卷积网络二:几个典型的卷积神经网络

    1 为什么要进行实例探究 上一篇讲了卷积神经网络中的基本组件,卷积层,池化层,全连接层,那么如何把这些基本构件组合起来形成有效的卷积神经网络,找感觉的最好方法之一就是去看一些案例,就像看别人的代码学习 ...

最新文章

  1. Data-truncation--Incorrect-string-value
  2. RUST直接升钢指令_[译]参照TypeScript学习Rust-part-1
  3. 记于2014-12-9
  4. 德尔塔克戎,新冠“双毒合一”变体首次证实
  5. python工程师月薪多少-Python工程师的薪资到底有多高
  6. halcon 图像差分_Halcon编程-基于纹理的mara检测
  7. 微软Kubernetes服务AKS开发正式版空间服务
  8. IPv6 带来的反欺诈难题,程序员该如何破解?
  9. 浅谈APP与H5对比!优势都有哪些呢?
  10. java ad 证书_你好,请教一个java与AD域SSL(636端口)通讯问题
  11. 如何快速入手 Shell 脚本编程
  12. lucene创建索引的几种方式(一)
  13. 高德、百度、GPS经纬度转换
  14. 【基础】杨辉三角python题解
  15. vba 输出文本 m linux,VBA使用FileSystemObject将读取或写入文本文件(一)
  16. 18岁少年辍学组建黑客俱乐部 已覆盖62所学校
  17. K8s中Secrets
  18. Linux系统编程之捕捉SIGCHLD
  19. 如何在 IDEA 中创建并部署 JavaWeb 程序
  20. BigBrother:UCloud 全链路大规模网络连通性检测系统详解

热门文章

  1. MonoBehaviour常用方法
  2. txt记录位置 c++,python显示位置
  3. Android网络性能监控方案
  4. Node.js 应用故障排查手册 —— Node.js 性能平台使用指南
  5. Kubernetes 的自动伸缩你用对了吗?
  6. 360数科 CTO 王继平:金融 IT 变革浪潮下,360数科的技术破局
  7. 匿名提问:rm -rf了怎么办?
  8. Parallels 发布 Desktop 17版本,支持 Windows 11 和 macOS Monterey
  9. 探秘HDFS —— 发展历史、核心概念、架构、工作机制 (上)| 博文精选
  10. 微服务与单体架构:IT变革中企业及个体如何自处?