惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
Security Latest
Security Latest
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
Cybersecurity and Infrastructure Security Agency CISA
Cloudbric
Cloudbric
T
Threat Research - Cisco Blogs
大猫的无限游戏
大猫的无限游戏
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
C
Cisco Blogs
V
Vulnerabilities – Threatpost
S
Security Archives - TechRepublic
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
J
Java Code Geeks
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy International News Feed
P
Palo Alto Networks Blog
博客园_首页
V
V2EX
WordPress大学
WordPress大学
Schneier on Security
Schneier on Security
月光博客
月光博客
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
The Cloudflare Blog
罗磊的独立博客
美团技术团队
N
News | PayPal Newsroom
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Last Week in AI
Last Week in AI
K
Kaspersky official blog
Google Online Security Blog
Google Online Security Blog
S
SegmentFault 最新的问题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tailwind CSS Blog

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录 2025 Python 版本性能测试 Flutter Hello World Flutter 安装环境配置 Ubuntu VMware 硬盘扩容后 SMBus Host controller not enabled 报错问题解决 Python NetworkX 教程 Docker GPU 报错 - Failed to initialize NVML Unknown Error 解决方案 Python matplotlib 图表绘制 cuda-toolkit 安装替代 Cuda 与 Cudnn Jinja2 Python 利用 docxtpl 和 Jinja2 生成基于模板的 Word 文档 Docker 实现 CPU 核心隔离 LoFTR 基于 Transformer 的特征提取匹配算法 OmniGlue 特征匹配 SuperGlue 使用图神经网络学习特征匹配 Ubuntu 下将 xlsx 文件按照 sheet 转换为 图片 Python 使用 SQLAlchemy Python FastAPI 教程 openwrt 软路由配置安装 Nav2 地图文件(PGM/YAML)规范标准 3D OBJ 模型转换为 glb 瓦片格式 Python 源码 Redis 数据库介绍 Ubuntu 22.04 内核自动升级导致 MongoDB 7.0.12 错误记录 ubuntu 20.04 安装 ROS Noetic ubuntu 18.04 安装 ROS Melodic VMware Workstation Pro 个人免费版下载、安装、使用指南 Hybrid A-star 路径规划 Reeds-Shepp 曲线 Dubins 曲线 Linux kvm 虚拟机网络不通的问题解决方法 Ubuntu 自动内存清理 BiliBili 缓存视频转 mp4 Python 求解线性规划 3D Gaussian Splatting 官方源码实践记录 ImageMagick 教程 Ubuntu 22.04 安装 Colmap 对数几率 odds Ubuntu nmcli 网络管理工具使用指南 SuperPoint 自监督深度学习特征点提取 SyncTV Music Tag Web 在线音乐信息整理工具 ncm 格式转 mp3 MusicBrainz 音乐元数据百科数据库 Ubuntu 网络流量监控工具 私人云音乐平台 Navidrome 入门 手眼标定 四元数(Quaternions) OHTTPS 实现免费自动 https 证书申请、更新、部署 ubuntu 22.04 安装 CloudCompare 单机 KVM 虚拟机冷迁移 Ubuntu 22.04 使用 mdadm 实现软 raid 小鱼 一键安装 ROS-humble Fluid -46- 基于 Simpletex API 构建公式识别页面 公式识别 API 简介 -- Simpletex 使用 Python web 部署库 waitress 3D Gaussian Splatting for Real-Time Radiance Field Rendering Ubuntu Swap 简介与空间扩展 Ubuntu 24.04 安装 forticlient Clash Verge 使用 MongoDB 7.0.17 集群 Docker 构建源码 Error code - 2013. Lost connection to MySQL server during query 问题解决 Python 日志记录库 loguru 使用指北 Python 实现 Web 日志查看服务 MySQL LOAD DATA LOCAL INFILE 极速数据加载 Image size exceeds limit of 89478485 pixels 解决方案 Docker 使用 NVIDIA GPU 驱动错误解决 阿里云 docker 镜像仓库 Ubuntu中没有wired connected的解决方案 MinIO 简介 subconverter 代理订阅格式转换 修复 node –openssl-legacy-provider is not allowed in NODE_OPTIONS 错误
实时语义分割 DDRNet
Yiwei Zhang · 2024-05-28 · via 又见苍岚

