1. FCN-8s算法核心解析
FCN-8s(Fully Convolutional Network)是语义分割领域的里程碑式算法,其核心创新在于全卷积结构和多尺度特征融合。与传统的分类网络不同,FCN通过将全连接层替换为卷积层,实现了对任意尺寸输入图像的处理能力。这种结构转变使得网络能够输出与输入尺寸相对应的分割结果图。
在实际工程应用中,FCN-8s的"8s"表示最终特征图相对于输入图像的下采样倍数为8。这个设计权衡了计算效率和细节保留——过大的下采样倍数会导致空间信息丢失严重,而过小的倍数则会使计算量剧增。通过实验验证,8倍下采样在大多数场景下能取得较好的平衡。
关键理解:语义分割的本质是对每个像素进行分类,因此需要同时考虑全局语义信息和局部空间细节。这正是FCN系列算法要解决的核心矛盾。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ResNet101主干网络加载与改造
2.1 预训练模型加载
我们选择ResNet101作为主干网络主要基于三点考虑:
- 深层网络具有更强的特征提取能力
- ImageNet预训练权重提供了良好的初始化
- ResNet的残差结构缓解了梯度消失问题
python复制from torchvision import models
# 加载预训练ResNet101(不包含顶层全连接层)
pretrained_net = models.resnet101(pretrained=True)
pretrained_net = torch.nn.Sequential(*list(pretrained_net.children())[:-2])
这里特别需要注意:
- 去掉了最后的全局平均池化层和全连接层
- 保留了卷积特征提取部分
- 输出特征图的尺寸为输入图像的1/32
2.2 分层特征提取策略
ResNet101可以划分为5个stage(阶段),每个stage的输出分辨率如下:
| Stage | 下采样倍数 | 特征图尺寸 | 适用场景 |
|---|---|---|---|
| conv1 | 2 | 1/2 | 边缘纹理 |
| layer1 | 4 | 1/4 | 局部形状 |
| layer2 | 8 | 1/8 | 中等结构 |
| layer3 | 16 | 1/16 | 语义部件 |
| layer4 | 32 | 1/32 | 全局语义 |
FCN-8s会利用layer3(1/16)和layer4(1/32)的特征进行融合,这也是"8s"命名的由来——最终输出是1/8分辨率的上采样结果。
3. FCN-8s网络结构实现
3.1 网络架构设计
完整的FCN-8s包含三个关键组件:
- 主干特征
