resnet网络结构_ResNet网络详细解析(超详细哦)
1、RestNet网络
1.1、RestNet网络结构
ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域里得到广泛的应用。它使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思,下面是这个resnet的网络结构:
它对每层的输入做一个reference(X), 学习形成残差函数, 而不是学习一些没有reference(X)的函数。这种残差函数更容易优化,能使网络层数大大加深。在上图的残差块中它有二层,如下表达式,
其中σ代表非线性函数ReLU。
然后通过一个shortcut,和第2个ReLU,获得输出y。
当需要对输入和输出维数进行变化时(如改变通道数目),可以在shortcut时对x做一个线性变换Ws,如下式。
然而实验证明x已经足够了,不需要再搞个维度变换,除非需求是某个特定维度的输出,如是将通道数翻倍,如下图所示:
由上图,我们可以清楚的看到“实线”和“虚线”两种连接方式, 实线的Connection部分 (第一个粉色矩形和第三个粉色矩形) 都是执行3x3x64的卷积,他们的channel个数一致,所以采用计算方式:
Y = F(x) + x,虚线的Connection部分 (第一个绿色矩形和第三个绿色矩形) 分别是3x3x64和3x3x128的卷积操作,他们的channel个数不同(64和128),所以采用计算方式: y=F(x)+Wx 。其中W是卷积操作,用来调整x的channel维度。
在计算机视觉里,网络的深度是实现网络好的效果的重要因素,输入特征的“等级”随增网络深度的加深而变高。然而在网络深度不断加深的情况下,梯度弥散/爆炸成为训练深层次的网络的障碍,导致导致网络无法收敛。虽然,归一初始化,各层输入归一化,使得可以收敛的网络的深度提升为原来的十倍。虽然网络收敛了,但网络却开始退化 (增加网络层数却导致更大的误差), 如下图所示:
由上图可知,在一个浅层网络的基础上叠加y=x的层(称identity mappings,恒等映射),可以让网络随深度增加而不退化。这反映了多层非线性网络无法逼近恒等映射网络。
但是,在深度学习中我们希望有更好性能的网络,而网络不退化则不是我们的目的。 在 RestNet网络中学习的残差函数是F(x) = H(x) - x, 这里如果F(x) = 0, 那么就是上面提到的恒等映射(H(x) = x)。事实上,RestNet是“shortcut connections”的在connections是在恒等映射下的特殊情况,它没有引入额外的参数和计算的复杂度。 假如优化目标函数是逼近一个恒等映射, 而不是0映射(F(x) = 0)或者说恒等映射,那么学习找到对恒等映射的扰动会比重新学习一个映射函数要容易。
1.2、残差块的两种结构
这是文章里面的图,我们可以看到一个“弯弯的弧线“这个就是所谓的”shortcut connection“,也是文中提到identity mapping,这张图也诠释了ResNet的真谛,当然大家可以放心,真正在使用的ResNet模块并不是这么单一,文章中就提出了两种方式:
1.3、ResNet50和ResNet101简单讲解
这里把ResNet50和ResNet101特别提出,主要因为它们的使用率很高,所以需要做特别的说明。给出了它们具体的结构:
上表是Resnet不同的结构,上表一共提出了5中深度的ResNet,分别是18,34,50,101和152,首先看表的最左侧,我们发现所有的网络都分成5部分,分别是:conv1,conv2_x,conv3_x,conv4_x,conv5_x,之后的其他论文也会专门用这个称呼指代ResNet50或者101的每部分。 例如:101-layer那列,101-layer指的是101层网络,首先有个输入7x7x64的卷积,然后经过3 + 4 + 23 + 3 = 33个building block,每个block为3层,所以有33 x 3 = 99层,最后有个fc层(用于分类),所以1 + 99 + 1 = 101层,确实有101层网络; 注:101层网络仅仅指卷积或者全连接层,而激活层或者Pooling层并没有计算在内;我们关注50-layer和101-layer这两列,可以发现,它们唯一的不同在于conv4_x,ResNet50有6个block,而ResNet101有23个block,两者之间差了17个block,也就是17 x 3 = 51层。
私信我:“学习”,可免费领取更多相关学习资料 (免费的哦)。
resnet网络结构_ResNet网络详细解析(超详细哦)相关推荐
- 2022年全国职业院校技能大赛中职组网络安全竞赛——隐写术应用解析(超详细)
2022年全国职业院校技能大赛中职组网络安全竞赛--隐写术应用解析(超详细) B-8任务八:隐写术应用 *任务说明:仅能获取Server8的IP地址 环境需求私信博主 1.找出文件夹1中的文件,将文件 ...
- 区间DP解析超详细版!!街边老奶奶也喜欢看的好博客
区间DP解析超详细版!! 文章目录 区间DP解析超详细版!! 1. 概念入门 2. 线性石子归并 3. 环形石子归并 4. 奇怪的题题目目 5. 区间DP的优化 附录 在上章 背包 (<-点击传 ...
- svn安装教程 mysql_CentOS6.4 下安装SVN的详细教程(超详细)
1.检查系统是否已经安装如果安装就卸载 rpm -qa subversion yum remove subversion 2.安装 yum install subversion 3.建立SVN库 mk ...
- Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功)
Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功) 文章目录 Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功) 1.上传或者下载mysql安装包 2.检查是否 ...
- MP3文件结构解析(超详细)
1. MP3文件结构解析 1.1. 概述 1.1.1. 音频相关术语 ID3: 一般位于一个mp3文件的开头或末尾的若干字节内,记录该mp3文件的歌手.标题.专辑名称.年代.风格等信息,ID3分位两个 ...
- mqtt报文解析—超详细
文章目录 一.报文结构 二.固定报头 三.剩余长度 四.mqtt控制报文 Ⅰ.CONNECT 1.固定报头 2. 可变报头 2.1.协议名 2.2.协议级别 2.3.连接标志 2.4 保持连接 2.5 ...
- 家用宽带公网ipv4/ipv6搭建服务(常见两种网络模式)超详细
静态内网IP,动态内网IP,公网IP,DNS,DHCP,DMZ,UPNP,路由,桥接,DDNS (一)目的与概念介绍 目的: 将局域网内的一台主机的服务共享到公网(互联网)上被访问,提供服务. 前提: ...
- 【嵌入式实战】STM32+Lwip 实现 SNTP 网络授时(超详细)
文章目录 原创声明 前言 一.SNTP 是什么? 二.Cube 快速配置 2.1 STM32 ETH 设置 2.2 修改 PHY 地址 2.3 LWIP SNTP 配置 2.4 开启 STM32 RT ...
- VMware虚拟机网络设置(超详细,必看)
一.centors网络配置说明 虚拟机网络配置有三种模式:Brigded桥接模式.NAT模式.Host-only模式 1.Bridge桥接模式: 默认使用Vmnet0,不提供DHCP服务 虚拟机与外部 ...
最新文章
- 在redhat9中交叉编译nano-X nxlib和fltk
- 推荐一篇讲解各种debug技术的文章,相当不错!
- New to My Oracle Support?
- python 发邮件 动态html_python 邮件发送html文件
- UIKit框架-高级控件Swift版本: 6.UIAlertView方法/属性详解
- 体验VMware View HTML Access
- python飞机大战源码素材包_Python飞机大战实战项目案例
- 傅里叶变换与时域频域关系
- 微信小程序UI设计规范及文档模版
- ArcGIS的mxd文档存储为相对路径
- 自动生成 : Java方法 toString(); hashCode(); equals(); compareTo()的方法 避免繁杂的体力活
- 大学计算机专业课程体系
- We Are A Team
- (译)ABP之Entities
- 最近企业上云是大趋势,那简单说说什么是企业上云?该如何上云?
- rviz一些无法正常显示的问题
- 1.dom4j 解析xml
- 机器人运动估计——IMU运动方程与ESKF原理介绍(上)
- 【C语言】模拟简单的《掘地求生Getting Over It》(源码)
- 无皇刀谭 · 异邦人
热门文章
- 三种model 在lfw 上的精度
- 2014年0417的工作计划
- 2014年5月30日
- 安装Python-2.5.2,并修改默认python版本
- 3d激光雷达开发(入门)
- 搜索引擎的那些事(32位MD5算法)
- mysql盲注ascii_[翻译]关于通过对8bit的ascii做右位移提高mysql盲注效率
- mysql获取当月数据_Python + MySQL如何获取股票数据(历史数据)
- 接口调用导致阻塞_RocketMQ与Dubbo之间线程之间如何阻塞和唤醒
- 软件测试之python面试题_常见Python面试题整理带答案