语义分割是自动驾驶汽车理解周围场景的关键技术, 更高分割精度和更快的速度一直是分割领域不断追寻的目标,本文介绍 2021 年的分割网络 DDRNet。

原始论文:https://arxiv.org/abs/2101.06085

摘要

语义分割是自动驾驶汽车理解周围场景的关键技术。现代模型的吸引力表现通常是以繁重的计算和漫长的推理时间为代价的,这对于自动驾驶来说是无法忍受的。使用轻量级架构(编码器-解码器或双通道)或对低分辨率图像进行推理,最近的方法实现了非常快速的场景解析,甚至在单个1080Ti GPU上以超过100fps的速度运行。然而,这些实时方法与基于dilation backbones的模型在性能上仍有很大差距。为了解决这个问题,我们提出了一系列专门为实时语义分割设计的高效主干。提出的深度双分辨率网络(DDRNets)由两个深度分支组成,在这两个分支之间执行多次双边融合。此外,我们还设计了一个新的上下文信息抽取器,名为深度聚合金字塔池模块(DAPPM),用于扩大有效的接受域,并基于低分辨率特征映射融合多尺度上下文。我们的方法在城市景观和CamVid数据集上实现了精度和速度之间的最新权衡。特别是,在单个2080Ti GPU上,DDRNet-23-slim在Cityscapes测试集上以102 FPS的速度产生77.4%的mIoU,在CamVid测试集上以230 FPS的速度产生74.7%的mIoU。随着测试增强的广泛应用,我们的方法优于大多数最先进的模型,并且需要更少的计算量。代码和经过训练的模型可以在网上找到。

简介

语义分割是一项基本任务,其中输入图像的每个像素都应分配给相应的标签[1]–[3]。它在许多实际应用中起着至关重要的作用,例如医学图像分割、自动驾驶车辆导航和机器人[4],[5]。随着深度学习技术的兴起,卷积神经网络被应用于图像分割,其性能大大优于基于手工特征的传统方法。

语义分割在深度学习上的方案

自从提出完全卷积网络(FCN)[6]来处理语义分割问题以来,人们提出了一系列新的网络。
DeepLab[7]消除了ResNet中的一些下采样,以保持高分辨率,并利用具有大膨胀的卷积[8]来扩大感受野。从那时起,带有上下文提取模块的基于扩展卷积的主干网 已成为广泛用于各种方法的标准布局,包括DeepLabV2[9]、DeepLabV3[10]、PSPNet[11]和DenseASPP[12]。

自动驾驶上 速度存在问题

由于语义分割是一种密集的预测任务,神经网络需要输出大感受野的高分辨率特征图来产生令人满意的结果,这在计算上非常昂贵。对于自动驾驶的场景解析来说,这个问题尤为关键,因为自动驾驶需要在非常大的图像上执行,以覆盖更大的视野。因此,上述方法在推理阶段非常耗时,无法直接部署到实际的自动驾驶车辆上。他们甚至不能在一秒钟内处理一幅图像,因为他们利用多尺度测试来提高精度。

改进的方向

随着移动设备部署需求的不断增长,实时分割算法[13]–[17]正受到越来越多的关注。

DFANet[18]采用深度多尺度特征聚合和轻量级深度可分离卷积,以100 FPS的速度实现71.3%的测试mIoU。
与编码器-解码器范式不同,作者在[19]中提出了一种由空间路径和上下文路径组成的新型双边网络。特别地,空间路径利用三个相对较宽的3×3卷积层来捕获空间细节,上下文路径是一个紧凑的预训练主干,用于提取上下文信息。这种双边方法(包括[20])比当时的编码器结构实现了更高的推理速度。

具体的论文工程

近年来,一些有竞争力的实时道路场景语义分割方法被提出。这些方法可分为两类:

