共计 1782 个字符,预计需要花费 5 分钟才能阅读完成。
1. 背景与痛点
Cityscapes 是自动驾驶领域最著名的语义分割数据集之一,包含 50 个城市的高质量街景图像,精细标注了 30 类物体。其挑战性主要体现在:

- 高分辨率图像:2048×1024 像素,对显存和计算效率提出挑战
- 类别不平衡:道路、建筑等大物体占比远高于交通标志等小物体
- 复杂场景:遮挡、光照变化、动态物体等真实环境干扰
- 实时性要求:自动驾驶需要至少 10FPS 的推理速度
2. 技术选型对比
2.1 DeepLabv3+
- 优势:
- ASPP 模块有效捕获多尺度特征
- 编码器 - 解码器结构保留细节信息
-
开源实现成熟(官方 Torchvision 支持)
-
不足:
- 计算量较大(Xception 主干约 45G FLOPs)
- 对小物体分割效果一般
2.2 HRNet
- 优势:
- 并行多分辨率特征融合
- 保持高分辨率特征贯穿始终
-
在人体姿态估计等任务中验证有效
-
不足:
- 显存占用较高(HRNet-W48 需 >11GB 显存)
- 训练收敛较慢
2.3 Mask2Former
- 优势:
- 基于 Transformer 的通用分割框架
- 统一处理实例 / 语义 / 全景分割任务
-
在 COCO 等数据集上表现突出
-
不足:
- 需要大量训练数据
- 自注意力机制计算复杂度高
3. 核心实现细节
3.1 模型架构(以 DeepLabv3+ 为例)
- Backbone 选择:推荐使用 ResNet-101 或 MobileNetV3(轻量化)
- ASPP 模块 :包含(1,6,12,18) 四个空洞率的卷积 + 全局平均池化
- Decoder 设计:低层特征需先通过 1×1 卷积降维再与高层特征融合
3.2 损失函数
- 主损失:CrossEntropyLoss + 0.4×DiceLoss(缓解类别不平衡)
- 辅助损失:中层特征监督(提升训练稳定性)
- 注意:需对 ignore_label(255)做特殊处理
3.3 训练技巧
- 学习率:初始 3e-4,采用多项式衰减(power=0.9)
- 数据增强:
- 随机缩放(0.5-2.0 倍)
- 颜色抖动(亮度 0.2/ 对比度 0.2/ 饱和度 0.2)
- 随机水平翻转(p=0.5)
- OHEM:采样 hardest 25% 像素参与计算
4. 代码示例
# ASPP 模块实现示例
class ASPP(nn.Module):
def __init__(self, in_channels, out_channels=256):
super().__init__()
self.conv1 = nn.Conv2d(in_channels, out_channels, 1)
self.conv2 = nn.Conv2d(in_channels, out_channels, 3,
padding=6, dilation=6)
# 其他空洞卷积...
self.pool = nn.AdaptiveAvgPool2d(1)
self.project = nn.Sequential(nn.Conv2d(out_channels*5, out_channels, 1),
nn.BatchNorm2d(out_channels),
nn.ReLU())
def forward(self, x):
feat1 = self.conv1(x)
feat2 = self.conv2(x)
# 其他分支...
pooled = self.pool(x)
return self.project(torch.cat([feat1, feat2, ...], dim=1))
5. 性能测试
| 模型 | mIoU(val) | 推理速度(FPS) | 显存占用 |
|---|---|---|---|
| DeepLabv3+ (R101) | 82.1% | 8.2 | 9.3GB |
| HRNet-W48 | 83.6% | 6.5 | 11.1GB |
| Mask2Former | 84.9% | 4.8 | 13.7GB |
测试环境:RTX 3090, PyTorch 1.10, 输入尺寸 1024×512
6. 避坑指南
- 显存溢出:
- 使用梯度累积(accum_steps=2)
-
尝试 –sync-bn 参数
-
训练震荡:
- 检查学习率是否过大
-
添加 warmup(约 1000 迭代)
-
预测边缘锯齿:
- 在最后添加 CRF 后处理
- 测试时使用多尺度融合
7. 总结与展望
当前 SOTA 模型在 Cityscapes 上的 mIoU 已突破 85%,未来方向可能包括:
- 更高效的 Transformer 结构(如 Swin Transformer)
- 3D 点云与图像的融合感知
- 面向车载芯片的模型量化方案(如 TensorRT 部署)
建议实际项目根据硬件条件选择模型:追求精度选 Mask2Former,平衡型选 DeepLabv3+,边缘设备考虑 MobileNetV3+DeepLabv3 lite 版本。
正文完
发表至: 未分类
近一天内
