3.5 KiB
3.5 KiB
DeepLabV3+ — 语义分割模型
概述
DeepLabV3+ 是 Google 团队提出的经典语义分割模型,采用 Encoder-Decoder 架构 并结合 空洞卷积(Atrous Convolution),在保持高分辨率特征图的同时扩大感受野。
核心特性
| 特性 | 说明 |
|---|---|
| 模型类型 | 语义分割(Semantic Segmentation) |
| 骨干网络 | MobileNetV3(轻量级) |
| 输入形式 | 单张 RGB 图像 |
| 输出形式 | 逐像素类别标签 |
| 支持类别数 | 21(含背景) |
模型架构
graph LR
A["输入图像"] --> B["MobileNetV3 骨干"]
B --> C["ASPP 空洞空间金字塔池化"]
C --> D["Decoder 上采样"]
D --> E["逐像素分类"]
E --> F["分割结果图"]
- ASPP(Atrous Spatial Pyramid Pooling) — 多尺度空洞卷积并行提取特征,捕获不同尺度下的语义信息
- Decoder 模块 — 融合低层和高层特征,逐步恢复空间分辨率
- 输出 — 每个像素分配一个类别标签(0~20,共21类)
目标应用场景
- 自动驾驶 — 道路、车辆、行人区域分割
- 工业检测 — 缺陷区域定位与分割
- 医学影像分析 — 器官 / 病灶区域分割
- 遥感图像分析 — 土地利用分类
参考来源
- 论文:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
- 框架:PyTorch
输入 / 输出规格
模型接口
| 方向 | 名称 | 数据类型 | 维度 | 尺寸 | 说明 |
|---|---|---|---|---|---|
| 输入 | INPUT:0 | UINT8 | 4D | 1 × 1 × 512 × 1536 | 输入图像 (H×W=512×1536) |
| 输出 | OUTPUT:0 | FP32 | 4D | 1 × 21 × 512 × 512 | 各类别得分图 (21 类) |
说明:输入为单通道灰度图,尺寸 1536×512;输出为 21 通道特征图(对应 21 个语义类别),空间尺寸 512×512。
后处理流程
flowchart TD
A["模型输出: 21通道得分图"] --> B["Softmax 归一化"]
B --> C["逐像素取最大概率类别"]
C --> D["双线性上采样至原图尺寸"]
D --> E["类别索引 → 颜色映射"]
E --> F["输出彩色分割结果"]
步骤说明
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | Softmax | 将每个像素在 21 个通道上的得分转为概率分布 |
| 2 | Argmax | 取每个像素上概率最大的类别索引作为预测标签 |
| 3 | 尺寸还原 | 通过双线性插值上采样,恢复至原始输入图像尺寸 |
| 4 | 标签映射 | 将类别索引映射为预定义的 RGB 颜色,生成可视化结果 |
颜色映射示例(VOC 数据集)
| 类别 | 索引 | RGB 颜色 |
|---|---|---|
| 背景 | 0 | (0, 0, 0) |
| 飞机 | 1 | (128, 0, 0) |
| 自行车 | 2 | (0, 128, 0) |
| 人 | 15 | (128, 64, 128) |
| ... | ... | ... |
执行与性能
运行方式
python deeplabv3.py
性能指标
| 指标 | 数值 |
|---|---|
| 推理平台 | 边缘板卡(NPU) |
| 推理时间 | ~365.7 ms |
| 输出 FE 均值误差 | 0.006993 |
| 输出 FE 最大误差 | 0.100305 |
推理时间包含模型前向传播,不包括前后处理。
输出示例
分割结果
图中不同颜色区域代表不同的语义类别。结果图保存路径:
../resource/deeplab_mobilnet_v3/result.jpg