一种是利用GPU高效的主干,尤其是ResNet-18[21]–[23]。
另一个开发了从零开始训练的复杂轻型编码器,其中一个BiSeNetV2[24]在实时性能方面达到了新的峰值,在城市景观上以156 FPS的速度实现了72.6%的测试mIoU。

然而,除了[23]使用额外的训练数据外,这些最近的研究没有显示出获得更高质量结果的潜力。由于精心设计的体系结构和优化的超参数,其中一些系统缺乏可扩展性。此外,考虑到更强大的骨干力量的繁荣,ResNet-18几乎没有什么优势。

本文的方案

在本文中,我们提出了具有深度高分辨率表示的双分辨率网络,用于高分辨率图像,尤其是道路行驶图像的实时语义分割。

我们的DDRNets从一个主干开始,然后分成两个具有不同分辨率的平行深分支。一个分支生成相对高分辨率的特征图,另一个通过多次下采样操作提取丰富的语义信息。多个双边连接在两个分支之间架桥,以实现有效的信息融合。

此外,我们还提出了一个名为DAPPM的新模块,该模块输入低分辨率特征映射,提取多尺度上下文信息,并以级联方式合并它们。在语义分割数据集上进行训练之前,双分辨率网络在ImageNet上按照常见的范例进行训练。

根据在三个流行基准(即Cityscapes、CamVid和COCOStuff)上的大量实验结果,DDRNets在分割精度和推理速度之间取得了极好的平衡。与其他实时算法相比,我们的方法在CityScape和CamVid上都达到了最先进的精度,没有注意机制和额外的铃声或口哨。通过标准测试增强,DDRNet可以与最先进的模型相媲美,并且需要的计算资源要少得多。我们还报告了统计相关的性能,并进行了消融实验,以分析架构改进和标准训练技巧的效果。

主要贡献总结

提出了一系列具有深度双分辨率分支和多个双边融合的新型双边网络,用于作为有效主干的实时语义分割。
设计了一个新颖的模块,通过将特征聚合与金字塔池相结合来获取丰富的上下文信息。在低分辨率特征图上执行时,推理时间几乎没有增加。
我们的方法在精度和速度之间实现了一种新的最先进的折衷:2080Ti、Cityscapes测试集102 FPS时77.4%的mIoU和CamVid测试集230 FPS时74.7%的mIoU。据我们所知,我们是第一个在城市景观上仅使用精细注释的近实时(22 FPS)实现80.4%mIoU的公司。

相关工作

·基于 膨胀卷积 的方法在许多具有挑战性的场景下提高了语义分割的性能。
·开创性的工作探索了轻量级架构的更多可能性,比如 编码器和双通道。
·上下文信息 被证明对场景解析任务非常重要。
在本部分中,我们将相关工作分为三类,即高性能语义分割、实时语义分割和上下文提取模块。

高性能语义分割由于缺乏空间细节

问题】通用编码器最后一层的输出不能直接用于预测分割掩码。如果只去除分类主干的下采样,有效感受野将太小,无法学习高级语义信息。
方案】一种可接受的策略是利用扩展卷积来建立像素之间的远程连接,同时移除最后两个下采样层[10],[11],如图2(a)所示。然而,由于高分辨率特征映射维数的指数增长和扩展卷积实现的不充分优化,它也对实时推理提出了新的挑战。
事实上,大多数最先进的模型都是建立在扩张主干上的,因此在很大程度上不适合自动驾驶的场景解析。一些作品试图探索标准扩张主干的替代物。
【具体的】DeepLabv3plus[25] 的作者提出了一种简单的解码器,可以将上采样特征映射与低级别特征映射相融合。它减轻了对直接从扩展卷积生成的高分辨率特征图的要求。尽管编码器的输出步幅设置为16,但DeepLabv3plus可以获得具有竞争力的结果。
HRNet[26]强调了深度高分辨率表示,反映了比扩张主干更高的效率。
我们发现,HRNet的计算效率和推理速度之所以更高,是因为它的高分辨率信息流要薄得多。以HRNetV2-W48为例,1/4分辨率和1/8分辨率特征的维数分别为48和96,远小于带膨胀卷积的预训练ResNet[27]。尽管HRNet的高分辨率分支要薄得多,但通过并行的低分辨率分支和重复的多尺度融合,它们可以大大增强。
我们的工作从深度、精细、高分辨率的表示开始,并提出了更紧凑的体系结构。它们保持高分辨率表示,并通过两个简洁的主干同时提取高层上下文信息。

