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

论文阅读《PIDNet: A Real-time Semantic Segmentation Network Inspired by PID》

论文地址:https://arxiv.org/pdf/2206.02066.pdf
源码地址:https://github.com/XuJiacong/PIDNet


概述

  针对双分支模型在语义分割任务上直接融合高分辨率的细节信息与低频的上下文信息过程中细节特征会被上下文信息掩盖的问题,提出了一种新的网络架构PIDNet,该模型受启发于PID控制器并包含:空间细节分支、上下文分支与边界注意力分支。通过使用边界注意力来引导空间细节与上下文信息融合。实验结果表明该模型的精度超过了具有相似推理速度的所有模型,在Cityscapes和CamVid数据集上取得了最佳的推理速度和精确度的平衡。文章的主要贡献为:

  • 将PID控制器与CNN相结合,提出一个三分支的网络结构 。
  • 提出Bag fusion模块来权衡空间细节与上下文信息,提高了PIDNet的性能。
  • PIDNet与现有的方法相比,在推理速度与准确度之间取得了最佳的表现:在Cityscapes测试数据集上取得了78.6%的mIOU与93.2 FPS,且PIDNet-L 取得了80.6% 的mIOU的优异表现。

方法

PIDNet: A Novel Three-branch Network

在这里插入图片描述
  PID控制器包含三个部分:比例控制器P,积分控制器I,微分控制器D,如图3所示,PI控制器表达式为:
c o u t [ n ] = k p e [ n ] + k i ∑ i = 0 n e [ i ] (1) c_{out}[n] = k_pe[n]+ k_i\sum_{i=0}^ne[i]\tag{1} cout[n]=kpe[n]+kii=0ne[i](1)
其中 P 控制器关注当前的误差信号, I 控制器关注误差信号的历史累积。由于积分控制器的惯性效应,当误差信号出现相负的变化时,会给系统引入超调量。为此引入D控制器来作为阻尼器用于减少超调量,PI控制器关注于输入信号的低频信息,而对信号的高频信息不敏感,而D控制器关注于输入信号的微分,对信号的高频信息较为敏感,可以减少模型的超调量,双分支网络与之类似,如图3所示,上下文分支通过级联跨步卷积或者池化层来不断从局部到全局聚合语义信息,用于获取像素之间的长距离依赖关系,而空间细节分支保持高分辨率的特征图,用于保存每个像素的语义与位置信息。因此空间细节和上下文分支等价于空间域中的比例和积分控制器。
  为了解决上述问题,本文提出一种辅助的微分分支ADB用于对细节和上下文分支进行补充,在空域上模拟PID控制器,并突出高频语义信息,其中考虑到每个物体内部的语义是一致的,只有边界上的微分非0,所以ADB分支的目标是边界检测。因此,本文简历一种新的三分支实时语义分割框架 PIDNet,模型包含三个分支,如图4所示:

  • 比例分支:用于解析保存高分辨率特征图中的细节信息
  • 积分分支:用于聚合局部与全局之间的长程依赖关系信息——上下文信息。
  • 微分分支:用于提高高频特征以预测边界区域。
      整个模型和DDRNet保持也一直,采用级联残差块作为骨干网络以便以硬件部署。考虑到任务的复杂性,将PID分支的网络深度分别设计为中等、深、浅,以便于搞笑运行。此外,通过模型架构缩放来得到PIDNet-S,PIDNet-M,PIDNet-L。
    在这里插入图片描述

Pag: Learning High-level Semantics Selectively

  pixel attention guided fusion(Pag) 为像素级注意力引导模块,用于将比例分支与微分分支的特征融合,受益于lateral connection技术,不同分支之间的特征图可以进行传递,提高了特征的表达能力。在PIDNet中,积分分支旨在提取精确且丰富的语义信息,对于比例分支和微分分支的的细节解析与边界检测至关重要。因此,将 I 分支作为其余两个分支的补充,为两个分支引入更丰富的信息。此外,与直接将P分支直接提供特征图的方式不一样,作者为P分支引入了Pag来选择性学习任务有关的语义特征,如图5所示:
在这里插入图片描述
  Pag 是基于注意力机制的特征选择模块,将P分支与I分支提供的特征图中对应像素的特征向量分别定义为 v p ⃗ \vec{v_p} vp v i ⃗ \vec{v_i} vi ,则sigmoid函数的输出为:
