《PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers》

期刊:CVPR

年份:2023

代码:https://github.com/XuJiacong/PIDNet

摘要

双分支网络架构已经证明了它在实时语义分割任务中的有效性和有效性。然而,高分辨率细节和低频上下文的直接融合的缺点是细节特征很容易被周围的上下文信息淹没。这种超调现象限制了现有双分支模型的分割精度的提高。在本文中,我们在卷积神经网络 (CNN) 和比例积分 (PID) 控制器之间建立联系,并表明双分支网络等效于比例积分 (PI) 控制器,这固有地存在类似的超调问题。为了缓解这个问题,我们提出了一种新颖的三分支网络架构:PIDNet,它包含三个分支来分别解析详细、上下文和边界信息,并采用边界注意力来指导详细和上下文分支的融合。我们的PIDNets家族在推理速度和准确性之间取得了最好的权衡,其准确性超过了所有现有模型,在cityscape和CamVid数据集上的推理速度相似。具体来说,PIDNet-S 在 Cityscapes 上以 93.2 FPS 的推理速度实现了 78.6% 的 mIOU,在 CamVid 上以 153.7 FPS 的速度实现了 80.1% mIOU。

Introduce

PID控制器的概念

  • 比例-积分-微分(PID)控制器是一个经典的控制理论概念,广泛应用于现代动态系统和过程,如机器人操控、化学过程和电力系统等。尽管近年来开发了许多具有更好控制性能的高级控制策略,但由于其简单性和鲁棒性,PID控制器仍然是大多数工业应用的首选。

PID控制器在其他领域的应用

  • PID控制器的思想已经被扩展到其他领域,例如图像去噪、随机梯度下降和数值优化,以提高算法性能。

背景与动机

  • 传统的两分支网络架构在实时语义分割任务中表现出效率和效果,但存在融合高分辨率细节和低频上下文信息时细节特征容易被上下文信息淹没的问题,这种现象限制了现有模型的分割精度提升。

主要贡献

  • 我们在深度CNN和PID控制器之间建立联系,提出了一种基于PID控制器结构的三分支网络架构。
  • 提出了有效的模块,例如旨在平衡详细和上下文特征的 Bag 融合模块,以提高 PIDNets 的性能。
  • PIDNet 在所有现有模型中都达到了推理速度和准确性之间的最佳权衡。特别是,PIDNet-S 在 Cityscapes 测试集上以 93.2 FPS 的速度实现了 78.6% 的 mIOU,PIDNet-L 在没有加速工具的 Cityscapes 测试集上展示了最高的准确度(80.6% mIOU)。

Related Work

高精度语义分割

  • 早期的语义分割方法基于编码器-解码器架构,通过步进卷积或池化操作逐步扩大感受野,并通过反卷积或上采样从高级语义中恢复细节信息。但这种架构可能会在下采样过程中忽略空间细节
  • 为了解决这个问题,提出了扩张卷积(dilated convolution),它在不降低空间分辨率的情况下扩大视野。DeepLab系列利用不同扩张率的扩张卷积取得了显著的性能提升。
  • 金字塔池化模块(PPM)被引入以解析多尺度上下文信息。HRNet利用多路径和双边连接来学习和融合不同尺度的表示。
  • 非局部操作(non-local operation)被引入计算机视觉,以提高模型的准确性。

实时语义分割

  • 许多网络架构被提出以在推理速度和准确性之间取得最佳平衡。例如,SwiftNet采用轻量级编码器和解码器,并在早期阶段对特征图进行下采样。
  • DFANet通过修改Xception的架构引入轻量级骨干网络,该架构基于深度可分离卷积,并减小输入尺寸以提高推理速度。
  • ShuffleSeg采用ShuffleNet作为其骨干网络,结合通道Shuffle和组卷积来降低计算成本。
  • 作者指出,尽管这些网络减少了延迟和内存使用,但它们的准确性显著限制了在现实世界中的应用。