实时语义分割

几乎所有的实时语义分割模型都采用两种基本方法:编码器-解码器方法和双路径方法。本文还讨论了在这两种方法中起重要作用的轻量级编码器。

1. 编码器-解码器体系结构

与基于扩展卷积的模型相比,编码器-解码器体系结构直观地减少了计算和推理时间。编码器通常是一个深度网络,通过重复的空间缩减来提取上下文信息,解码器通过插值或转置卷积[28]来恢复分辨率,以完成密集预测,如图2(b)所示。
特别是,编码器可以是在ImageNet上预先训练过的轻量级主干网,也可以是像ERFNet[5]和ESPNet[16]这样从头训练过的高效变体。SwiftNet[21]捍卫了ImageNet上预训练编码器的优势,并利用轻型横向连接来辅助上采样。[29]中的作者提出了一种多空间融合和类边界监督的策略。FANet[22]通过快速注意模块和整个网络的额外下采样,在速度和准确性之间实现了良好的折衷。SFNet[23]提供了一个流对齐模块(FAM),用于对齐相邻层的特征图,以实现更好的融合。

2. 双通道结构

编码器-解码器结构减少了计算工作量,但由于重复下采样过程中丢失了一些信息,无法通过不采样完全恢复,从而影响了语义分割的准确性。为了缓解这个问题[19],提出了双路径架构,如图2(c)所示。除了一条提取语义信息的路径外,另一条高分辨率的浅层路径提供了丰富的空间细节作为补充。
为了进一步提高准确性,BiSeNetV2[24]使用全局平均池进行上下文嵌入,并提出了基于注意的特征融合。BISENTV1和V2中的两条路径最初是分开的,而Fast SCNN[20]中的两个分支共享学习到下采样模块。CABiNet[30]采用Fast SCNN的总体架构,但使用MobileNetV3[31]作为上下文分支。
除了现有的两种路径方法外,DDRNets的深细高分辨率分支实现了多种特征融合和足够的ImageNet预训练,同时保证了推理效率。我们的方法可以很容易地进行缩放,以达到更高的精度(城市景观的mIoU超过80%)。

3. 轻量级编码器

有许多计算效率高的主干可以用作编码器,例如MobileNet[32]、ShuffleNet[33]和Xception的小型版本[34]。
MobileNet将标准卷积替换为深度可分离卷积,以减少参数和计算量。MobileNetV2[35]中的反向剩余块缓解了深度可分离卷积的强正则化效应。
ShuffleNet利用分组卷积的紧凑性,提出了一种通道洗牌操作,以促进不同组之间的信息融合。
然而,这些网络包含许多纵深可分离的卷积,这些卷积不能用现有的GPU架构有效地实现。因此,尽管ResNet-18[27]的FLOPs约为MobileNet V2 1.0×(的六倍),但在单个1080Ti GPU上,前者的推理速度高于后者[21]。然而,现有的轻量级主干可能不适合语义分割,因为它们通常对图像分类进行了过度调整。

4. 上下文提取模块

语义分割的另一个关键是如何获取更丰富的上下文信息。
·Atrus Spatial Pyramid Pooling(ASPP)[9]由具有不同速率的平行Atrus卷积层组成,可以处理多尺度上下文信息。
·PSPNet中的金字塔池模块(PPM)[11]通过在卷积层之前实现金字塔池,在计算效率上比ASPP更高。
·与卷积核的局部性质不同,自我注意机制擅长捕捉全局依赖。通过这种方式,双注意网络(DANet)[36]利用位置注意和通道注意来进一步改进特征表示。对象上下文网络(OCNet)[37]利用自我注意机制探索对象上下文,对象上下文被定义为属于同一对象类别的一组像素。
·CCNet[38]的作者提出了criss-cross attention,以提高内存使用和计算的效率。
然而,这些上下文提取模块是为高分辨率特征映射设计和执行的,对于轻量级模型来说太耗时了。
以低分辨率特征图为输入,我们增强了PPM模块,使其具有更大的尺度和更深入的特征聚合。当附加到低分辨率分支的末尾时,该模块的性能优于OCNet中的PPM和Base-OC模块。