σ = sigmoid ⁡ ( f p ( v p ⃗ ) ⋅ f i ( v i ⃗ ) ) (2) \sigma = \operatorname{sigmoid}(f_p(\vec{v_p})\cdot f_i (\vec{v_i}))\tag{2} σ=sigmoid(fp(vp )fi(vi ))(2)
其中, σ \sigma σ 表示这两个像素属于同一个对象的可能性,如果 σ \sigma σ 越高,表示 v i ⃗ \vec{v_i} vi 的置信度更好,因为在 I 分支在语义上是准确的,反之亦然。因此,Pag模块的输出为:
O u t p a g ⁡ = σ v i ⃗ + ( 1 − σ ) v p ⃗ (3) \operatorname{Out_{pag}}=\sigma \vec{v_i} + (1-\sigma) \vec{v_p}\tag{3} Outpag=σvi +(1σ)vp (3)

PAPPM: Fast Aggregation of Contexts

在这里插入图片描述
  为了更好地构建全局场景的先验信息,本文提出PAPPM模块用于提取多尺度的特征信息。虽然PPM(pyramid poling module)模块可以很好嵌入上下文信息,但该模块无法并行化,导致模型的计算效率受到限制。为此,本文在PPM模块的基础上进行改进,提出可以并行计算的PPM模块,称之为PAPPM(parallel aggregation PPM)模块,并将其应用于PIDNet-M和PIDNet-S中,提高模型的运行速度。对于PIDNet-L,仍然使用原始的PPM模块,但通道数进行缩减以提高运行速度。

Bag: Balancing the Details and Contexts

在这里插入图片描述
  考虑到ADB所提取的边界特征,文中使用边界注意力机制来引导空间细节信息与上下文信息的融合,实现更好地语义分割效果。尽管上下文分支具有语义精度,但它在边界区域与小物体上的几何细节信息与空间信息丢失。因此,PIDNet使用细节分支来提供空间细节信息,并监督模型在边界区域更加信息细节分支,同时利用上下文特征来填充对象的内部区域,如图7所示:P、I、D分支输出中对应像素为 v p ⃗ 、 v i ⃗ \vec{v_p}、\vec{v_i} vp vi v d ⃗ \vec{v_d} vd
σ = Sigmoid ⁡ ( v d → ) (4) \sigma=\operatorname{Sigmoid}\left(\overrightarrow{v_{d}}\right)\tag{4} σ=Sigmoid(vd )(4)
Out  bag  = f out  ( ( 1 − σ ) ⊗ v i → + σ ⊗ v p → ) (5) \text { Out }_{\text {bag }}=f_{\text {out }}\left((1-\sigma) \otimes \overrightarrow{v_{i}}+\sigma \otimes \overrightarrow{v_{p}}\right) \tag{5}  Out bag =fout ((1σ)vi +σvp )(5)
Out  light  = f p ( ( 1 − σ ) ⊗ v i → + v p → ) + f i ( σ ⊗ v p → + v i → ) (6) \text { Out }_{\text {light }}=f_{p}\left((1-\sigma) \otimes \overrightarrow{v_{i}}+\overrightarrow{v_{p}}\right)+f_{i}\left(\sigma \otimes \overrightarrow{v_{p}}+\overrightarrow{v_{i}}\right)\tag{6}  Out light =fp((1σ)vi +vp )+fi(σvp +vi )(6)
其中 f f f 表示卷积、BN 与ReLU的组合,当 σ > 0.5 \sigma >0.5 σ>0.5 时,模型更加依赖于细节特征,否则更加关注于上下文信息。


损失函数

  损失函数由4个部分组成,在第一个Pag模块的输出添加了语义头生成额外的语义损失 l 0 l_0 l0 用于更好地对整个模型调优。采用加权的二元交叉熵损失 l 1 l_1 l1 来代替 dice loss, 用于处理边界 检测的不平衡问题,使得模型更倾向于使用粗糙的边界来突出边界区域,并增强小对象的特征。 l 2 l_2 l2 l 3 l_3 l3 表示交叉熵损失,本文使用输出的边界头来协调语义分割和边界检测任务,并增强Bag模块的功能,在 l 3 l_3 l3 中使用带有边界感知的CE损失:
L o s s = λ 0 l 0 + λ 1 l 1 + λ 2 l 2 + λ 3 l 3 Loss=\lambda_0l_0 + \lambda_1l_1 + \lambda_2l_2 + \lambda_3l_3 Loss=λ0l0+λ1l1+λ2l2+λ3l3


实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

论文阅读《PIDNet: A Real-time Semantic Segmentation Network Inspired by PID》

论文地址:https://arxiv.org/pdf/2206.02066.pdf 源码地址:https://github.com/XuJiacong/PIDNet 概述 针对双分支模型在语义分割任务上直接融合高分辨率的细节信息与低频的上下文信息过程中细节特征会被上下文信息掩盖的问题,提出了一种新的…...

SOA与中间件、基础件的发展

应运而生的SOA   美国著名的IT市场研究和顾问咨询公司Gartner预测:到2006年,采用面向服务的企业级应用将占全球销售出的所有商业应用产品的80 以上到2008年,SOA将成为绝对主流的软件工程实践方法。近几年全球各大IT巨头纷纷推出自己的面向服务的应用平…...

渗透测试 | 目录扫描

0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…...

基于Springboot的班级综合测评管理系统的设计与实现

摘要 随着互联网技术的高速发展,人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理,交易等,而且过程简单、快捷。同样的,在人们的工作生活中,也就需要…...

比较全的颜色RGB值对应表 8位 16位

实色效果英文名称R.G.B16色实色效果英文名称R.G.B16色Snow255 250 250#FFFAFAPaleTurquoise1187 255 255#BBFFFFGhostWhite248 248 255#F8F8FFPaleTurquoise2174 238 238#AEEEEEWhiteSmoke245 245 245#F5F5F5PaleTurquoise3150 205 205#96CDCDGainsboro220 220 220#DCDCDCPaleT…...

freertos使用基础

FreeRtos快速入门 一,基础知识1.工作方式简介(不深入介绍原理)2,移值3,什么是内存管理 二,API的作用跟使用方法1,创建任务 最近跟着韦东山老师学习 FreeRTOS ,记录下来加…...

Spring Boot引用外部JAR包和将自己的JAR包发布到本地Maven库

Spring Boot引用外部JAR包 Spring Boot 项目可以通过在项目中引入外部 JAR 包来增强功能。以下是使用Spring Boot引用外部JAR包的步骤: 将外部JAR包添加到项目中,可以通过直接将JAR包复制到项目目录下的“lib”目录中,或者使用Maven的方式添…...

微信小程序原生开发功能合集十二:编辑界面的实现

本章实现编辑界面的实现处理,包括各编辑组件的使用及添加数据保存数据流程的实现处理。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.net/course/…...

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记 论文原文链接:https://ieeexplore.ieee.org/abstract/document/9039804 本笔记对部分要点进行了翻译和批注,原文和翻译可参考链接阅读,此处不进行完整翻译。 论文…...

腾讯云镜YunJing——Agent定时任务脚本分析

缘起 如果你有台腾讯云主机,会发现默认有个叫 YunJing 的进程。 把它kill掉后,发现一段时间又出现了 这是为什么捏? 分析定时任务配置文件 通过crontab定时任务目录, 会发现有个叫yunjing的配置文件。 */30 * * * * root /usr/local/qc…...

如何使用java编写差分进化算法

差分进化算法属于一种进化算法,以全局最优性、收敛速度快等特点,得到很多学者的关注,并将其扩展到参数优化、数值优化、工程优化、路径优化、机器学习等一系列研究中。 而差分进化算法的原理即过程又是什么呢? 一、什么是差分进…...

Enterprise:如何在 Elastic 企业搜索引擎中添加对更多语言的支持

作者:Ioana-Alina Tagirta Elastic App Search 中的引擎(engines)使你能够索引文档并提供开箱即用的可调搜索功能。 默认情况下,引擎支持预定义的语言列表。 如果你的语言不在该列表中,此博客将说明如何添加对其他语言…...

SqlServer数据库中文乱码问题解决方法

这个问题在网上找了很多资料都没找到真正解决问题的办法,最终去了官网,终于找到问题的答案了,整理出来做个记录。 问题描述: 项目中遇到一个问题,sqlserver中的数据是ok的,结果保存到mysql中是乱码&#…...

跨域的五种最常见解决方案

