当前位置: 首页 > news >正文

【论文解读】DDRNet:深度双分辨率网络在实时语义分割中的结构与原理全面剖析

【论文解读】DDRNet:深度双分辨率网络在实时语义分割中的结构与原理全面剖析

原论文Deep Dual-Resolution Networks for Real-Time and Accurate Semantic Segmentation of Road Scenes(Hong et al., 2021)([arXiv][1])
博客 / Author:一颗白菜2021

文章目录

  1. 快速概览
  2. 研究背景与动机
  3. DDRNet 整体结构介绍
  4. 核心模块详解
    • 双分辨率并行分支设定
    • 多级双向融合(Bilateral Fusion)
    • DAPPM:Deep Aggregation Pyramid Pooling Module
  5. 架构演进与网络版本(-slim / DDRNet-23 / DDRNet-39)
  6. 实验效果:精度 vs 实时性能对比
  7. 深入原理:为什么这种设计有效?
  8. 代码实现与复现建议(参考 Github 与超参配置)
  9. 工程落地建议:FP16、BatchNorm 稳定、小目标表现优化
  10. 可视化方式与调试思路
  11. 优缺点剖析与潜在扩展方向

1. 快速概览

在这里插入图片描述

  • 结构:DDRNet 采用两个并行的网络分支――一个保留高分辨率细节,一个处理低分辨率上下文信息,并通过多次双向融合模块互相传递信息;
  • 关键模块:DAPPM 被引入低分支,用于多尺度上下文融合;
  • 成果:Cityscapes 测试集上 DDRNet-23-slim 达到 77.4% mIoU @ 102 FPS;CamVid 上为 74.7% mIoU @ 230 FPS;在实时语义分割中获得极佳的精度与速度平衡。

2. 为什么要做 DDRNet?

在这里插入图片描述

  • 自动驾驶等任务对语义分割提出严苛要求:既要保证边界与小目标细节不丢失,也要保证实时推理速度
  • 传统高精度方法(如 DeepLab)速度慢,实时性能差;而轻量实时方法(如 BiSeNet)精度不高;
  • DDRNet 通过“双分辨率并行 + 多融合 + 上下文增强”实现双重目标:精度与速度兼得。

3. DDRNet 整体结构介绍

网络结构 ----------------------------------------------------------网络结构-------------------------------------------------------------

在这里插入图片描述 Deep Aggregation Pyramid Pooling Module.
图注:图:DDRNet 整体架构(高分支 + 低分支 + 多次 Bilateral Fusion + DAPPM)。

从图中可以看到:

  • 输入图像经过浅层特征抽取后被“劈叉”到两个分支;
  • 高分辨率分支保持较大空间分辨率,在多个阶段保留图像细节;
  • 低分辨率分支逐步抽象、减小空间分辨率,但提升感受野与语义表达能力;
  • 分支之间在多个阶段通过 双向融合(Bilateral Fusion) 机制互相补充细节与语义;
  • 在低分支尾部加入 DAPPM 模块 进行多尺度上下文融合;
  • 最后,融合后的特征进入 segmentation head 做 dense prediction。

4. 核心模块详解

在这里插入图片描述

4.1 双分辨率并行分支架构

  • 高分辨率分支(detail branch)保持输入的相对高空间分辨率(例如原始尺寸的 1/4),用于精细边界和小目标表达;
  • 低分辨率分支(semantic branch)通过下采样构建大感受野,用于语义理解;
  • 两支都由 Residual Basic Blocks / Bottleneck Blocks 组成,深度与通道数根据版本不同略有差异。

4.2 多级双向融合(Bilateral Fusion)

  • 在多个阶段,两支网络进行特征交换:

    • detail-to-semantic:高分辨率特征下采样并加入低分支;
    • semantic-to-detail:低分辨率特征上采样后加入高分支;
  • 这种机制允许细节与语义在多个层级互补融合,大幅提升预测精度,尤其在边界和小物体上。

4.3 DAPPM(Deep Aggregation Pyramid Pooling Module)

  • 被加在低分辨率分支的尾部,用于多尺度上下文融合;
  • 通过多个不同尺度(大小)的 pooling 提取语义,并融合,再送到 segmentation head;
  • 有效扩大感受野、融合背景/物体级语义,提升整体 mIoU。

5. 网络版本演进

  • DDRNet-23-slim:轻量版本,速度最快,适合资源受限场景(77.4% mIoU @ 102FPS);
  • DDRNet-23:通用版本,精度更高(约 79.4% mIoU);
  • DDRNet-39:更深结构,精度最高(最高达 80.4–82.4% mIoU 使用 test-time augmentation)。

6. 实验结果对比(Cityscapes / CamVid)

  • Cityscapes:DDRNet-23-slim 的 mIoU 77.4%,推理速度 102 FPS;DDRNet-39 + 多尺度/翻转增强达 ~80–82% mIoU,仍保持高速。
  • CamVid:DDRNet-23-slim 达到 74.7% mIoU, 推理速度高达 230 FPS。