算法

在本节中,将描述整个管道,它由两个主要组件组成:深度双分辨率网络和深度聚合金字塔池模块。

深度双分辨率网络

【添加高分辨率分支】
为了方便起见,我们可以在广泛使用的分类主干网(如resnet)上添加一个额外的高分辨率分支。为了在分辨率和推理速度之间取得平衡,我们让高分辨率分支创建分辨率为输入图像分辨率1/8的特征映射。因此,高分辨率分支被附加到conv3阶段的末尾。请注意,高分辨率分支不包含任何下采样操作,并且与低分辨率分支有一对一的对应关系,以形成深度高分辨率表示。
【多个双边特征融合】
然后在不同阶段进行多个双边特征融合,以充分融合空间信息和语义信息。
【DDRNet的细节】
DDRNet-23-slim和DDRNet-39的详细架构如表一所示。
用于IMAGENET的DDRNET-23-SLIM和DDRNET-39的体系结构。
“CONV4×r” 表示CONV4重复r次。对于DDRNET-23-SLIM,r=1;对于DDRNET-39,r=2

我们修改了原始ResNet的输入干,用两个连续的3×3卷积层替换了一个7×7卷积层。剩余的基本块用于构造主干和随后的两个分支。为了扩展输出维度,在每个分支的末尾添加一个瓶颈块。
双边融合包括将高分辨率分支融合到低分辨率分支(高到低融合)和将低分辨率分支融合到高分辨率分支(低到高融合)。·对于从高到低的融合,在逐点求和之前,通过3×3卷积序列(步长为2)对高分辨率特征图进行降采样。·对于低分辨率到高分辨率,低分辨率特征地图首先通过1×1卷积进行压缩,然后通过双线性插值进行上采样。图3显示了如何实现双边融合。第i个高分辨率特征映射XHi和低分辨率特征映射XLi可以写成:

$$ \begin{cases}X_{Hi}=R(F_{H}(X_{H(i-1)})+T_{L-H}(F_{L}(X_{L(i-1)})))\\X_{Li}=R(F_{L}(X_{L(i-1)})+T_{H-L}(F_{H}(X_{H(i-1)})))\end{cases} $$

深度聚合金字塔池模块

DAPPM, Deep Aggregation Pyramid Pooling Module

在这里,我们提出了一个新的模块来进一步从低分辨率特征地图中提取上下文信息。图5(上图)显示了DAPPM的内部结构。以1/64图像分辨率的特征映射为输入,采用指数步长的大池核生成1/128、1/256、1/512图像分辨率的特征映射。还利用了由全局平均池生成的输入特征图和图像级信息。我们认为,用单个3×3或1×1卷积来混合所有多尺度上下文信息是不够的。受Res2Net[39]的启发,我们首先对特征图进行上采样,然后使用更多的3×3卷积,以分层残差的方式融合不同尺度的上下文信息。考虑到输入x,每个scale $y_i$可以写成:

$$ y_i=\begin{cases}C_{1\times1}(x),&i=1;\\C_{3\times3}(U(C_{1\times1}(P_{2^i+1,2^{i-1}}(x)))+y_{i-1}),&1

其中C1×1表示1×1卷积,C3×3表示3×3卷积,U表示上采样操作,Pj,k表示池层,其中内核大小为j,步长为k,Pglobal表示全局平均池。最后,使用1×1卷积对所有特征映射进行连接和压缩。此外,还增加了1×1投影快捷方式,便于优化。与SwiftNet[21]中的SPP类似,DAPPM是用序列BN-ReLU-Conv实现的。
在DAPPM中,由较大的池核提取的上下文与更深的信息流集成,通过将不同深度与不同大小的池核集成,形成多尺度性质。表二显示,DAPPM能够提供比PPM更丰富的上下文。虽然DAPPM包含更多卷积层和更复杂的融合策略,但由于输入分辨率仅为图像分辨率的1/64,因此几乎不影响推理速度。例如,对于1024×1024图像,特征贴图的最大分辨率为16×16。

