resnet18简易图
时间: 2023-11-02 09:06:12 浏览: 159
ResNet-18网络结构图示如下:
输入 -> 卷积层 -> 残差块(2个卷积层) -> 残差块(2个卷积层) -> 残差块(2个卷积层) -> 残差块(2个卷积层) -> 全局平均池化层 -> 全连接层 -> 输出
其中,每个残差块包含两个卷积层,每个卷积层后面都跟着一个Batch Normalization层和ReLU激活函数。全局平均池化层将每个特征图的所有元素求平均,得到一个特征向量,最后通过全连接层输出分类结果。
相关问题
resnet50简易网络结构示意图
### ResNet50简易网络结构概述
ResNet50是一种具有50层深度的卷积神经网络(CNN),其核心在于引入了残差学习框架,使得深层网络能够有效训练。此架构中的主要组件包括多个由两到三个卷积层组成的瓶颈模块以及恒等映射路径,这些设计有助于缓解梯度消失问题并促进更深层次的信息传递。
#### 主要组成部分
- **输入层**:接受大小为\(224 \times 224\)像素的RGB图像作为输入。
- **初始卷积层(Conv1)**:应用7×7滤波器执行第一次特征提取操作,步幅(stride)=2,并采用最大池化(Max Pooling)进一步降低空间维度[^1]。
```python
import torch.nn as nn
class InitialConv(nn.Module):
def __init__(self, input_channels=3, output_channels=64):
super().__init__()
self.conv = nn.Conv2d(input_channels, output_channels, kernel_size=7, stride=2, padding=3)
self.bn = nn.BatchNorm2d(output_channels)
self.relu = nn.ReLU(inplace=True)
self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
def forward(self, x):
out = self.conv(x)
out = self.bn(out)
out = self.relu(out)
out = self.maxpool(out)
return out
```
- **四个阶段的残差块(Stage 2 to Stage 5)**:
- 每个阶段包含若干个残差单元(Residual Units),其中每个单元内部又分为两种类型的连接方式:“短接”或“直通”。对于相同尺寸的空间分辨率下的连续层之间采取简单的加法组合;当遇到下采样(downsample)情况时,则利用额外的线性投影变换来匹配不同数量级的数据流宽度[^2]。
- Stages 2至5分别对应着不同的输出通道数增长模式,在整个过程中逐渐增加感受野范围的同时保持计算复杂性的可控性。
- **全局平均池化(Global Average Pooling, GAP)** 和全连接层(Fully Connected Layer, FC)用于最终分类预测前的最后一轮降维处理。
```mermaid
graph TB;
subgraph "ResNet50"
A[Input Image (224x224)] --> B{Initial Conv}
B --> C["Stage 2\n(3×Bottleneck Blocks)\nOutput Channels: 256"]
C --> D["Stage 3\n(4×Bottleneck Blocks)\nOutput Channels: 512"]
D --> E["Stage 4\n(6×Bottleneck Blocks)\nOutput Channels: 1024"]
E --> F["Stage 5\n(3×Bottleneck Blocks)\nOutput Channels: 2048"]
F --> G{"Global Avg Pool"}
G --> H[FC Layers]
end
```
resnet模型原理图
### ResNet模型架构原理
ResNet(Residual Network,残差网络)是一种经典的深度卷积神经网络,主要目的是解决深度神经网络中存在的梯度消失和模型退化问题。传统的深度神经网络在层数不断增加的情况下,会出现训练难度增大、性能下降的现象[^4]。然而,ResNet通过引入残差学习机制成功缓解了这一问题。
#### 深度残差学习框架
ResNet的核心思想在于引入**残差块**的概念。假设目标函数为 \(H(x)\),传统方法试图直接拟合这个复杂的映射关系;而ResNet则尝试去学习一个残差函数 \(F(x)=H(x)-x\),并通过将输入 \(x\) 加回输出的方式完成最终的映射:
\[
y = F(x) + x
\]
其中,\(F(x)\) 是由若干卷积层组成的子网络负责学习的部分,而 \(x\) 则表示原始输入数据或特征图。这种设计使得网络更容易优化,并允许更深的网络结构得以有效训练[^1]。
#### 残差结构 (Residual Blocks)
残差块是构成ResNet的基础单元,通常包含两个或三个卷积操作以及Batch Normalization 和 ReLU激活函数。对于简单的两层残差块而言,其计算过程可以描述如下:
1. 输入经过第一个卷积核处理;
2. 应用 Batch Normalization 及 ReLU 非线性变换;
3. 继续第二个卷积核运算后再做一次 BN 处理;
4. 将初始输入与当前输出相加形成最终结果;
5. 对累加后的值再次施加ReLU作为本阶段结束标志。
如果维度不匹配,则需采用合适的策略调整尺寸大小以便顺利完成addition操作[^2]。
以下是基于PyTorch实现的一个基本形式化的代码片段展示如何定义这样的模块:
```python
import torch.nn as nn
class BasicBlock(nn.Module):
expansion = 1
def __init__(self, in_channels, out_channels, stride=1, downsample=None):
super(BasicBlock, self).__init__()
# First convolutional layer with batch normalization and activation function.
self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False)
self.bn1 = nn.BatchNorm2d(out_channels)
self.relu = nn.ReLU(inplace=True)
# Second convolutional layer followed by another set of batch norm & relu ops.
self.conv2 = nn.Conv2d(out_channels, out_channels * self.expansion, kernel_size=3, stride=1, padding=1, bias=False)
self.bn2 = nn.BatchNorm2d(out_channels * self.expansion)
# Optional downsampling operation when dimensions don't match between input/output tensors.
self.downsample = downsample
def forward(self, x):
identity = x
out = self.conv1(x)
out = self.bn1(out)
out = self.relu(out)
out = self.conv2(out)
out = self.bn2(out)
if self.downsample is not None:
identity = self.downsample(x)
out += identity
out = self.relu(out)
return out
```
#### 整体模型结构
完整的ResNet体系可以根据所需层次数量的不同分为多个变种版本,比如ResNet-18、ResNet-34、ResNet-50等等。这些差异体现在堆叠了多少个基础block或者bottleneck block之上。例如,在ResNet-18中只用了最简易型别的basic blocks重复排列组合而成;而在更大规模像ResNet-50里边还额外加入了更多复杂性的瓶颈blocks(bottle necks)[^2]。
下图为典型的ResNet-18 架构示意图形表征方式之一:

此图片展示了各部分之间的连接逻辑关系,包括但不限于convolution layers, max pooling steps alongside fully connected final classification stage at the end.
---
### 结论
综上所述,ResNet凭借独特的残差连接技术克服了许多阻碍深层CNN发展的障碍因素,成为计算机视觉领域极具影响力的研究成果之一。它不仅提高了模型表现力上限同时也降低了实际部署过程中遇到的技术门槛。
阅读全文
相关推荐














