语义分割之RTFormer介绍

news2025/2/21 23:05:47

语义分割之RTFormer介绍

论文链接:https://arxiv.org/abs/2210.07124
代码地址:https://github.com/PaddlePaddle/PaddleSeg

ViT以来,Transformer作为特征提取器在语义分割领域证明了自己,但是由于Transformer的核心 muti-self-attention 复杂度多高,因此在高实时性要求的场合,一般还是采用基于CNN的方案,百度的RTFormer 则提出了一套基于Transform的高实时性语义分割方案。

在这里插入图片描述
先贴效果,RTformer相比较去年的DDRNet在推理时间相似的条件下有8个点以上的提升,可以说非常惊人.

RTFormer的核心还是希望能够基于Transform高特征提取能力的基础之上,提升实时性,实际上在之前很多文章都提出过类似的尝试,也取得了不错的效果比如SegFormer(self-attention的时候加系数减少矩阵乘法时的计算量,然后解码头直接用FFN),HRFormer等,但是self-attention的复杂度本身还是非常高,为N2C复杂度,同时显存占用过高。效率方面还是不如CNN系列算法。

那么作者主要认为两个原因:

  1. 目前GPU设备对于Transform的支持不友好。
  2. 高分辨率特征图做MSA效果不理想,高分辨率特征的单个特征向量的感受野非常有限(这点感觉有点勉强,如果不考虑实时性直接原图做MSA感受野应该是非常大的。)

解决方案:

RTFormer block

在这里插入图片描述
上图给出了本文所提RTFormer模块示意图,它是一种对偶分辨率模块,它包含两种类型注意力模块。在低分辨率分支,作者采用了GPU友好的注意力模块以捕获高层全局上下文信息,而在高分辨率分支,作者则引入了跨分辨率注意力机制对高层全局上下文信息进行传播扩散,也就是将两个分辨率的特征通过注意力模块进行聚合。

先说第一个:GPU友好的注意力模块(GPU-Friendly Attention)
在这里插入图片描述GPU-Friendly Attention模块结构如上图所示,其中K矩阵和V矩阵为可学习矩阵。
计算公式如下:
在这里插入图片描述

这个点其实很有意思,首先可以看标准MSA的公式:
在这里插入图片描述
输入为FeatureMap,分别通过3个矩阵计算后得到QKV矩阵,然后Q和K的转置矩阵相乘后得到相关性矩阵,除以根号Dk(维度)后softmax计算后归一化到0-1之间得到注意力矩阵,与V矩阵相乘进行加权求和得到最终结果。

也就是说标准的self-attention是有2次矩阵乘法。在输入时通过通道切片得到多个头计算后再cat到一起就是所谓的多头。

而GPU-Friendly Attention(GFA)其实就感觉取巧,因为GPU的矩阵计算很快,GPA不切片然后直接分别与K矩阵计算后求attention。通过这样的方式其实是简化了操作,同时很好地利用了GPU大型矩阵并行速度快的优势(取消多头的结果是精度下降,实际上本文基本上没有和主流的transform算法做比较,只和轻量实时比较)。

Cross-resolution Attention :其实本质上还是借鉴HRnet开始的多分支结构。在不同分支独立执行GAF处理,然后再进行信息交互,高分辨分支由于分辨率太高,矩阵乘法操作耗时过久,为了保证实时性,所以在低分辨率分支进行GFA计算,为更有效的获得全局上下文信息,作者提出了跨分辨率注意力,它可以充分利用从低分辨率分支学到的高层语义信息。该过程可描述如下:
在这里插入图片描述
实验中只在注意图的最后一个轴上采用softmax进行归一化,这里同样也取消了多头

Feed Forward Network: SegFormer与HRFormer中的FFN由两个MLP层与深度卷积构成。GPU计算FFN时速度起不来。为了提升推理速度,作者在FFN中采用了两个卷积且不进行通道维度扩展。

