bottleneck resnet网络_关于ResNet及其变体的总结(上)
ResNet作为卷积神经网络的一个里程碑式的模型一直在各个领域被应用,因此学习这样一个模型架构很有必要。网上也有很多关于这个网络的介绍,也从中衍生了很多改进的模型(无论改动幅度大小)。因此,有必要就ResNet的变体进行总结。
本篇文章涉及到的文章有:原始版本ResNet[1]、Wider ResNet[3]、ResNeXt[4]、DarkNet53[5],这几篇是我看到变化相对明显;还有一些则是改动相对小一点的,如Identity mapping[2]、Bag of Trick[6]、Dilated ResNet[7]以及torch框架下一个Blog[8],这些文章里也提及到对ResNet的改动,但是并没有整个Block地改,而是只改动了小部分。
下面就开始讲讲这些文章的改动。
原版的ResNet[1]指出一般认为,越深的网络通常会带来更好的表现,但实际上,普通的更深的网络性能不但没有提升,反而会出现下降。于是文章提出了一个假设,越深的网络应该带来至少和浅层网络一样的性能,那么如何保证这个效果呢?文章提出了skip connection,也就是一个简单的浅层特征与深层特征相加,这样保证了,即使中间的运算得到的特征没有任何作用,那么这个深层网络也可以保证和浅层有相同的性能。然而实际的效果则出乎意料地好,因为skip connection的存在,每一个特征与特征相加的Block中间的卷积只需要拟合“残差”,剩余的可以跳过“skip”给更前面的。文章中提出了两个Block,一个是BasicBlock,一个则是BottleNeck Block,如下图:
其中,左边的是BasicBlock,用于少于50层的ResNet(通常是ResNet18、ResNet34);右边是BottleNeckBlock,用于大于等于50层ResNet(通常是ResNet50、ResNet101和ResNet152)。在较深的网络中BottleNeck会在参数上更加节约,然后还能保持性能的提升。值得注意的是在“add”操作前的卷积只需要在其后面加BN不需要Relu,而是在“add”后再Relu。整个网络结构如下图所示:
原始的ResNet对于训练卷积神经网路做出了很大的贡献,但是同样也有着许多可以改进的地方。首先,在[1]发表后,很多后续研究[],[]表示,残差连接并不高效,从[1]中的原文也可以看到从ResNet50到ResNet152,top5-error降低了1%(top1-error连1%都没),但是FLOPs却增加了3倍左右。
(注:在之后的文章[6]以及torch框架中的Blog[8]中,ResNet50的top1-error为24.7%的,而下图则是在arxiv上得到)
后续[3]提出,每一个Block中的卷积应该更宽,如下图(c):
但是这个作为对比只能说宽模型有更好的作用,因为在拓宽了模型后参数也变得更多了。但是仍然比较快。
总得来说这篇文章只是提出了一种可能性,说明了宽模型的作用。
ResNeXt[4]则同样由Kaiming组提出,在BottleNeck中的3x3 Conv用组卷积(Group Conv)的方式加入,并且提出了一个超参数“Cardinality”代表组卷积的组数。同时1x1 Conv的降维由原来的降成1/4变成降成1/2,再接3x3 Group Conv。这样保持了参数和浮点数的近似。
结果表明与原模型相比有1%提升:
在[1]发表后,Kaiming组又发表了Identity mapping[2]文章来探讨更深的残差网络的优化问题,提出了“pre-activation”的顺序,即进入每一个Block时先进行BatchNorm+ReLU后接Conv,这样每一次相加都是直接相加而不用接BN+ReLU,实验证明这样会使更深的网络,ResNet-1001变得容易优化,而且不容易过拟合。
最终的结果表示,使用带pre-activation的ResNet-200性能达到了sota,即比InceptionV3更好。
但是这一个现象只有很深的网络才有效果,哪怕是ResNet-164,pre-activation和普通的结构性能并没有相差多少。
第一部分就写到这里吧,下半部分会写一下DarkNet53以及其它一些关于ResNet的改动。
- Deep residual learning for image recognition
- Identity Mappings in Deep Residual Networks
- Wide Residual Networks
- Aggregated Residual Transformations for Deep Neural Networks
- YOLOv3: An Incremental Improvement
- Bag of Tricks for Image Classification with Convolutional Neural Networks
- Dilated Residual Networks
- Torch | Training and investigating Residual Nets
bottleneck resnet网络_关于ResNet及其变体的总结(上)相关推荐
- bottleneck resnet网络_关于ResNet网络的一点理解(网络结构、building block 及 “bottleneck” building block)...
[时间]2018.10.05 [题目]关于ResNet网络的一点理解(网络结构.building block 及 "bottleneck" building block) 概述 本 ...
- bottleneck resnet网络_为何resnet的bottleneck block为何能增强特征学习能力?
个人理解,仅供参考. 咱们先看一下原文是怎么说的: 原文说的是考虑到训练时间的限制,因此采用了BottleNeck的结构,换言之,至少在原论文中没有说明使用BottleNeck相较于BasicBloc ...
- 批梯度下降 随机梯度下降_梯度下降及其变体快速指南
批梯度下降 随机梯度下降 In this article, I am going to discuss the Gradient Descent algorithm. The next article ...
- 子集和与一个整数相等算法_背包问题的一个变体:如何解决Java中的分区相等子集和问题...
子集和与一个整数相等算法 by Fabian Terh 由Fabian Terh Previously, I wrote about solving the Knapsack Problem (KP) ...
- unity打包后运行出错_一种Shader变体收集和打包编译优化的思路
这是侑虎科技第646篇文章,感谢作者卢建供稿.欢迎转发分享,未经作者授权请勿转载.如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨.(QQ群:793972859) 作者主页:https://gi ...
- bottleneck resnet网络_深度学习|图像分类:ResNet(二)
接着上一讲,我们来看下ResNet的代码,代码的github链接为:ry/tensorflow-resnet,代码基于tensorflow编写. 网络结构的代码如下: import skimage.i ...
- ResNet网络详解与keras实现
ResNet网络详解与keras实现 ResNet网络详解与keras实现 Resnet网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 梯度退化 Residual Lear ...
- ResNet网络详解并使用pytorch搭建模型、并基于迁移学习训练
1.ResNet网络详解 网络中的创新点: (1)超深的网络结构(突破1000层) (2)提出residual模块 (3)使用Batch Normalization加速训练(丢弃dropout) (1 ...
- C#泛谈 —— 变体(协变/逆变)
有如下四个类. public class Animal{}public class Mammal : Animal{}public class Dog : Mammal{public void Eat ...
最新文章
- 绝对经典的滑轮新闻显示(javascript+css)实现
- LeetCode Array Partition I
- JavaSript实现调用google地图输入经度,纬度移动到该点,同时对点做标记
- EUI库 - EXML
- 【CV】多目标跟踪:监控领域你必须要了解的算法
- 【笔记】css卡片式地展示人物信息和一些展示信息的相关美化记录
- HDU2068(错列排序)
- 面向对象开发的五大基本原则
- go odroid_小众奇葩!Odroid Go Super简评
- git批量删除文件和批量提交
- 【数据结构 by 解学武】线性表简介
- 配置kubeconfig文件实现kubectl多集群切换
- 验证码绕过(对验证码绕过的理解-----burpsuite)
- Phoenix使用注意事项以及跟标准sql的不同
- 硬盘无法识别怎么办 硬盘无法识别怎么恢复数据
- 用友nc很慢跟java_大家觉得用友NC的性能如何?
- 两种实现九九乘法表的vb代码
- 三个网络接口计算机主板,电脑主板接口安装详解
- 企业单位申请代码签名证书方法
- Leetcode高频题目整理(更新)
热门文章
- gpio引脚介绍 树莓派3b_使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化...
- cytoscape插件bingo使用
- python axis 1_科学网—Python初学之解读MDFA模块(2):解读 def rwalk(X, axis=-1) - 刘磊的博文...
- Mdnice 简洁主题
- 使用 conda 和 Jupyter 创建你的自定义 R 包,转换笔记为幻灯片
- 科研文献|结肠直肠癌早期检测中跨群体微生物标记物的鉴定
- GraphPad Prism —— 简单又好用的生物数据统计绘图软件
- Error: Discrete value supplied to continuous scale
- pandas将dataframe中的年、月、日数据列合并成完整日期字符串、并使用to_datetime将字符串格式转化为日期格式
- R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据、日期范围之外的数据、日期之后的数据、日期之前的数据