两分支网络架构(TBN)

  • 为了同时考虑上下文依赖性和空间细节,BiSeNet提出了包含两个不同深度分支的TBN架构,分别用于上下文嵌入和细节解析,并使用特征融合模块(FFM)来融合上下文和细节信息。
  • 基于TBN的后续工作提出了增强其表示能力或减少模型复杂性的改进。例如,DDRNet引入了双边连接以增强上下文和细节分支之间的信息交换。

PID控制器与TBN的类比

  • 作者将TBN架构与PID控制器进行了类比,指出TBN等同于PI控制器,存在过度响应问题。为了解决这个问题,作者提出了PIDNet,它通过添加一个辅助导数分支(ADB)来模拟空间上的PID控制器,并突出高频语义信息。

PIDNet的优势

  • 通过在TBN中引入ADB,PIDNet能够更好地平衡细节和上下文信息,从而提高分割精度。作者还进行了消融研究和特征可视化,以更好地理解PIDNet中每个模块的功能。

Method

3.1 PID

图1

PID 控制器包含三个组件:比例 (P) 控制器、积分 (I) 控制器和导数 (D) 控制器,如图所示。PI控制器的实现可以写成:

其中,P 控制器专注于当前信号,而 I 控制器累积所有过去的信号。由于积累的惯性效应,当信号发生相反变化时,简单的PI控制器的输出会发生超调。然后,引入D控制器,如果信号变小,D分量将变为负值,并作为阻尼器来减少超调。 

输出为:

其中:

 

k_{mn}为第m层核的第n个值。由于|k_{mn}|大多分布在(0,0.01)中,且以1为界,因此随着层数的增加,各项的系数呈指数递减。因此,对于每个输入向量,项目数量越多意味着对最终输出做出贡献的可能性越大。对于细节, I\left [ i-1 \right ]I\left [ i \right ]I\left [ i+1 \right ]占据了总条目数的70%以上,说明细节更关注局部信息。相反, I\left [ i-1 \right ]I\left [ i \right ]I\left [ i+1 \right ]只占上下文分支总条目的26%以下,因此上下文分支强调的是周围信息。从图-Bottom可以看出,上下文分支对本地信息变化的敏感性低于细节分支。细节分支和上下文分支在空间域中的行为类似于P(当前)和I(所有以前)控制器在时间域中的行为

z^{-1}替换为PID控制器z-变换中的e^{-jw},可以表示为:

当输入频率 ω 增加时,I 和 D 控制器的增益将分别变小和更大,因此 P、I 和 D 控制器作为全通、低通滤波器和高通滤波器工作。由于PI控制器更关注输入信号的低频部分,不能立即对信号的快速变化做出反应,因此它固有地存在超调问题。D控制器通过启用对输入信号变化敏感的控制输出来减少超调。图3-Bottom显示,细节分支解析各种语义信息,即使不准确,而上下文分支聚合低频上下文信息,并与语义上的大平均滤波器类似地工作。直接融合详细和上下文信息会导致一些细节特征的缺失。因此,我们得出结论,TBN 等价于傅里叶域中的 PI 控制器。 

3.2 PIDNet: A Novel Three-branch Network

为了缓解超调问题,我们将辅助导数分支(ADB)附加到TBN上,在空间上模拟PID控制器,突出高频语义信息。每个对象内部像素的语义是一致的,只沿着相邻对象的边界变得不一致,因此语义的差异仅在对象边界上非零,ADB的目标是边界检测。因此,我们建立了一种新的三分支实时语义分割体系结构,即比例积分网络(PIDNet),如图所示:

图2

S 和 B 分别表示语义和边界,Add 和 Up 分别表示逐元素求和和双线性上采样操作; BASLoss 表示边界感知 CE 损失。在推理阶段将忽略虚线和关联块。 

为了缓解超调问题,我们将辅助导数分支(ADB)附加到TBN上,在空间上模拟PID控制器,突出高频语义信息。每个对象内部像素的语义是一致的,只沿着相邻对象的边界变得不一致,因此语义的差异仅在对象边界上非零,ADB的目标是边界检测。因此,我们建立了一种新的三分支实时语义分割体系结构,即比例积分网络(PIDNet)。

