经典网络ResNet介绍

article/2025/9/16 6:09:49

经典网络ResNet(Residual Networks)由Kaiming He等人于2015年提出,论文名为《Deep Residual Learning for Image Recognition》,论文见:https://arxiv.org/pdf/1512.03385.pdf

ResNet要解决的是深度神经网络的”退化(degradation)”问题,即使用浅层直接堆叠成深层网络,不仅难以利用深层网络强大的特征提取能力,而且准确率会下降,这个退化不是由于过拟合引起的。

ResNet也称为残差网络。ResNet是由残差块(Residual Building Block)构建的,论文截图如下所示:提出了两种映射:identity mapping(恒等映射),指的是右侧标有x的曲线;residual mapping(残差映射),残差指的是F(x)部分。最后的输出是F(x)+x。F(x)+x的实现可通过具有”shortcut connections”的前馈神经网络来实现。shortcut connections是跳过一层或多层的连接。图中的”weight layer”指卷积操作。如果网络已经达到最优,继续加深网络,residual mapping将变为0,只剩下identity mapping,这样理论上网络会一直处于最优状态,网络的性能也就不会随着深度增加而降低。

残差块由多个级联的卷积层和一个shortcut connections组成,将二者的输出值累加后,通过ReLU激活层得到残差块的输出。多个残差块可以串联起来,从而实现更深的网络。

残差块有两种设计方式,论文截图如下所示:左图针对较浅的网络,如ResNet-18/34;右图针对较深的网络,又称为”bottleneck” building block,如ResNet-50/101/152,使用此方式的目的就是为了降低参数数目。

论文中给出了5种不同层数的ResNet,论文截图如下所示:可见,ResNet-18/34是进行两层卷积的残差,ResNet-50/101/152是进行三层卷积的残差,分别对应于上图中的残差块的两种设计方式。ResNet-18/34对应的每个残差块的卷积kernel大小依次是3*3、3*3,ResNet-50/101/152对应的每个残差块的卷积kernel大小依次是1*1、3*3、1*1。

18、34层等数字是如何计算出来的:以34层为例,1个卷积(conv1)+3残差块*2个卷积(conv2_x)+4个残差块*2个卷积(conv3_x)+6个残差块*2个卷积(conv4_x)+3个残差块*2个卷积(conv5_x)+最后的1个全连接层=34。这里的层仅指卷积层和全连接层,其它类型的层并没有计算在内。

论文中给出了层数为34的ResNet网络结构,论文截图如下所示:左侧为VGG-19网络结构;中间为34层的普通网络结构;在此基础上,在层与层之间加入shortcut connections,就将普通网络转换为对应的ResNet网络,即右侧网络结构。与上表中ResNet-34一致。

右侧ResNet网络,曲线有实线和虚线两种。虚线表示恒等映射x输出的feature map数、width、height与残差F(x)的输出不一致时,x需要进行卷积kernel大小为1*1的运算操作,因为最终F(x)与x要执行”+”操作,即Eltwise操作。GoogLeNet中使用Concat操作。

假如输入图像大小为n*n,过滤器(filter)为f*f,padding为p,步长(stride)为s,则输出大小为:计算卷积层大小,如果商不是整数,向下取整,即floor函数;计算池化层大小,如果商不是整数,向上取整,即ceil函数。参考:https://blog.csdn.net/fengbingchun/article/details/80262495

在https://github.com/fengbingchun/Caffe_Test/tree/master/test_data/Net/ResNet 上整理了论文中ResNet对应的18、34、50、101、152的prototxt文件。

这里描述下ResNet-50架构:与上表中”50-layer”一致

(1).输入层(Input):图像大小为224*224*3。

(2).卷积层conv1+BatchNorm+Scale+ReLU:使用64个7*7的filter,stride为2,padding为3,输出为112*112*64,64个feature maps。

(3).卷积层conv2_x:输出为56*56*256,256个feature maps。

A.最大池化层:filter为3*3,stride为2,padding为0,输出为56*56*64,64个feature maps。

B.连续3个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为64、64、256,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为56*56*256,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(4).卷积层conv3_x:输出为28*28*512,512个feature maps。

连续4个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为128、128、512,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为28*28*512,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(5).卷积层conv4_x:输出为14*14*1024,1024个feature maps。

连续6个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为256、256、1024,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为14*14*1024,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(6).卷积层conv5_x:输出为7*7*2048,2048个feature maps。

连续3个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为512、512、2048,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为7*7*2048,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(7).平均池化层:filter为7*7,stride为1,padding为0,输出为1*1*2048,2048个feature maps。

(8).全连接层:有1000个神经元或输出1000个feature maps。

(9).输出层(Softmax):输出分类结果,看它究竟是1000个可能类别中的哪一个。

可视化结果如下图所示:

GitHub:https://github.com/fengbingchun/NN_Test


http://chatgpt.dhexx.cn/article/pD4XeD1B.shtml

相关文章

六、ResNet网络详细解析(超详细哦)

1、 RestNet网络 1.1、 RestNet网络结构 ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割&…

ResNet结构

文章目录 系列文章目录一、Residual net(残差网络)二、BatchNormalization(BN)三、ResNet结构 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开…

深度学习之图像分类(七)--ResNet网络结构

深度学习之图像分类(七)ResNet 网络结构 目录 深度学习之图像分类(七)ResNet 网络结构1. 前言2. Residual3. 网络配置4. 代码 本节学习ResNet网络结构,以及迁移学习入门,学习视频源于 Bilibili,…

[NCTF2019]SQLi 1regexp注入

[NCTF2019]SQLi&regexp注入 知识点: 无引号闭合,可以利用转义符 \ %00作为截断字符可以代替注释符#和-- - regexp注入可以配合 ^ 来爆破字符 解题: 打开题目得到: 可以看做插入语句: select * from users where…

