Resnet 网络结构的理解以及论文

ResNet是一种在ImageNet竞赛中表现出色的深度学习网络结构。它通过引入残差学习和快捷恒等映射来解决梯度消失问题,允许训练更深的网络。本篇详细介绍了ResNet的不同变体、残差学习的概念及其实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Resnet是ImageNet竞赛中分类问题比较好的网络,它有多种结构形式,有Resnet-34,Resnet-50, Resnet-101, Resnet-152.
这里写图片描述
github上的caffe网络结构的prototxt地址:https://github.com/antingshen/resnet-protofiles

先说一下残差表示:VLAD是一种通过关于字典的残差向量进行编码的表示形式。

残差学习:H(x) 作为几个堆叠层(不必是整个网络)要拟合的基础映射,x表示这些层中第一层的输入。假设多个非线性层可以渐近地近似复杂函数,它等价于假设它们可以渐近地近似残差函数,即H(x)−x(假设输入输出是相同维度)。因此,我们明确让这些层近似参数函数 F(x):=H(x)−x,而不是期望堆叠层近似H(x)。因此原始函数变为F(x)+x。

快捷恒等映射:我们每隔几个堆叠层采用残差学习。构建块如图2所示。在本文中我们考虑构建块正式定义为:

y=F(x,Wi)+x (1)
x和y是考虑的层的输入和输出向量。函数F(x,Wi)表示要学习的残差映射。图2中的例子有两层,F=W2σ(W1x)中σ表示ReLU,为了简化写法忽略偏置项。F+x操作通过快捷连接和各个元素相加来执行。在相加之后我们采纳了第二种非线性(即σ(y))。

公式(1)中的快捷连接既没有引入外部参数又没有增加计算复杂度。这不仅在实践中有吸引力,而且在简单网络和残差网络的比较中也很重要。我们可以公平地比较同时具有相同数量的参数,相同深度,宽度和计算成本的简单/残差网络(除了不可忽略的元素加法之外)。

方程(1)中x和F的维度必须是相等的。如果不是这种情况(例如,当更改输入/输出通道时),我们可以通过快捷连接执行线性投影Ws来匹配维度:

y=F(x,Wi)+Wsx.
我们也可以使用方程(1)中的方阵Ws。但是我们将通过实验表明,恒等映射足以解决退化问题,并且是合算的,因此Ws仅在匹配维度时使用。

残差函数F的形式是可变的。本文中的实验包括有两层或三层的函数F,同时可能有更多的层。但如果F只有一层,方程(1)类似于线性层:y=W1x+x,我们没有看到优势。
这里写图片描述

Resnet是每隔二层或三层进行的相加求下一步的输入,这是与VGG网络不同的,VGG主要是直接进行卷积,送入到下一层,同时每一层的核大小都是固定的,Resnet里面也采用了。Resnet网络结构的设计遵循两种设计规则:(1)对于相同的输出特征图尺寸,层具有相同数量的滤波器;(2)如果特征图大小减半,则滤波器的数量加倍,以便保持每一层的时间复杂度。

使用快捷连接要保证输入和输出具有相同的维度。当我们在进行两种维度的跨越进行连接的时候,有两种方式可以进行,第一种额外的进行填充零输入,增加维度;第二种方式:用1x1卷积核,步长为2。

这里有对Resnet论文Deep Residual Learning for Image Recognition的翻译,大家可以看看。
原文:https://arxiv.org/pdf/1512.03385.pdf
翻译:https://blog.youkuaiyun.com/Quincuntial/article/details/77263562?locationNum=6
还有可以看看的:https://blog.youkuaiyun.com/u011534057/article/details/51819968