(如你喜欢,博客后续可加入与 BiSeNet / DeepLab 的对比表格)


7. 为什么这种结构有效?

  • 并行保分 & 下语义:高分支维护细节,低分支捕捉上下文,兼顾效率与精度;
  • 多层次双向融合强化信息交互:让 detail branch 可以“感知”全局语义,semantic branch可以“感知”空间细节;
  • DAPPM 提供上下文补充与尺度多样性:在低分支末端补充 pyramid pooling 机制,有效增强高语义推理能力;
  • 多个版本满足不同部署需求:slim/23/39 灵活适配实时或精度导向场景;
  • 对工程友好:结构清晰、双分支设计易扩展,社区复现容易(GitHub 初始仓库已有 443 stars)

8. 复现建议与代码框架指南

GitHub 官方代码ydhongHIT/DDRNet,包含预训练模型 & cityscapes configs。

建议实现结构

backbone/├─ stage1-3 of high/low branches + fusion layers├─ DAPPM module
decoder/└ segmentation head
train.py / eval_speed.py

训练技巧

  • 保持 align_corners=False,与预训练模型一致;
  • 使用 class-balanced sampling + OHEM + 1024×1024 crop;
  • 可用 poly lr 衰减,warmup,batch 合理配置以稳定 BN。

9. 工程落地建议与优化技巧

  • 推理部署:推荐 FP16 inference,或使用 TensorRT/ONNX 模型加速;
  • BatchNorm 小批量稳定性:建议使用 SyncBN 或 GroupNorm,特别是单卡 batch 小的情况下;
  • 细节优化:可视化 high branch 和融合后输出,对小目标如 pole/class 边界进行判断;
  • Test-Time Augmentation:多尺度 + 翻转增强可进一步提升精度,尤其在 DDRNet-39 上效果明显。

10. 可视化建议与调试思路

  • 融合层特征图可视化:显示 detail vs semantic 分支融合前/后的激活,看信息融合效果;
  • DAPPM 多尺度语义图:观察 pyramid pooling 输出对 predictions 的贡献;
  • 错误分析:生成 confusion matrix 评估 small vs large object 上的误分情况;
  • 版本对比展示:slim / 23 / 39 在同一图像上的预测结果对比直观展示模型能力差异。

11. 优点与局限 & 未来扩展

优点

  • 卓越速度与精度平衡;
  • 结构模块化、易扩展;
  • 社区预训练模型可用,复现容易。

局限

  • 没有 FLOPs/参数量清晰表格;
  • 与 Transformer 的融合尚未尝试;
  • 对非常小细节或夜间低光条件效果未专门分析。

未来方向

  • 在融合模块加入 attention,如 CBAM、Transformer 融合;
  • 基于 NAS 自动搜索最佳双分支结构;
  • 模型剪枝或量化以部署到边缘设备。

http://www.dtcms.com/a/333240.html

相关文章:

  • LeetCode 905.按奇偶排序数组
  • 【机器学习深度学习】客观评估主观评估:落地场景权重比例
  • Rust 中 i32 与 *i32 的深度解析
  • 大华相机RTSP无法正常拉流问题分析与解决
  • flume实战:从零配置到启动运行的完整指南
  • 【Ubuntu 中安全删除 Windows 分区并优化磁盘空间利用】
  • redis-sentinel基础概念及部署
  • 机械学习---- PCA 降维深度解析
  • Vue响应式系统在超大型应用中的性能瓶颈
  • 深度学习实战115-基于Qwen3的多智能体协同深度数据分析:架构、流程与实现
  • 光伏工单智能管理,故障处理快人一步
  • 金融业务安全增强方案:国密SM4/SM3加密+硬件加密机HSM+动态密钥管理+ShardingSphere加密
  • 不同DuckDB插件对不同工具生成的xlsx文件读取速度的比较
  • sqlsever的sql转postgresql的sql的方言差异
  • 日本CN2服务器租用多少钱
  • Linux -- 线程概念与控制
  • Spring Boot 静态函数无法自动注入 Bean?深入解析与解决方案
  • 死锁总结及解决方案
  • MetaFox官方版:轻松转换视频,畅享MKV格式的便捷与高效
  • AutoSar AP平台功能组并行运行原理
  • 数据结构——顺序表单链表oj详解
  • 2025戴尔科技峰会:破局者的力量与智慧
  • Android 协程实用模板
  • Nature Commun.:6GHz Ku波段无斜视波束成形!光子准TTD技术实现无限分辨率
  • 【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器
  • 数据库SQL
  • FT61F145芯片解密-程序发展
  • 用 1 张 4090 复现 GPT-3.5?——单卡 24 GB 的「渐进式重计算」训练实践
  • 【秋招笔试】2025.08.15饿了么秋招机考-第三题
  • 【BLE系列-第四篇】从零剖析L2CAP:信道、Credit流控、指令详解