语义分割的总体架构

我们的方法概述如图4所示。为了适应语义分割任务,对双分辨率网络进行了一些修改。首先,将低分辨率分支RBB中的3×3卷积步长设置为2,以进一步降低采样。然后,将DAPPM添加到低分辨率分支的输出中,该分支从1/64图像分辨率的高级特征映射中提取丰富的上下文信息。此外,最后的高到低融合被双线性插值和求和融合实现的低到高融合所取代。最后,我们设计了一个由3×3卷积层和1×1卷积层组成的简单分割头。通过改变3×3卷积层的输出尺寸,可以调整分割头的计算量。我们将DDRNet-23-slim设置为64,DDRNet-23设置为128,DDRNet39设置为256。请注意,除了分割头和DAPPM模块外,所有模块都已在ImageNet上接受过预训练。

关于语义切分的DDRNets概述。“RB”表示连续剩余基本模块。“RBB”表示单个残差瓶颈块。“DAPPM”表示深度聚合金字塔池模块。“Seg. Head”表示分段头。黑色实线表示进行数据处理(包括上采样和下采样)的信息路径,黑色虚线表示未进行数据处理的信息路径。“sum”表示逐点求和。虚线框表示在推理阶段丢弃的组件。

深度监督

训练阶段的额外监督可以简化深度卷积神经网络(DCNN)的优化。在PSPNet中,添加了一个辅助损耗来监控ResNet-101的res4 22块的输出,并根据实验结果将相应的权重设置为0.4[11]。BiSeNetV2[24]提出了一种强化训练策略,在语义分支的每个阶段结束时添加额外的分段头。然而,它需要大量的实验来找到平衡每个损失的最佳权重,并导致训练内存的不可忽略的增加。为了获得更好的结果,SFNet[23]采用了一种类似的策略,名为级联深度监督学习。在本文中,我们仅采用简单的额外监管,以便与大多数方法进行公平比较。我们添加了如图4所示的辅助损失,并在PSPNet之后将重量设置为0.4。辅助分割头在测试阶段被丢弃。最终损失是交叉熵损失的加权和,可以表示为:
$$
L_f=L_n+\alpha L_a
$$
式中,$L_f$、$L_n$、$L_a$ 分别表示最终损失、正常损失、辅助损失,α表示辅助损失的重量,在本文中为0.4。

实验

Datasets

Cityscapes[40]是关注城市街道场景解析的著名数据集之一。它包含2975张用于训练的精细注释图像、500张用于验证的图像和1525张用于测试的图像。在训练期间,我们不会使用额外的20000张粗糙标记的图像。共有19个类可用于语义分段任务。图像的分辨率为2048×1024,这对实时语义分割是一个挑战。
CamVid[41]由701个密集注释的帧组成,每帧的分辨率为960×720。它包括367张训练图片、101张验证图片和233张测试图片。我们将训练集和验证集合并起来进行训练,并在之前的工作[18]、[19]、[21]之后使用11个类在测试集上评估我们的模型。
COCOStuff[42]提供了10K复杂图像,包含182个类别的密集注释,包括91个thing和91个stuff类。请注意,其中11个thing类没有任何分段注释。我们按照[42]中的划分(9K用于训练,1K用于测试)进行公平比较。

Train Setting

在对语义分割任务进行微调之前,双分辨率网络在ImageNet[43]上进行训练,遵循与之前工作相同的数据增强策略[27],[44]。所有模型在四个2080Ti GPU上以224×224的输入分辨率、256的批量大小和100个轮进行训练。初始学习速率设置为0.1,并在第30、60和90轮时降低10倍。我们使用SGD训练所有网络,权重衰减为0.0001,Nesterov动量为0.9。ImageNet验证集上的Top-1 errors如表III所示。
尽管DDRNet的效率并不优于许多在ImageNet上精心设计的高级轻量级主干网,但考虑到速度权衡,它仍然在语义分割基准上实现了最新结果。Cityscapes、CamVid和COCOStuff的训练设置介绍如下。