在开发Web应用程序时,一个常见的问题是如何处理跨域请求。跨域请求是指来自不同源的请求,这些请求可能会受到浏览器的限制而不能被正常处理。在这篇文章中,我们将探讨跨域请求的常见解决方案,并了解每种解决方案的优缺点。 一、J…...

作为一个C++新手,我感兴趣的C++开源项目

2023年4月30日,周日晚上。 昨天完成了一个C项目后,想再开始一个C项目,但不知道做什么,于是决定看看有什么好的C开源项目。 今晚在网上逛了一圈后,发现了好多有趣的C开源项目。 参考文章: GitHub Top 10 …...

杭州云降价只是敲锣

1. 陈年旧事 大约是2015年,某友商宣布存储免费,当时我们公司如临大敌,我也被拽过去开会。后来我们才发现……对方的套路是: 文件存储原始收费是一毛钱。文档存储免费的条件是,需要客户当月有一次下载文件的行为才能免费…...

RabbitMQ笔记

一、MQ与RabbitMQ概述 1. MQ简述 MQ(Message Queue)消息队列,是基础数据结构中 “先进先出” 的一种数据结构,也是在消息的传输过程中保存消息的容器(中间件),多用于分布式系统之间进行通信。 …...

【Latex】如何在表格中使用footnote

Latex table cell中是不支持\footnote的。 如果你在table中用\footnote,那么要么这个脚注根本不显示出来,要么就会出现计数出错等问题。总之非常麻烦。 解决策略 笔者在搜集大量资料后,也并没有找到一种“完美的”解决方案。我们只能用一些…...

设计师常用的素材网站有哪个推荐

即时设计资源社区聚集了许多优秀的创作者,分享了大量的优质资源。 目前,社区资源数量已达到10000,包含图标、插画、原型、设计作品等多个素材类别。这些优秀的设计作品降低了设计师思维的成本,成为设计师的宝藏材料网站。 即时设…...

jmeter常用的命令行参数有哪些?常用的jmeter命令行如何编写

目录:导读 引言 一、JMete执行方式 二、JMete非GUI运行优点 三、jmeter非GUI运行参数 四、jmeter非GUI运行命令 4.1非GUI基本命令格式: 4.2非GUI并生成html报告基本命令格式 结语 引言 你是否在使用JMeter进行负载测试时感到手忙脚乱&#xff1…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

GeoServer发布PostgreSQL图层后WFS查询无主键字段

在使用 GeoServer&#xff08;版本 2.22.2&#xff09; 发布 PostgreSQL&#xff08;PostGIS&#xff09;中的表为地图服务时&#xff0c;常常会遇到一个小问题&#xff1a; WFS 查询中&#xff0c;主键字段&#xff08;如 id&#xff09;莫名其妙地消失了&#xff01; 即使你在…...

Jmeter(四) - 如何在jmeter中创建网络测试计划

1.简介 如何创建基本的 测试计划来测试网站。您将创建五个用户&#xff0c;这些用户将请求发送到JMeter网站上的两个页面。另外&#xff0c;您将告诉用户两次运行测试。 因此&#xff0c;请求总数为&#xff08;5个用户&#xff09;x&#xff08;2个请求&#xff09;x&#xff…...

Linux——TCP和UDP

一、TCP协议 1.特点 TCP提供的是面向连接、可靠的、字节流服务。 2.编程流程 &#xff08;1&#xff09;服务器端的编程流程 ①socket() 方法创建套接字 ②bind()方法指定套接字使用的IP地址和端口。 ③listen()方法用来创建监听队列。 ④accept()方法处理客户端的连接…...

spring中的@KafkaListener 注解详解

KafkaListener 是 Spring Kafka 提供的一个核心注解&#xff0c;用于标记一个方法作为 Kafka 消息的消费者。下面是对该注解的详细解析&#xff1a; 基本用法 KafkaListener(topics "myTopic", groupId "myGroup") public void listen(String message)…...

NoSQL——Redis配置与优化

目录 关系型&非关系型数据库 一、核心原理对比‌ ‌二、核心特性对比‌ ‌三、关键区别剖析‌ ‌四、典型产品示例‌ ‌总结‌ Redis Redis核心原理 核心特性 技术意义 配置文件解析 1. 基础配置 2. 持久化配置 3. 内存管理 4. 高可用配置 5. 性能调优 6.…...