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

news2024/9/9 4:20:54

期刊: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.coloradmin.cn/o/1870618.html

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

相关文章

Nuxt3 的生命周期和钩子函数(三)

title: Nuxt3 的生命周期和钩子函数(三) date: 2024/6/27 updated: 2024/6/27 author: cmdragon excerpt: 摘要:概述了Nuxt3的关键生命周期钩子用途,如page:finish用于页面加载后处理,page:transition:finish处理过…

MySQL数据库简介和安装

文章目录 一、数据库原理目前情况数据库的发展史RDBMS关系型数据库关系型数据库理论 二、MySQL历史发展历程关系型数据库和非关系型数据库 三、安装mysql及优化yum安装编译安装mysql二进制安装优化操作 四、 安装mycli插件客户端工具 一、数据库原理 目前情况 我们正处于一个…

十三、Maven(1)

🌻🌻目录 一、maven价绍二、maven的功能1、项目自动化构建2、管理jar、war包3、实现项目结构设计 三、maven安装1、maven的安装环境需要jdk2、Maven的安装路径中不能出现中文和空格3、压缩包解压即可4、配置环境变量 四、maven的仓库1. Maven仓库配置2. …

AI提示词投喂新手教程(一):基础概念和工具

对于很多已经熟悉提示词工程(prompt engineering)的朋友来说,以下内容可能已经是老生常谈了。然而,仔细搜索和翻阅了星球上关于提示词的新手教程,发现对新手并不是很友好,内容零散且缺乏系统性。为此&#…

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

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

Android 通知组

一. 通知组简介 从 Android 7.0(API 级别 24)开始,您可以在一个组中显示相关通知。如下所示: 图 1. 收起(顶部)和展开(底部)的通知组。 注意 :如果应用发出 4 条或更多条通知且未…

【笔记】HashMap的头插死循环问题

HashMap头插死循环是指在JDK1.7中,多线程环境下,HashMap进行扩容时由于多个线程一起执行扩容,可能会导致某一结点被错误插入头部并形成一个循环链表。 发生死循环的源码如下: // hashmap由数组链表构成 void transfer(Entry[] ne…

【Micro-ROS学习】

Micro-ROS 是专为 ROS 2 设计的,它允许在微控制器(microcontrollers)上实现ROS 2的功能。Micro-ROS 从 ROS 2 架构优化而来,目的是让那些资源有限的嵌入式设备也能够接入ROS 2生态系统,享受ROS 2带来的标准化通信、模块…

放烟花短视频素材去哪里找?去哪里下载?烟花素材网分享

在当代社会,短视频凭借其独有的魅力成为大众传递情感、记录生活、分享快乐的新兴方式。特别是在庆祝节日和特殊时刻时,烟花的绚丽效果常常被用来吸引观众的目光,成为视频作品中的亮点。然而,对于短视频制作者来说,寻找…

【Web3】Web3.js 启动!并解决Web3 is not a constructor报错

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本节教大家如何启动Web3.js 目录 Web3 启动! 于是很愉快的报错 创建实例! 出来了 Web3:模块…

【工程实践】MQ中rebalance机制

问题起因,有些分区积压严重,有些分区又是空闲。之前了解过rebalance机制,想知道在这种情况下rebalance机制为什么不触发,从而将积压的数据匀给空闲的分区。 问了gpt,“mq的rebalance功能能否保证每个分区在同一时间段…

小型智能驱鸟器,建筑驱鸟专用

随着城市化进程的加快,鸟类与人类的居住空间逐渐交织重合,鸟类对建筑物的侵扰问题也愈发凸显。家庭庭院、住宅窗前、屋顶,甚至那些承载着历史与文化底蕴的名胜古迹和精美雕像,都时常受到鸟粪的污染。鸟粪具有腐蚀性且很难清理&…

【C++】STL-priority_queue

目录 1、priority_queue的使用 2、实现没有仿函数的优先级队列 3、实现有仿函数的优先级队列 3.1 仿函数 3.2 真正的优先级队列 1、priority_queue的使用 priority_queue是优先级队列,是一个容器适配器,不满足先进先出的特点,而是优先级高…

达梦数据库的系统视图v$database

达梦数据库的系统视图v$database 基础信息 OS版本: Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本: DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-20081在达梦数据库(Dameng Database&#xf…

前端基础--Vue2

前端技术发展史(了解) 1.前端历史 1.1.静态网页 1990 html 1.2.异步刷新-操作dom 1995 javascript 1.3.动态网站 Asp/jsp(java),php等,后台臃肿 1.4.Ajax成为主流 异步请求 1.5.Html5 被认为是互联网的核心技术之一。HTML产生于19…

2021年12月电子学会青少年软件编程 中小学生Python编程等级考试三级真题解析(选择题)

2021年12月Python编程等级考试三级真题解析 选择题(共25题,每题2分,共50分) 1、小明在学习计算机时,学习到了一个十六进制数101,这个十六进制数对应的十进制数的数值是 A、65 B、66 C、256 D、257 答案&#xff…

算法08 广/宽度优先搜索及相关问题详解

这是《C算法宝典》算法篇的第08节文章啦~ 如果你之前没有太多C基础,请点击👉专栏:C语法入门,如果你C语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏&#xff…

【LeetCode】八、堆的使用:第K个最大元素 + 前K和高频单词

文章目录 1、Java中的堆结构2、leetcode215:数组中的第K个最大元素3、leetcode692:前K个高频单词 1、Java中的堆结构 PriorityQueue类取堆顶元素删除堆顶元素堆的元素个数遍历堆 2、leetcode215:数组中的第K个最大元素 这题应该快排来解&…

2024年6月27日 (周四) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键,实现一键唤起、一键隐藏的 Windows 工具,并且支持窗口动态绑定快捷键(无需设置自动实现)。 喜马拉雅下载工具: 字面意思 Steam国产“类8番”游戏《永恒逃脱:暗影城堡》…

Elasticsearch8.x聚合查询全面指南:从理论到实战

聚合查询的概念 聚合查询(Aggregation Queries)是Elasticsearch中用于数据汇总和分析的查询类型。它不同于普通的查询,而是用于执行各种聚合操作,如计数、求和、平均值、最小值、最大值、分组等。 聚合查询的分类 分桶聚合&…