ResNet-50网络理解

本文深入探讨ResNet-50深度残差网络结构,解释其如何解决深度网络训练难题,包括卷积、特征图降维及恢复过程,以及如何通过Bottleneck模块提升分类性能。

本文主要针对ResNet-50对深度残差网络进行一个理解和分析
ResNet已经被广泛运用于各种特征提取应用中,当深度学习网络层数越深时,理论上表达能力会更强,但是CNN网络达到一定的深度后,再加深,分类性能不会提高,而是会导致网络收敛更缓慢,准确率也随着降低,即使把数据集增大,解决过拟合的问题,分类性能和准确度也不会提高。Kaiming大神等人发现残差网络能够解决这一问题。这里首先放上一张ResNet的各种网络结构图(图1):
在这里插入图片描述
重点说明一下ResNet-50,可以看到图1中所示,ResNet-50经过了4个Block,每一个Block中分别有3,4,6,3个Bottleneck,这里zyyupup给出了一张自己制作的网络图,我觉得这张图足够解释清楚ResNet-50(图2):

【评论中很多朋友说画错了,这张图确实是有问题哈,我当初写这个博是为了帮助自己理解ResNet-50和卷积操作的,俺就不在图片作者zyyupup的基础上再改了,大家懂这个过程就行~】

在这里插入图片描述
现在来看一下这个网络图,

  1. 首先输入的图片是3×224×224,也就是3个通道,图片尺寸为224×224;
  2. 进入第一个卷积层,卷积核大小为7*7,卷积核个数为64,步长为2,padding为3;所以输出应该是(224-7+2×3)/2+1=112.5,向下取整得到112,所以输出是 64 ×112 ×112;
  3. maxpool层会改变维度,但是不会影响个数

到此即将进入第一个实线方框中,图1中结构所示,第一个实线方框中本来应该有3个Bottleneck,图2作者只画出两个,其实每一个Bottleneck里面包含两种Block,第一种是Conv Block,一种是Identity Block。
首先说说Conv Block,也就是第一个实线方框中虚线连接的三层:
在这里插入图片描述
可以看到,总体的思路是先通过1×1的卷积对特征图像进行降维,做一次3×3的卷积操作,最后再通过1×1卷积恢复维度,后面跟着BN和ReLU层;虚线处用256个1×1的卷积网络,将maxpool的输出降维到255×56×56。
再说Identity Block
在这里插入图片描述
也就是实线连接所示,不经过卷积网络降维,直接将输入加到最后的1×1卷积输出上。

经过后面的Block,经过平均池化和全连接,用softmax实现回归。

对卷积、特征图、通道等理解可以参考:
https://blog.youkuaiyun.com/weixin_43430243/article/details/89512069