PIDNet 具有三个具有互补职责的分支:比例 (P) 分支解析并保留高分辨率特征图中的详细信息;积分 (I) 分支在本地和全局聚合上下文信息以解析长期依赖关系;导数 (D) 分支提取高频特征来预测边界区域。还采用了级联残差块作为硬件友好性的主干。此外,P、I 和 D 分支的深度设置为中等、深浅以实现高效实现。因此,通过加深和扩大模型来生成一系列PIDNets (PIDNet-S, M和L)。

在第一个 Pag 模块的输出处放置一个语义头来生成额外的语义损失 l_{0} 以更好地优化整个网络。采用加权二元交叉熵损失l_{1}代替骰子损失,处理边界检测不平衡问题,因为粗边界优先突出边界区域,增强小物体的特征。l_{2} 和 l_{3} 表示 CE 损失,而我们使用边界头的输出对 l_{3} 使用边界感知 CE 损失 [46] 来协调语义分割和边界检测任务,并增强 Bag 模块的功能。BAS-Loss的计算可以写成:

其中,t为预定义阈值,b_{i}s_{i,c}\widehat{s_{i,c}}分别为c类的边界头输出、分割真值输出和第i个像元的预测结果.

PIDNet网络最终的损失函数:

根据经验,将PIDNet训练损失的参数设置为\lambda _{0}=0.4\lambda _{1}=20\lambda _{2}=1\lambda _{3}=1, t = 0.8。 

3.3 Pag:有选择地学习高级语义

在PIDNet中,I分支提供的丰富而准确的语义信息对于P和D分支的详细解析和边界检测至关重要,这两个分支都包含相对较少的层和通道。因此,我们将 I 分支视为其他两个分支的备份,并使其能够为它们提供所需的信息。与D分支直接添加所提供的特征映射不同,我们引入了像素-注意力引导融合模块(Pag),如图3所示,用于P分支选择性地从I分支学习有用的语义特征而不会被淹没。

图3 Pag模块的说明。σ(x) 表示 Sigmoid 函数;这里所有卷积的内核大小均为 1 × 1

工作原理:Pag模块利用来自P分支和I分支的特征图,通过计算对应像素之间的关联度来实现特征的选择性融合。这种关联度是通过一个Sigmoid函数输出的,表示两个像素属于同一对象的可能性。

定义来自P和I分支的特征映射中对应像素的向量分别为\overrightarrow{v_{p}}\overrightarrow{v_{i}},则Sigmoid函数的输出可以表示为:

 其中 σ 表示这两个像素属于同一对象的可能性。如果 σ 很高,我们更多地信任 \overrightarrow{v_{i}},因为 I 分支在语义上丰富且准确,反之亦然。因此,Pag 的输出可以写成:

优势:通过Pag模块,网络能够在不同的情况下动态调整对细节和上下文信息的依赖,从而在保持高分辨率细节的同时,也能够捕捉到更广泛的上下文信息。

 

3.4 PAPPM:上下文的快速聚合 

为了更好地构建全局场景先验,PSPNet[59]引入了一个金字塔池化模块(PPM),该模块在卷积层之前连接多尺度池化映射,形成局部和全局上下文表示。之前论文提出的深度聚合PPM (DAPPM)进一步提高了PPM的上下文嵌入能力,表现出了优越的性能。然而,DAPPM的计算过程在深度上无法并行化,耗时长,且DAPPM每个尺度包含的通道过多,可能超出轻量级模型的表示能力。因此,我们修改DAPPM中的连接以使其可并行化,如图4所示,并将每个尺度的通道数量从128减少到96。这种新的上下文收集模块被称为并行聚合PPM (PAPPM),并应用于PIDNet-M和PIDNet-S以保证它们的速度。对于我们的深度模型:PIDNet-L,我们仍然选择考虑其深度的DAPPM,但减少其通道数以减少计算量和提高速度。

图4 PAPPM的并行结构。Avg (5,2) 表示内核大小为 5×5 且步长为 2 的平均池化。

工作原理

  • PAPPM通过并行处理不同尺度的特征图来实现快速的上下文聚合。它使用不同尺寸的池化窗口来捕获不同范围的上下文信息,并将这些信息合并以形成全面的上下文表示。