1) 城市景观:在[49]之后,我们使用SGD优化器,初始学习率为0.01,动量为0.9,权重衰减为0.0005。我们采用幂为0.9的策略学习策略来降低学习率,并实现了包括随机裁剪图像、0.5到2.0范围内的随机缩放和随机水平翻转在内的数据增强方法。在[18]、[29]、[23]之后,图像被随机裁剪成1024×1024,用于训练。所有模型都经过484次(约120K次迭代)、12个批量和4个2080Ti GPU上的syncBN训练。对于在测试服务器上评估的模型,我们在训练期间同时从train和val集提供图像。为了与[24]和[23]进行公平比较,还使用了在线硬示例挖掘(OHEM)[50]。
2) CamVid:我们将初始学习率设置为0.001,并对所有模型进行968个时代的训练。图像被随机裁剪成960×720,用于以下训练[18]。所有模型都在一个GPU上进行训练,其他训练细节与城市景观相同。在训练前使用城市景观时,我们对200轮的模型进行了微调。
3) COCOStuff:初始学习率为0.001,总训练次数为110次。在数据增强之前,我们将图像的短边调整为640。作物大小为640×640,与BiSENTEV2相同[24]。其他训练细节与城市景观相同,重量衰减为0.0001。在推断阶段,我们将图像分辨率固定为640×640。

推理速度和准确性的测量

推理速度在单个GTX 2080Ti GPU上测量,方法是将批量大小设置为1,使用CUDA 10.0、CUDNN 7.6和PyTorch 1.3。与MSFNet和SwiftNet类似,我们在卷积层之后排除了批量规范化层,因为它们可以在推理过程中集成到卷积中。我们使用[51]建立的协议进行公平比较(城市景观的图像大小为2048×1024,CamVid为960×720,COCOStuff为640×640)。根据ResNet[27],我们报告了四个试验的最佳结果、平均结果和标准偏差,但cityscapes测试集除外,该测试集的准确性由官方服务器提供。

速度和准确性比较

1) 城市景观:从表IV和图1可以看出,我们的方法在实时性和高精度之间实现了一种新的最先进的权衡。特别是,DDRNet-23-slim(我们最小的型号)在测试集上以每秒102帧的速度实现77.4%的mIoU。它的推理速度与DFANet A和MSFNet相当,比DFANet A和MSFNet快6.1%mIoU,推理速度大约是MSFNet的2.5倍。此外,它比最小的SFNet运行速度快40%,在测试集上实现了2.9%的mIoU增益。值得注意的是,我们的方法也优于基于架构搜索的实时语义分割方法,例如推理速度相似的CAS[47]和GAS[48]。对于更广泛的模型,在表IV中公布的实时方法中,DDRNet23实现了整体最佳精度,以37 FPS的速度达到79.4%的mIoU。DDRNet-23的性能比SFNet(ResNet-18)提高了0.5%,运行速度是它的两倍。
我们继续深入使用DDRNets,在Cityscapes测试服务器上以每秒22帧的速度实现80.4%的mIoU,只使用精细注释的数据。如果受益于Mapillary[52]数据集上的预训练和TensorRT加速[23],我们的方法可以为道路场景的实时语义分割建立一个skyscraping基线。在Cityscapes val数据集上,DDRNet-23-slim优于表IV中所有已发布的结果,具有36.3 GFLOPs和570万个参数。DDRNet-23实现了79.5%百万用户的新的总体最佳结果。图6显示了DDRNet-23-slim和DDRNet23在不同场景下的可视化结果。
2) CamVid:如表V所示,DDRNet-23-slim在没有城市景观预训练的情况下,以230 FPS的速度在CamVid测试集上实现74.7%的mIoU。它获得了第二高的精度,比所有其他方法运行得更快。特别是,DDRNet-23的性能优于之前最先进的方法MSFNet。DDRNet-23的性能也比BISENTV2-L和SFNet(ResNet18)有很大提高,运行速度大约是它们的两倍。鉴于CamVid的训练像素远小于城市景观,我们认为DDRNets的出色性能部分归功于充分的ImageNet预训练。此外,我们的Cityscapes预训练模型以实时速度实现了最先进的精确度。特别是,Cityscapes预先训练的DDRNet-23以94 FPS的速度实现了80.6%的mIoU,比BiSeNetV2-L更强、更快。相应的可视化结果如图7所示。
3) COCOStuff:我们也在COCOStuff上验证了我们的方法,因为COCOStuff的类别丰富,是一个更具挑战性的实时语义分割数据集。低分辨率分支中RBB的步长设置为1,因为图像分辨率小于其他两个数据集。重塑图像和预测遮罩的时间不计算在内。表六表明,在非常具有挑战性的场景下,我们的方法在很大程度上优于BiSeNetV2。我们的DDRNet-23在运行速度是PSPNet50的20倍的情况下,达到了与PSPNet50类似的精度。