<think>好的,我现在需要详细解释3D ResNet-50网络结构。首先,我需要回忆一下标准的ResNet-50的结构,然后考虑如何将其扩展到3D。ResNet-50的核心是残差块,每个块包含多个卷积层和跳跃连接。在2D情况下,卷积核是二维的,处理图像数据。而3D ResNet需要处理视频或体积数据,因此卷积核应该扩展为3D,比如3x3x3的核。 接下来,我需要确定3D ResNet-50的各个层是如何构建的。通常,ResNet-50包含初始的卷积层,然后是四个阶段(stage),每个阶段有不同数量的残差块。例如,第一个阶段可能有3个残差块,第二个阶段4个,第三个6个,第四个3个,总共有16个残差块,加上初始的卷积层和最后的全连接层,总层数大约是50层左右。但具体结构可能因实现而异,需要确认每个阶段的残差块数量。 然后,残差块的结构在3D情况下是否需要调整?标准的ResNet-50使用Bottleneck结构,即1x1卷积降维,接着3x3卷积,再1x1升维。在3D中,这个结构应该保持不变,只是卷积变为3D,例如第一个1x1x1卷积,然后是3x3x3,最后再1x1x1。跳跃连接如果维度不匹配的话,可能需要1x1x1的卷积来进行调整。 另外,输入数据的尺寸和处理也需要考虑。3D ResNet的输入可能是视频片段,比如形状为C×T×H×W,其中T是时间维度。初始卷积层可能使用较大的核,比如7x7x7,步长2x2x2,进行下采样。池化层同样需要3D的最大池化。 每个阶段之间的过渡部分可能会有步长为2的卷积来减少空间维度,同时增加通道数。例如,每个阶段的第一个残差块可能会在时间、高度和宽度维度上进行下采样。 还需要注意,3D卷积的计算量比2D大很多,所以在设计时可能会调整通道数或使用更小的核来平衡计算资源。此外,激活函数通常还是ReLU,批量归一化也应该是3D的版本。 最后,我需要验证这些信息是否正确。可能参考现有的论文或开源实现,比如在视频分类任务中使用的3D ResNet结构,确认各层的参数和配置是否符合。如果有不确定的地方,需要指出可能的变体或不同实现之间的差异。</think>### 3D ResNet-50 网络架构详解 3D ResNet-50 是基于经典 ResNet-50 的扩展版本,专为处理视频或三维医学影像等时空数据设计。其核心思想是将二维卷积扩展为三维卷积,并在残差块中引入时间维度的特征提取。 #### 1. 整体结构 网络包含 **输入层、4个阶段(Stage)和输出层**,总层数约50层: 1. **输入层**:处理三维输入(如 $C \times T \times H \times W$,其中 $T$ 为时间或深度维度) 2. **卷积层**:使用 $7 \times 7 \times 7$ 卷积核,步长 $2 \times 2 \times 2$,提取初级时空特征 3. **最大池化**:$3 \times 3 \times 3$ 核,步长 $2 \times 2 \times 2$,进行下采样 4. **残差阶段**:4个阶段分别包含 $3, 4, 6, 3$ 个残差块,逐步扩大通道数 5. **全局平均池化 + 全连接层**:输出分类结果 $$ \text{总参数量} \approx 23.5\text{百万} $$ #### 2. 3D残差块设计 每个残差块采用 **Bottleneck 结构**: 1. **降维层**:$1 \times 1 \times 1$ 卷积,减少通道数 2. **特征提取层**:$3 \times 3 \times 3$ 卷积,时空特征融合 3. **升维层**:$1 \times 1 \times 1$ 卷积,恢复通道数 4. **跳跃连接**:当输入输出维度不匹配时,使用 $1 \times 1 \times 1$ 卷积调整 ```python class Bottleneck3D(nn.Module): def __init__(self, in_channels, out_channels, stride=1): super().__init__() self.conv1 = nn.Conv3d(in_channels, out_channels//4, kernel_size=1) self.conv2 = nn.Conv3d(out_channels//4, out_channels//4, kernel_size=3, stride=stride, padding=1) self.conv3 = nn.Conv3d(out_channels//4, out_channels, kernel_size=1) self.shortcut = nn.Sequential() if stride != 1 or in_channels != out_channels: self.shortcut = nn.Sequential( nn.Conv3d(in_channels, out_channels, kernel_size=1, stride=stride) ) def forward(self, x): out = F.relu(self.conv1(x)) out = F.relu(self.conv2(out)) out = self.conv3(out) out += self.shortcut(x) return F.relu(out) ``` #### 3. 关键参数配置 | 阶段 | 残差块数量 | 输出通道 | 特征图尺寸 | |------|------------|---------|------------| | 输入 | - | 3 | 64×224×224 | | Conv1 | 1 | 64 | 32×112×112 | | Stage1 | 3 | 256 | 32×112×112 | | Stage2 | 4 | 512 | 16×56×56 | | Stage3 | 6 | 1024 | 8×28×28 | | Stage4 | 3 | 2048 | 4×14×14 | #### 4. 技术特点 1. **时空特征融合**:通过3D卷积同时捕捉空间和时间维度关联 2. **参数效率**:Bottleneck结构平衡计算量与特征表达能力 3. **梯度优化**:跳跃连接缓解梯度消失问题,支持训练超100层网络[^1] 4. **多尺度特征**:通过阶段式下采样获取不同粒度的时空特征 #### 5. 应用场景 - 视频动作识别(如Kinetics数据集) - 医学影像分析(CT/MRI三维重建) - 时空行为检测 - 视频内容理解
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值