buuctf-[NCTF2019]Keyboard

题目是这样子的: 下载完压缩包并解压后打开txt文件,发现是这样一串密文: 其实答案就在问题题目中,keyboard是键盘的意思,那结果显而易见了,o y i w u e u y u w u i i e不难发现,这些字母在键盘…

NCTF Crypto WriteUp

http://ctf.nuptzj.cn/challenges Crypto篇: 第一题、第二题、第七题和CG-CTF一样,不写了… 第三题: 说了全家桶,那就python跑吧… Flag:nctf{base64_base32_and_base16} 150分到手 第四题: 鬼知道进行…

[NCTF2019]Fake XML cookbook

BUUCTF 刷题 [NCTF2019]Fake XML cookbook BUUCTF 刷题前言一、[NCTF2019]Fake XML cookbook总结 前言 通过刷题拓宽自己的知识面 一、[NCTF2019]Fake XML cookbook (1)打开后如图所示 (2)尝试了一下万能密码,没啥用…

[NCTF2019]True XML cookbook

打开环境,看到熟悉的页面,和前面的[NCTF2019]Fake XML cookbook页面一样,应该也是XXE漏洞,这里再介绍一下XXE漏洞: XXE(XML External Entity Injection)全称为XML外部实体注入。 XML是什么? XML指可扩展…

[NCTF2019]Sore

[NCTF2019]Sore 附件: ciphertext.txt: nsfAIHFrMuLynuCApeEstxJOzniQuyBVfAChDEznppfAiEIDcyNFBsCjsLvGlDtqztuaHvHbCmuyGNsIMhGlDtbotCoDzDjhyBzHGfHGfoHsuhlssIMvwlixBHHGfDRjoCKrapNIwqNyuxIBACQhtMwCmMCfEBpsrzEuiLGBoMipTkxrznoHfAkqwzvxuzCzDbL…

[NCTF2019]babyRSA1

1.题目代码: # from Crypto.Util.number import * # from flag import flag # # def nextPrime(n): # n 2 if n & 1 else 1 # while not isPrime(n): # n 2 # return n # # p getPrime(1024) # q nextPrime(p) # n p * q # e 0x1000…

[NCTF 2018]Easy_Audit

1.打开环境,发现就是php套娃。 $_REQUEST:PHP的内置变量,是一个数组,保存传递的参数,它的特性是如果get,post一起传参,则会优先post传参,可以由此进行变量覆盖。 $_SERVER:PHP的内置变量,是一个…

第十届南京邮电大学网络攻防大赛(NCTF 2021)writeup

Web X1cT34m_API_System Author:wh1sper 题目描述:在API安全的新时代,安全圈迎来风云变幻。掀起巨浪的你?只手遮天的你?选择保护还是放弃你的曾经的伙伴?target: http://129.211.173.64:58082/ 附件链接&am…

[NCTF 2018]签到题

这题呢 看题目说签到题目 我们可以看出来 我们用F12看源代码 去搜索一下flag值在哪里 但是我们看了没有 我

NCTF2021——wp

文章目录 一、REHello せかいShadowbringer鲨鲨的秘密 二、MISC做题做累了来玩玩游戏吧Hex酱的秘密花园Hello File Format 一、RE Hello せかい ida反编译,flag明文给出 Shadowbringer 那两个函数是2次base64变异码表的编码,函数反过来换两次码表解码…

NCTF2022 calc题目复现

calc(环境变量注入getshell) 经典计算器题目,看着有点眼熟,没错,就是buu三月赛的一道题目。由于那时候web可能都算不上入门,所以也就没有复现。比赛时就网上看了看三月赛的wp,但是没有什么用&a…

[NCTF2019]SQLi

[NCTF2019]SQLi 进入页面,尝试万能密码登录: 觉得有waf,爆破一下 发现过滤了相当多的可用字符串 另外在robots.txt文件中有提示 再进入hint.txt 看到了黑名单,并且说要让查找admin的密码, 但是admin在黑名单中&am…

BUUCTF:[NCTF2019]phar matches everything

题目地址&#xff1a;https://buuoj.cn/challenges#[NCTF2019]phar%20matches%20everything 源码地址&#xff1a;https://github.com/swfangzhang/My-2019NCTF/tree/master/phar matches everything catchmime.php //catchmime.php <?php class Easytest{protected $tes…

2022NCTF的部分wp及复现

Misc Signin 程序设计实验作业,但是签到题(听zys说建议把终端字体调小一点并且只需要输入一串来自35年前的神秘秘籍 35年前的秘籍&#xff0c;就是魂斗罗的秘籍 上、上、下、下、左、右、左、右、B、A、B、A 就可以得到flag NCTF{VVe1c0m3_T0_NCTF_2022!!!} Web calc 命令…

NCTF2021 Ezsql

好兄弟&#x1f466;发来的题目&#xff0c;&#x1f474;当时没做出来&#xff0c;幸好环境还在 这道题测试一遍后&#xff0c;没什么收获&#xff0c;马后炮先扫描网站目录 发现源码&#xff0c;共有三个文件&#xff1a;config.php、DB.php、login.php 代码审计 config是…

2022 NCTF

MISC 炉边聚会 卡组代码是 Base64 编码的字节串&#xff0c;exp <?php $deckstring "AAEDAZoFKIwGngXIBrwFzgnQBfIHygf0CIgJkAiBogJ1gjMCPIHtgeeBeAD6AfyB7YHvgbgAAD4AO2B7wFkgnMCMwIga2B/QImgi6BJAIiAn2BOIJAAA"; #这是⼀个⾮常有趣的萨满卡组 $binary bas…