3.5 Bag:平衡细节和上下文 

图5 (a) Bag 和 (b) 极端情况中的 Light-Bag 模块的单通道实现。P、I 和 D 分别指详细、上下文和边界分支的输出。σ 表示 Sigmoid 函数的输出。

给定 ADB 提取的边界特征,我们使用边界注意力来指导详细 (P) 和上下文 (I) 表示的融合。具体来说,我们设计了一个Boundary-attention-guided融合模块(Bag),如图 5 所示,分别填充具有详细和上下文特征的高频和低频区域。请注意,上下文分支在语义上是准确的,但它丢失了太多的空间和几何细节,特别是对于边界区域和小对象。由于细节分支更好地保留了空间细节,我们迫使模型更多地沿着边界区域信任详细的分支,并利用上下文特征来填补其他领域。定义P、I、D特征映射对应像素的向量分别为\overrightarrow{v_{p}}\overrightarrow{v_{i}}\overrightarrow{v_{d}},则Sigmoid、Bag、Light-Bag的输出可表示为:

其中 f 指的是卷积、批量归一化和 ReLU 的组合。尽管我们在 Light-Bag 中用两个 1×1 卷积替换了 Bag 中的 3 × 3 卷积,但 Bag 和 Light-Bag 的功能是相似的,即当 σ > 0.5 时,模型更信任细节特征,否则首选上下文信息。 

Result

Cityscapes 上的速度和准确性比较。其他分割数据集预训练的模型用 † 标记;标有 * 的模型的推理速度在我们的平台上进行了测试。PIDNet的GFLOPs是基于全分辨率输入导出的。

Conclusion

本文提出了一种新的三分支网络架构:PIDNet用于实时语义分割。PIDNet在推理时间和准确性之间取得了最好的结果。然而,由于PIDNet利用边界预测来平衡细节和上下文信息,边界周围的精确注释(通常需要大量时间)是首选以获得更好的性能。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/751047.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt开发 | Qmake与CMake | Qt窗口基类 | VS Qt项目与QtCreator项目相互转化 | Qt架构 | Qt学习方法

文章目录 一、Qmake与CMake介绍1.Qmake2.CMake3.使用qmake还是cmake? 二、Qt3个窗口基类的区别三、vs qt与QtCreator项目相互转化方法1.QtCreator项目转VS Qt2.VS Qt项目转QtCreator项目 四、Qt架构介绍与学习方法详解 一、Qmake与CMake介绍 Qmake和CMake都是构建系…

vue启动时的错误

解决办法一:在vue.config.js中直接添加一行代码 lintOnSave:false 关闭该项目重新运行就可启动 解决办法二: 修改组件名称

机械装备制造行业MES,实时监控生产流程

装备制造行业MES,是专门为装备制造行业设计的生产信息化管理系统。旨在实时监控装备制造生产流程,实现全流程的精细化管理和监控,提高生产效率、降低生产成本、提升产品质量。 本文将详细介绍装备制造行业MES的概念、技术及应用,…

放大招了|十亿参数大模型LLMs运行功耗仅需13W,内存使用量减少90%!

矩阵乘法(MatMul)历来是大型语言模型(LLMs)总体计算成本的主导因素,尤其在模型向更大维度嵌入和上下文长度发展时,这一成本呈指数级增长。 近期有一篇刚刚发表的论文中提出的方法完全去除了矩阵乘法操作&am…

系统架构师考点--系统配置与性能评价

大家好。今天我们来总结一下系统配置与性能评价的考点内容,这一部分一般是出在上午场的选择题中,占1-2分左右。 一、性能指标 计算机 对计算机评价的主要性能指标有:时钟频率(主频);运算速度;运算精度内存的存储容量…

现在纠结于到底是学stm32好还是Arduino好?

如果你就是要搞单片机,学STM32。 如果你要搞机器人、物联网、机器视觉、自动驾驶,就要学Arduino。 搞单片机,除了STM32之外,重点在于画好原理图和PCB。刚好我有一些资料,是我根据网友给的问题精心整理了一份「stm32的…