<think>嗯,用户想详细了解ResNet网络结构,特别是关于深度学习的架构详解。首先,我需要回忆一下ResNet的背景和核心思想。ResNet主要是为了解决深度网络中的梯度消失和退化问题,通过残差学习来实现的。记得残差块是它的核心组件,包含跳跃连接,这样梯度可以直接回传,避免在深层网络中消失。 接下来,我需要整理ResNet的整体架构。ResNet有不同深度的版本,比如18层、34层、50层、101层和152层。这些不同深度的模型在结构上有何区别呢?特别是残差单元的设计,比如对于较浅的网络(如ResNet34)使用的是两个3x3卷积层的堆叠,而更深的网络(如ResNet50)则采用了Bottleneck结构,即1x1、3x3、1x1的卷积组合,这样可以减少参数数量。 然后要注意的是,每个conv_x块中的第一个残差单元可能需要调整输入输出的维度,这时候会使用虚线连接,即1x1卷积进行升维或降维。另外,BN层的位置也很重要,ResNet中BN层是在卷积层之后、ReLU之前,而且卷积层不使用偏置项,这有助于稳定训练过程。 用户提供的引用中有提到不同结构的实验结果,比如图5的结构优于原ResNet,可能是因为BN作为预激活的正则化效果。不过ResNet的标准结构还是需要按照原始论文来阐述,同时可以提到这些优化的可能性。 还要考虑用户可能关心的问题,比如ResNet如何解决梯度消失,残差块的具体设计,不同深度的模型差异,以及实际应用中的实现细节。需要确保回答覆盖这些点,并且结构清晰,分点说明。 最后,生成的相关问题要围绕用户可能进一步想了解的内容,比如与VGG的比较、梯度消失的具体解决机制、Bottleneck的作用、实际应用场景以及后续的改进模型如ResNeXt。这样能够帮助用户更全面地理解ResNet及其应用。</think>### ResNet网络结构详解 #### 一、背景与核心思想 ResNet(残差网络)由何恺明团队于2015年提出,解决了深度神经网络中梯度消失和网络退化问题。核心创新是引入**残差学习框架**,通过跳跃连接(Shortcut Connection)将输入直接传递到深层,使网络可以学习输入与输出的残差$F(x) = H(x) - x$,而非直接学习$H(x)$[^4]。 #### 二、整体架构组成 ResNet包含5个主要阶段(conv1~conv5_x),不同深度的模型通过调整残差单元数量实现: 1. **前置层** $$ \text{conv1: } 7×7\text{卷积,步长2 → 3×3最大池化,步长2} $$ $$ \text{输出尺寸:} 112×112 $$ 2. **残差阶段** | 网络深度 | conv2_x | conv3_x | conv4_x | conv5_x | |----------|---------|---------|---------|---------| | ResNet18 | 2层×2 | 2层×2 | 2层×2 | 2层×2 | | ResNet50 | 3层×3 | 4层×4 | 6层×6 | 3层×3 | #### 三、残差单元设计 1. **基础单元(ResNet18/34)** $$ \text{结构:} 3×3\text{Conv→BN→ReLU→3×3Conv→BN} $$ $$ \text{跳跃连接:} \text{恒等映射或1×1卷积(维度匹配)} $$ ```python # 残差单元示例(实线连接) class BasicBlock(nn.Module): def __init__(self, in_channels, out_channels, stride=1): super().__init__() self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1) self.bn1 = nn.BatchNorm2d(out_channels) self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1) self.bn2 = nn.BatchNorm2d(out_channels) self.shortcut = nn.Identity() if in_channels == out_channels else \ nn.Sequential(nn.Conv2d(in_channels, out_channels, 1, stride=stride)) ``` 2. **Bottleneck单元(ResNet50/101/152)** $$ \text{结构:} 1×1\text{Conv(降维)→3×3Conv→1×1Conv(升维)} $$ $$ \text{参数量减少约} \frac{1}{4} \text{(相比两个3×3卷积)} $$ ![ResNet结构对比图][^3] #### 四、关键技术细节 1. **维度匹配规则** - 当输入输出通道数不同时,使用1×1卷积调整维度(虚线连接) - 卷积步长计算: $$ W_{out} = \left\lfloor \frac{W_{in} + 2P - F}{S} \right\rfloor + 1 $$ (F为卷积核大小,S为步长,P为填充)[^3] 2. **标准化层配置** - BN层置于卷积层之后、激活函数之前 - 所有卷积层**不使用偏置项**(由BN层补偿)[^3] #### 五、性能优势分析 1. 梯度传播效率提升:跳跃连接使梯度可直达浅层,缓解梯度消失[^4] 2. 网络深度突破:ResNet152比VGG19深8倍但参数更少 3. 特征复用能力:残差结构保留原始信息,避免特征退化[^2]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值