《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利用边界预测来平衡细节和上下文信息,边界周围的精确注释(通常需要大量时间)是首选以获得更好的性能。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快储存,分布式文件系统,对象储存

Ceph块存储 镜像快照 快照可以保存某一时间点时的状态数据快照是映像在特定时间点的只读逻辑副本希望回到以前的一个状态,可以恢复快照使用镜像、快照综合示例 rbd create img1 --size 10G 创建镜像rbd ls 查看镜像 rbd info img1 #查看…

Win32消息机制原理及消息运转

一.消息机制原理 1.消息类型: WIndows定义的一系列WM_XXX开头的,用来表示键盘按键,鼠标点击,窗口变化,用户自定义等各种消息; 2.消息队列: Windows为每一个正在运行的程序维护一个消息队列应用程序的消…

让DroidVNC-NG支持中文输入

DroidVNC-NG支持控制端输入内容,但是仅支持英文字符,如果需要控制输入法软键盘输入中文的话就没办法了,经过摸索找到了解决办法。 这个解决办法有个条件就是让DroidVNC-NG成为系统级应用(这个条件比较苛刻)&#xff…

【Linux】性能分析器 perf 详解(三)

上一篇:【Linux】性能分析器 perf 详解(二) 1、perf kmem 1.1 简介 kmem 用于跟踪/测量内核内存属性的工具,如分配、释放、碎片率等。可以帮助开发者和系统管理员理解内核内存的分配和释放模式,从而诊断内存泄漏、过度分配等问题。 功能: 跟踪内存分配和释放:监控内…

AI的赚钱风向,彻底变了!

从2023年3月起,生成式AI技术的浪潮席卷全球,让不少人开始焦虑中国AI技术与美国的差距。然而,最近的趋势显示,AI创业的盈利模式已经发生了根本性的变化。今年,我们见证了AIGC(人工智能生成内容)企…

ExtractAItoTEXT 提取Adobe illustrator AI文件中的文字到文本文件翻译并写回到Adobe illustrator AI文件

Extract Text from Adobe illustrator to text for translate and write back to Adobe illustrator after translate in text file. Originally script from marceloliaohotmail.com during his work in SDL. Updated by me. 从Adobe illustrator中提取文本以进行翻译&#x…

【JavaScript】一键入门

目录 一、JS起源 二、JS特点 三、JS组成部分 四、JS引入方式 一、JS起源 Java Script是由网景公司的Live Script发展而来的一种运行在客户端浏览器上的脚本语言,可以实现网页如文本内容、数据动态变化和动画特效等即浏览器与用户交互的这种体验。 二、JS特点 …

当了面试官才知道:做好这3点,面试成功率至少提高50%

关于辉哥: 资深IT从业者, 曾就职于阿里、腾讯、美团、中信科等互联网公司和央企; 两岁小男孩的父亲。 不定期分享职场 | 婚姻 | 育儿 | 个人成长心得体会 关注我,一起学习和成长。 最近作为公司社招面…

【chatgpt】遗传编程(Genetic Programming, GP)和编译原理的相似之处

遗传编程(Genetic Programming, GP)和编译原理之间有一些相似之处,主要体现在以下几个方面: 语法树结构: GP:使用语法树(Parse Trees)来表示程序,其中节点代表操作符或函…

昇思25天学习打卡营第9天|使用静态图加速

一、简介: AI编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。两种运行模式的详细介绍如下: (1)动态图: …

JS面试题2——判断变量是不是数组有哪些方法

1. isArray var arr [1,2,3]; console.log( Array.isArray( arr ) ); <script> var arr [1,2,3]; var str 你好; console.log( Array.isArray( arr ) ); // true console.log( Array.isArray( str ) ); // false </script> 2. instanceof var arr [1,2,3]; co…

QQ等级评估源码+软件

今天&#xff0c;我将和大家探讨一个与直播、撸礼物相关的主题&#xff0c;它涉及到的是一种特殊的软件及其源码——QQ等级评估工具。在我们的生活中&#xff0c;直播已经成为了一种越来越流行的娱乐方式。不论是音乐会、电子竞技&#xff0c;还是日常生活分享&#xff0c;你都…

7、广告-流量对接

在程序化广告中&#xff0c;技术的应用至关重要&#xff0c;尤其是流量对接的过程。本章详细介绍DSP与AdX/SSP对接、Trading Desk对接DSP以及PDB对接的技术细节和流程。 流量对接&#xff08;Traffic Integration&#xff09; 流量对接是程序化广告投放中至关重要的一环。它包…

ubuntu22.04 怎么查看visio 的文件

要在Ubuntu 22.04上查看Visio文件&#xff0c;可以使用以下方法之一&#xff1a; 1. 使用LibreOffice Draw LibreOffice Draw可以打开Microsoft Visio文件&#xff08;.vsd和.vsdx&#xff09;。默认情况下&#xff0c;LibreOffice可能已经安装在您的Ubuntu系统上。如果没有&…

基于PHP的初中数学题库管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的初中数学题库管理系统 一 介绍 此初中数学题库管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;系统角色分为学生&#xff0c;教师和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlphpstudyvscode 二 功能 …

Unity:使用Texture2D动态创建的图像无法正常显示 / 修改图像后未生效

开发中遇到需要动态绘制图像的需求&#xff0c;前后文代码如下所示&#xff1a; Texture2D newImageTexture new Texture2D(width, height); Color32[] newImagePixels new Color32[height * width];for (int y 0; y < height ; y) {for (int x 0; x < width; x){if…

flask的locked_cached_property

下面是一个关于 locked_cached_property 装饰器的详细教程。这个装饰器将一个方法转换为一个惰性属性&#xff0c;在第一次访问时计算其值&#xff0c;并在随后的访问中缓存该值。同时&#xff0c;它在多线程环境中是线程安全的。 教程&#xff1a;理解和使用 locked_cached_p…

多选项卡的shiny

下面是一个包含多个选项卡的 Shiny 应用程序示例代码。在这个例子中&#xff0c;我们创建了一个包含三个选项卡的 Shiny 应用程序&#xff0c;每个选项卡中都有不同的内容。 library(shiny)# Define UI ui <- fluidPage(titlePanel("多选项卡 Shiny 应用"),tabse…

【深度学习】python之人工智能应用篇--跨模态生成技术

跨模态生成技术概述 跨模态生成技术是一种将不同模态的数据&#xff08;如文本、图像、音频、视频等&#xff09;进行融合和转换的技术。其目标是通过将一个模态的数据作为输入&#xff0c;生成与之对应的另一个模态的输出。这种技术对于突破单一模态的局限性&#xff0c;提高…

【图书推荐】CPython设计与实现“适合所有Python工程师阅读的书籍”

目录 一、图书推荐 |【CPython设计与实现】 1.1、书籍介绍 1.2、内容简介 1.3、适合哪些人阅读 1.4、作者译者简介 1.5、购买链接 一、图书推荐 |【CPython设计与实现】 "深入Python核心&#xff0c;揭秘CPython的设计智慧&#xff01;&#x1f4d6; 对于每一位热衷…