网络结构如下
在这里插入图片描述
可以看出类似DDRNet也是双分支结构,开始通过几个ConvBlock和残差模块聚合特征,然后通过RTFormer block进行特征聚合,最后再通过DAPPM进一步提取多尺度特征,此时输出的是1/8倍size。然后对每个像素点分类。在后三个阶段,高分辨率特征的stride保持为8不变,而低分辨率的stride则分别为16、32、32。

DPPM结构出自DDRNet,DDRNet通过简化HRnet网状结构提出的的双分支结构+DPPM模块在保证分割精度的同时拿到了非常理想的效果,具体的类似Res2Net的Res2级联结构,DPPM通过将FeatureMap进行拆分级联,能够很有效的提取细粒度特征,同时由于做了split所以参数控制的非常好,不会额外增加过多参数。保证了实时性。
在这里插入图片描述

公开数据集的表现:

ADE20K表现:
在这里插入图片描述
虽然Flops比不上Segformer,但是在2080ti上实时性还是比Segformer强很多。

Cityscapes表现
在这里插入图片描述
精度干脆不和Segformer或者TopFormer这类比了。。。。相比去年以前大多数网络效果都好很多。

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

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

相关文章

苹果电脑提高工作效率alfred 5中文

Mac电脑上哪个效率工具好用呢?alfred 5是最强大的效率启动工具之一,丰富的插件资源、简单的上手成本,会是你提高 Mac 使用效率的得力助手。可通过热键,关键字,文本扩展等提高您的效率。搜索您的Mac和网络,并…

Sprint产品待办列表的优先级要怎么排?

在梳理产品待办事项列表的过程中,产品负责人需要先做优先级排列,保证我们在一定的时间盒内能够交付需要优先级最高、最具价值的用户故事。 那这个用户故事的优先级要怎么排列,我们怎样选择用户故事的实现顺序? 有一个实践可以推…

力扣(LeetCode)816. 模糊坐标(C++)

模拟 一次遍历 sss ,尝试对遍历到的位置进行分割。对分割点左右字符串 ltltlt , rtrtrt 分别构造子串。 构造子串的规则: 整数不以 000 开头,(特例)单独的 000 可以作为整数。小数不以 000 结尾。小数的整数位是 000 ,则整数位不能组成新数…

怎么给PDF添加页面?推荐三个PDF如何插入页面小妙招

在我们生活中,平时接触PDF文件可能没有接触Word文件那么的多。像处理PDF文件这种问题上并没有Word文件那么的容易,毕竟PDF它不易进行内容编辑。这时候如果有小伙伴需要对PDF文件进行修改或者进行插入页面,但是PDF文件是无法直接进行修改的。那…

做期货的阶段(做期货的几个阶段)

如何自己做好期货 学习交易大致有三阶段:直观直觉阶段,看到涨就做多,看到跌就做空,结果半赢半输;学习积累的阶段,看到涨跌不觉涨跌,想得很多,结果赢少赔多;领悟后再次直…

软件架构师考试的真实感受

近1个半月,因准备了软件架构师的考试,停了BLOG,今天想写点东西作为阶段性的沉淀。 节奏紧 和软设比起来,最直观的感受就是节奏紧,软设上午通常能够提前一个小时考完,加上下午2点才开考,中间有…

Java UML 类图

继承 继承:重用父类的某些功能 缺点:强耦合 耦合:修改一方,会影响另一方 应用:是否需要“向上转型” 接口 行为的抽象、可跨越不同的类 不包含实现实现类需完全实现可实现多个接口 是一种“自顶向下”的设计&…

C++多态(1)

目录1. 多态的概念2. 多态的定义和实现2.1 多态的构成条件2.1.1 重写2.2.2 指针或者引用2.2 虚函数重写的两个例外2.3 多态里的一个不规范的地方2.4 重载、重写(覆盖)、隐藏(重定义)的对比3. C11 override 和 final1. 多态的概念 …

QSS编辑器QssEditor之三:Ribbon控件与换肤

