语义分割:像素级图像理解与U-Net架构详解
引言
语义分割是计算机视觉中的核心任务之一——它不只是“识别图片里有什么”,还要为每个像素标注专属语义标签,精准勾勒出物体的轮廓与空间分布。从医学影像的器官分割,到自动驾驶的道路感知,这项技术都是不可或缺的基础。
📂 所属阶段:第二阶段 — 深度学习视觉基础(CNN 篇)
🔗 相关章节:YOLO 家族实战 · 关键点检测 (Keypoints)
1. 语义分割基础概念
1.1 任务定义与相关视觉任务对比
语义分割的输入是一张高度为 H、宽度为 W、通道数为 C 的图像,输出则是一张高度为 H、宽度为 W、深度为 N 的分割图(N 为预定义类别数)。网络会为每个像素位置 (i,j) 分配一个类别标签,该标签来自集合 {1,2,...,N}。
它和其他视觉任务的核心区别如下:
1.2 核心应用场景
语义分割的落地场景非常广泛:
- 医疗影像:器官/肿瘤分割、病理切片分析
- 自动驾驶:道路/车道线/障碍物分割
- 遥感影像:土地利用分类、城市规划、环境监测
- 智慧农业:作物/病虫害监测、产量预估
- 机器人:环境理解、抓取定位
- 时尚/娱乐:服装分割、虚拟试衣、影视后期抠图
2. 经典语义分割架构
2.1 FCN:全卷积网络的开山之作
FCN(Fully Convolutional Networks, 2015)是语义分割的里程碑,首次实现了端到端的像素级预测。
核心贡献
- 全卷积设计:移除了分类网络的全连接层,替换为卷积层,支持任意尺寸输入;
- 反卷积上采样:使用转置卷积(Transposed Convolution)逐步恢复空间分辨率;
- 跳跃连接(Skip Connections):融合编码器的低层细节特征与解码器的高层语义特征,解决上采样后的细节丢失问题。
PyTorch 实现(FCN-8s)
2.2 U-Net:医学分割的“黄金标准”
U-Net(2015)最初为生物医学图像分割设计,因其对称的U型结构和高效的跳跃连接,成为分割领域最常用的基础架构之一。
核心特点
- 对称编码器-解码器:编码器下采样提取语义,解码器上采样恢复空间分辨率;
- 拼接式跳跃连接:直接将编码器特征与解码器特征拼接(Concatenate),而非FCN的逐元素相加,保留更多细节;
- 小数据集友好:即使在少量标注数据上也能取得不错效果。
PyTorch 实现
2.3 DeepLab:空洞卷积与多尺度建模
DeepLab系列(2016-2018)的核心是空洞卷积(Atrous Convolution),在不降低分辨率的前提下扩大感受野,同时引入ASPP(空洞空间金字塔池化)捕获多尺度上下文信息。
核心组件:ASPP
3. 语义分割损失函数
分割任务常面临类别不平衡(如医学影像中肿瘤像素占比极低),因此除了标准交叉熵,还有以下专用损失:
常用损失代码实现
4. 数据预处理与增强
分割任务的关键是图像与掩码必须同步变换,推荐使用 Albumentations 库(内置同步变换支持)。
专用数据增强策略
自定义数据集类
5. 模型训练与评估
核心训练流程
核心评估指标:mIoU
6. 现代分割架构趋势
- Transformer 赋能:SegFormer、Swin-Unet、TransUNet 等混合/纯Transformer架构,在长距离建模上更具优势;
- 实时分割:BiSeNet、DFANet、Fast-SCNN 等轻量架构,平衡速度与精度,适配移动端/自动驾驶场景;
- 大一统模型:如 Mask2Former,统一语义/实例/全景分割任务。
7. 总结
语义分割的核心是像素级分类,经典架构的演进围绕「恢复空间分辨率」和「融合多尺度信息」展开:
- FCN 开创全卷积与跳跃连接;
- U-Net 以对称U型结构成为通用基础;
- DeepLab 引入空洞卷积与ASPP解决多尺度问题。
🔗 扩展阅读

