JA EN ZH

语义分割入门 - 理解 U-Net 和 DeepLab 架构

· 9 分钟阅读

什么是语义分割

语义分割为图像中的每个像素分配一个类别标签,实现像素级别的场景理解。与目标检测的边界框不同,语义分割提供精确的物体轮廓。

任务定义: 输入 H×W×3 的 RGB 图像,输出 H×W 的标签图,每个像素值对应一个类别 ID。

与实例分割的区别: 语义分割不区分同类别的不同个体。例如,图像中的 3 个行人都标记为"人"类,不区分是哪个人。实例分割则为每个行人分配不同的 ID。

典型数据集:

  • PASCAL VOC: 20 类 + 背景,经典基准
  • Cityscapes: 城市驾驶场景,19 类,精细标注
  • ADE20K: 150 类,场景多样性最高
  • COCO-Stuff: 171 类,包含物体和材质

FCN - 去除全连接层的开创性架构

FCN (Fully Convolutional Network, 2015) 是第一个端到端的语义分割深度学习方法,奠定了后续所有方法的基础。

核心思想: 将 VGG-16 等分类网络的全连接层替换为 1×1 卷积层,使网络可以接受任意尺寸输入并输出对应尺寸的分割图。

上采样策略:

  • FCN-32s: 直接 32 倍上采样,结果粗糙
  • FCN-16s: 融合 pool4 特征后 16 倍上采样
  • FCN-8s: 融合 pool3 和 pool4 特征后 8 倍上采样,效果最好

贡献: 证明了预训练分类网络可以迁移到分割任务; 建立了编码器 (下采样) + 解码器 (上采样) 的基本范式; 跳跃连接融合多尺度特征的思想影响了后续所有架构。

局限性: 分割边界粗糙; 缺乏全局上下文信息; 上采样方式简单 (双线性插值)。

U-Net - 编码器-解码器结构与医学图像应用

U-Net (2015) 为医学图像分割设计,其对称的编码器-解码器结构和跳跃连接成为分割网络的经典范式。

架构特点:

  • 对称结构: 编码器和解码器层数相同,形成 U 形
  • 跳跃连接: 编码器每层的特征图直接拼接到解码器对应层,保留空间细节
  • 逐步上采样: 解码器逐步恢复分辨率,每步 2 倍上采样

为什么适合医学图像:

  • 医学数据集通常很小 (几十到几百张),U-Net 在小数据集上表现优异
  • 数据增强 (弹性变形、旋转、翻转) 有效扩充训练数据
  • 精确的边界分割对医学诊断至关重要

变体:

  • 3D U-Net: 处理 CT/MRI 体数据的 3D 版本
  • Attention U-Net: 注意力门控机制聚焦重要区域
  • U-Net++: 密集跳跃连接,多尺度特征融合
  • nnU-Net: 自配置框架,自动优化所有超参数

DeepLab 系列 - 空洞卷积与 CRF 实现高精度

DeepLab 系列通过空洞卷积 (Atrous/Dilated Convolution) 在不降低分辨率的情况下扩大感受野,是通用语义分割的标杆方法。

空洞卷积: 在标准卷积核的元素之间插入空洞 (零值),扩大感受野而不增加参数量。膨胀率 (dilation rate) r=2 时,3×3 核的有效感受野等同于 5×5。

ASPP (Atrous Spatial Pyramid Pooling): 并行使用多个不同膨胀率的空洞卷积,捕获多尺度上下文信息。典型配置: r=6, 12, 18 加上 1×1 卷积和全局平均池化。

DeepLab 版本演进:

  • DeepLabV1: 空洞卷积 + CRF 后处理
  • DeepLabV2: 引入 ASPP 多尺度特征
  • DeepLabV3: 改进 ASPP,加入全局上下文
  • DeepLabV3+: 加入解码器模块,改善边界精度。当前最常用版本

性能: DeepLabV3+ (ResNet-101 骨干) 在 Cityscapes 上 mIoU 约 82%,PASCAL VOC 上约 89%。

训练数据准备与标注方法

高质量的像素级标注是语义分割训练的基础,也是最耗时的环节。

标注工具:

  • CVAT: 开源,支持多边形、画笔、AI 辅助标注
  • Label Studio: 开源,支持多种标注类型和团队协作
  • Labelme: 轻量级 Python 工具,适合小规模标注
  • SAM 辅助: 使用 SAM 生成初始掩码,人工修正,大幅提高效率

标注格式:

  • 掩码图像: 与原图同尺寸的单通道图像,像素值为类别 ID
  • COCO 格式: JSON 文件记录多边形轮廓坐标
  • VOC 格式: 彩色 PNG 掩码,每种颜色对应一个类别

数据增强:

  • 几何变换: 随机裁剪、翻转、旋转、缩放
  • 颜色变换: 亮度、对比度、饱和度随机调整
  • 弹性变形: 医学图像中特别有效
  • Mixup/CutMix: 混合不同图像增加多样性

实现与部署 - 从 PyTorch 训练到边缘推理

从模型训练到生产部署的完整流程。

PyTorch 训练:

  • 使用 torchvision 或 segmentation_models_pytorch 库
  • 损失函数: CrossEntropyLoss (标准) 或 Dice Loss (类别不平衡时)
  • 优化器: AdamW, lr=1e-4, weight_decay=1e-4
  • 学习率调度: CosineAnnealingLR 或 PolynomialLR
  • 训练技巧: 混合精度 (AMP)、梯度累积、预训练骨干

模型导出:

  • ONNX: torch.onnx.export(model, dummy_input, 'model.onnx')
  • TorchScript: torch.jit.trace(model, dummy_input)
  • TensorRT: ONNX → TensorRT 引擎,NVIDIA GPU 最优推理

边缘部署:

  • 手机: MobileNetV3 骨干 + DeepLabV3 头,CoreML/TFLite 格式
  • 嵌入式: Jetson 上使用 TensorRT,实时分割
  • 浏览器: ONNX Runtime Web 或 TensorFlow.js

推理优化: 量化 (INT8) 可提速 2-4 倍; 知识蒸馏将大模型知识迁移到小模型; 输入分辨率降低 (如 512×512) 大幅提速。

Related Articles

目标检测概述 - YOLO、SSD 和 Faster R-CNN 架构与性能对比

全面解析目标检测技术,从 Faster R-CNN 到 YOLO 系列和 SSD,比较各架构的精度、速度和适用场景。

图像分割基础 - 理解区域划分原理与应用

系统介绍图像分割技术,从经典阈值法到深度学习方法 (U-Net、DeepLab、SAM),涵盖评估指标和浏览器端实现。

图像标注工具对比 - CVAT、Label Studio 与 Roboflow 的选择

比较主流图像标注工具的功能、效率和成本,帮助选择最适合机器学习项目的标注方案。

背景去除技术详解 - 分割与抠图处理的工作原理

详解图像背景去除(背景透明化)所使用的技术。比较语义分割、基于三值图的 Alpha 抠图和边缘检测方法的原理与精度差异。

医学图像处理基础 - DICOM、CT 和 MRI 数据与技术

系统介绍医学图像处理,涵盖 DICOM 标准、CT/MRI 成像原理、窗宽窗位调节、分割技术以及临床 AI 应用。

图像自动标注技术 - 目标检测、场景识别与字幕生成

详解图像自动标注技术,包括目标检测、场景识别和图像字幕生成的原理与实现方法。

Related Terms