一.Ribbon控件 Ribbon控件即Office样式UI,Ribbon控件有许多开源实现,例如:Qt优秀开源项目之三:SARibbon SARibbon功能强大,但以学习为目的的话,我们可以自己去实现一个简单的。基本思路是自定义QTabWidget,然后通过QSS调整样式。 如上图所示,我们可以实现一个类QHRi…

IP数据报首部字段、TCP报文段首部字段

文章目录 IP数据报首部字段IP数据报格式TCP报文段首部字段IP数据报首部字段 首部字段功能1.版本是IPv4还是IPv62.首部长度IP数据报首部的长度3.服务类型4.总长度IP数据报的总长度。若总长度>该网段的MTU,则需要分片。分片后IP数据报的总长度必然发生改变。5.标识保证IP分组…

C++--模板

目录 泛型编程 函数模板 函数模板概念 函数模板格式 函数模板的原理 函数模板的实例化 模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 非类型模板参数 模板的特化 概念 函数模板特化 类模板特化 泛型编程 不再是针对某种类型,而是能适…

[python]用flask框架搭建微信公众号的后台

用flask框架搭建微信公众号的后台 最近用python写了点爬虫,为了要让爬取的数据能够随时显示在我眼前,并实时根据我的指令返回数据。于是采用微信公众号做这个显示窗口,既能发送指令也能显示简单的相关数据。 准备工具 python3.x环境 pycharm…

vue3与vue2的不同内容

一、main.js入口文件的不同 // 引入的不再是构造函数,引入了一个名为creacteApp的工厂函数 import { createApp } from vue import ./style.css import App from ./App.vue // 创建应用示例对象--->app const app createApp(App) //把组件APP挂载到#app节点上 …

疫情可视化(后续)

前言 这是疫情可视化最开始的文章,有需要了解的可前往查看:https://blog.csdn.net/xi1213/article/details/126824752。 本来说有时间就把这个项目完结了的,结果后面一直有事拖着,直到现在十一月份了才搞完。老样子,先…

拓端tecdat|R语言代做时间序列和ARIMA模型预测拖拉机销售的制造案例研究

全文链接:http://tecdat.cn/?p5421 原文出处:拓端数据部落公众号 相关视频:在Python和R语言中建立EWMA,ARIMA模型预测时间序列 本文是我们通过时间序列和ARIMA模型预测拖拉机销售的制造案例研究示例的延续。您可以在以下链接中找…

2023第二届中国绿色包装创新峰会|低碳与数字化时代的绿色包装

峰会背景 随着中国市场包装使用量的激增,中国已成为全球最大的包装市场,环境中废弃包装所导致的生态负担也同步加剧。但随着消费者可持续发展意识的显著增强,企业环保意识的提升以及国家强制性环保政策的出台,包装可持续发展变得…

初识C++(三)

概述:本篇主要讲述“引用“ 分别就引用的概念、引用特性、引用的应用场景、以及常引用展开描述。后续会补充引用的底层原理,敬请期待。 目录 什么是引用? 引用的三个特性 引用的应用 引用做参数 引用做返回值 常引用 总结 什么是引用&a…

计算机毕业设计(附源码)python智慧停车系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

纸牌游戏设计制作《摸鱼2》(C语言)

纸牌游戏设计制作《摸鱼2》 此游戏设计属于简单的纸牌游戏,是儿童益智类游戏。适用于儿童的认知教育。 游戏规则极为简单,设置纸牌在界面上显示牌背的盲牌形式,点击牌背显示牌面找出相同的牌配对消牌。 这设置主要培养儿童的心理素质&#x…

Arduino WIFI智能小车 无线视频遥控小车(论文+程序+原理图+驱动+安装手册等)

目录 一、项目产生的背景分析 2 1.1项目想法 2 1.2用户将如何从产品中获益 2-3 二、方案设计 3 2.1小车整体系统 2-3 2.2小车部件介绍 3-5 三、小车组装 6 3.1小车配件购置 6 3.2小车部件组装 7-10 3.3小车程序代码的调试 11 3.3.1小车驱动安装 11 3.3.2小车编程环境&#xff0…