HarmonyOS Next开发学习手册——内存管理(GC)

GC(全称 Garbage Collection),即垃圾回收。在计算机领域,GC就是找到内存中的垃圾,释放和回收内存空间。当前主流编程语言实现的GC算法主要分为两大类:引用计数和对象追踪(即Tracing GC&#xff…

【系统架构设计师】计算机组成与体系结构 ③ ( 层次化存储结构 | 寄存器 | 高速缓存 | 内存 | 外存 )

文章目录 一、层次化存储结构1、层次化存储结构2、层次化存储结构 - 示例说明3、程序员可操作的部分 计算机 采用 分级存储结构 , 主要目的是 为了 解决 容量 / 价格 / 速度 之间的矛盾 ; 一、层次化存储结构 1、层次化存储结构 计算机 存储器 按照存储速度 由快到慢 进行排序 …

算法入门:二分查找及其Java实现

在程序开发中,算法是解决问题的核心。本篇博客将详细讲解一种高效的查找算法——二分查找,并通过Java代码示例帮助你理解其实现和应用。 如果你觉得这篇文章对你有帮助,不要忘记点赞、收藏和关注我,这将是对我最大的支持和鼓励&am…

2、数据库模型图、er图

关系 user和administarators是多对一的关系 user和order是一对多的关系 shipped和order是多对一的关系 order和books是多对多的关系 leavewords和order是一对一的关系 stock和books是一对多的关系 Chens 数据库表示法——ER图 Crows Foot数据库表示法——数据库模型图 Navicat表…

%运算符

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法介绍 在python中,可以使用%运算符进行灵活多样的格式化处理,通用的语法格式为: (格式模板&…

9.二维数组的遍历和存储

二维数组的遍历和存储 二维数组的遍历 二维数组a[3][4],可分解为三个一维数组,其数组名分别为: 这三个一维数组都有4个元素,例如:一维数组a[0]的 元素为a[0][0],a[0][1],a[0][2],a[0][3]。所以遍历二维数组无非就是先取出二维数组中得一维数组, 然后再从一维数组中取出每个元…

关于摄像头模组中滤光片的介绍

1、问题背景 红外截止滤光片(IR CUT Filter)是应用在摄像头模组中非常重要的一个器件,因人眼与 coms sensor 对光线各波长的响应不同, 人眼看不到红外光,但 sensor 能感应到(如下图是某sensor在各波长下的…

Docker之jekins的安装

jekins官网地址:Jenkins Plugins (https://plugins.jenkins.io/) jekins 的docker 官方地址:https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址: docker/README.md at master jenkinsci…

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!应该不需要。各种公开免费的…

CS-隐藏防朔源-数据转发-中间件反向代理-Apache

目录 1、代理机安装Apache: 2、中间件设置转发: 添加代理 3、重启Apache服务 4、CS监听器配置转发机IP 实战情况下还是要准备两台外网服务器. --还是做个中转 1、代理机安装Apache: apt-get install apache2 a2enmod proxy proxy_ajp proxy_balancer proxy_co…

用友 U8+ 控制金额、单价等字段权限设置

进入路径 系统服务——权限——数据权限控制设置 本功能是数据权限设置的前提,用户可以根据需要先在数据权限控制设置中选择需要进行权限控制的对象。 数据权限的控制分为记录级和字段级两个层次,对应系统中的两个页签"记录级"和"字段…

配置Nginx二级域名

一、环境 (一)配置 1.服务器 linux CentOS 2.反向代理 Nginx 3.开放端口 云服务器开放端口80和443 二、域名备案 (一)腾讯云 1.腾讯云域名备案流程 备注:一级域名备案后,二级域名可以不用再备案&a…

Construct公司 从 0 到 1 基于 Kitex+Istio 的微服务系统建设

本文根据 2024 年 5 月 25 日在上海举办的“云原生✖️AI 时代的微服务架构与技术实践”CloudWeGo 技术沙龙上海站活动中,Construct 服务端总监 Jason 的演讲《从 0 到 1 基于 Kitex Istio 的微服务系统建设》整理而来。 在微服务架构的浪潮中,企业面临…