与最新技术的比较

结果在这一部分中,我们通过在Cityscapes测试集上与最先进的模型进行比较,进一步证明了DDRNet的语义分割能力。这种方法通常采用多尺度和水平翻转推理,以获得更好的结果,而不考虑时间成本。为了与它们进行公平比较,我们还采用了多个量表,包括0.50×、0.75×、1×、1.25×、1.5×、1.75×、2×在测试过程中左右翻转。如表七所示,标准测试增强将DDRNet-39的准确度从80.4%提高到81.9%。我们的DDRNet-39的性能优于许多强大的模型,这些模型与CCNet、DANet和OCNet等自我关注模块集成。值得注意的是,我们的方法只需要计算11%的DANet。DDRNet-39还领先于SFNet(基于ResNet-101主干网),后者是一种最先进的实时语义分割方法,只需要34%的计算量。DDRNet-39 1.5×其尺寸更接近表VII中的其他型号,实现了非常有竞争力的性能(82.4%百万用户)

与HRNet的比较

DDRNet和HRNet的主要区别在于并行分支的数量。此外,我们在低分辨率分支的末尾添加了多尺度上下文提取模块。表VIII中的实验结果表明,DDRNet在推理时间和训练记忆使用方面都优于HRNet。我们从正式实施中得到了两个小型人力资源网的val结果。训练记忆在单个2080Ti上测量,批次大小为2,裁剪大小为1024×512,不包括辅助分割头。。

城市景观的消融实验

1) Standard Bells and Whistles:我们分析了一些基本训练技巧的效果,这些技巧也被最近的先进方法SFNet所采用[23]。如表九所示,通过深度监督、OHEM和更大作物规模的训练,精确度从76.1提高到77.8。
2) DAPPM:我们将DAPPM与基于金字塔池的方法(PPM)、基于自我注意的模块(Base OC)和res2net模块进行比较。表X中的结果表明,该模块将场景解析的性能从74.1%mIoU提高到77.8%mIoU,而推理速度几乎不受影响。与PPM和RES2相比,DAPPM还实现了1%的mIoU增益,而另一种最先进的方法BaseOC在低分辨率特征映射方面的性能相对较差。
3) 双分辨率网络:为了更快的实验,我们从头开始训练所有双边网络,初始学习率为0.05,裁剪大小为1024×512,总共600个时代,并且不使用OHEM。如表席所示,使用较细的细节分支结果,1.3%的精度降低,运行速度比基线快得多。将细节分支添加到网络的中间层有助于实现深度高分辨率表示,并且由于避免了使用更高分辨率的计算,因此也提高了推理速度。瓶颈扩展了特征维度,为DAPPM和最终分割头生成更丰富的特征。双边融合以较小的时间代价进一步提高了分割精度。最后,我们的双分辨率网络比基线占用更少的计算资源和时间,同时获得更好的性能。

原始论文

参考资料

文章链接:
https://www.zywvvd.com/notes/study/deep-learning/segmentation/ddrnet/ddrnet/