《Mask2Former》算法详解

文章地址:《Masked-attention Mask Transformer for Universal Image Segmentation》
代码地址:https://github.com/facebookresearch/Mask2Former

文章为发表在CVPR2022的一篇文章。从名字可以看出文章像提出一个可以统一处理各种分割任务(全景分割、语义分割、实例分割)的网络。

这里稍微通俗的解释一下上述的几个分割任务:
全景分割:分割的结果有背景概念(天空、大海),有实例概念(person1、person2、person2)。
语义分割:只有类别概念,比如上述的person1、person2、person3都属于people这一类,不区分每个实例。且包含背景类别的识别。
实例分割:只有前景类别的概念,例如只有人、猫、狗等类别,没有天空大海这一类背景类别。且前景类别是有实例概念的。

更详细一点的说,在coco数据集里面定义,背景类称为stuff类别,这一类类别是没有边界的概念,例如一张图只有一片天空。前景类别称为things类别。

本文提出的网络就是可以一次性处理上述几个分割任务,而不用向之前的网络,一个任务去处理特定的一种任务。如下图所示

上图不仅可以看出不同任务的示意,还可以看出文章的网络在各个任务上表现都是SOTA的。

一、网络结构

文章采用的网络架构与MaskFormer 一致的。该类架构由三部分组成,一个backbone用于提取图片的特征,一个pixel decoder用于将主干网络提前的特征进行上采样生成高分辨率的图像特征,一个transformer decoder用于根据图像特征来处理object queries。最终网络根据pixel decoder输出的高分辨率的图像特征和transformer decoder输出的object queries生成最终的预测mask。
该结构能够很好的处理各种分割任务,原因就是输出对每个mask预测一个类别,这样不同的任务只是定义的不同类别而已。

具体的Mask2Former的示意图如下图所示,左边为整体的框架,右边为Transformer decoder with masked attention结构:

1.1 Transformer decoder with masked attention

有文章研究全局的特征信息对图像分割任务是非常重要的,但是也有文章证明对于transformer-based的结构来说,全局的特征信息会导致cross-attention收敛变慢,因为cross-attention需要很多轮的训练才能关注到需要关注的对应的物体区域上。

文章假设局部特征已经可以很好的去更新query feature了,而全局特征可以通过self-attention结构来学习。基于这假设,文章提出了masked attetion结构。

标准的cross-attetion结构用公式表示如下所示:
X l = s o f t m a x ( Q l K l T ) V l + X l − 1 X_l = softmax(Q_lK^T_l)V_l + X_{l-1} Xl=softmax(QlKlT)Vl+Xl1
其中,l表示当前层的索引, X l ∈ R N × C X_l\in R^{N\times C} XlRN×C表示l层的N个C维的query features,而 Q l = f Q ( X l − 1 ) ∈ R N × C Q_l=f_{Q}(X_{l-1})\in R^{N\times C} Ql=fQ(Xl1)RN×C. X 0 X_0 X0表示Transformer decoder的输入。 K l , V l ∈ R H l W l × C K_l,V_l\in R^{H_l W_l \times C} Kl,VlRHlWl×C为图像特征经过 f K ( ⋅ ) f_K({\cdot}) fK() f V ( ⋅ ) f_V({\cdot}) fV()变化后的结果,其中 H l H_l Hl W l W_l Wl是图像特征的分辨率。上述的 f Q f_Q fQ f K f_K fK f V f_V fV都是线性变换层。

本文提出的masked attetion模块,用公式表示如下:
X l = s o f t m a x ( M l − 1 + Q l K l T ) V l + X l − 1 X_l = softmax(M_{l-1}+Q_lK^T_l)V_l + X_{l-1} Xl=softmax(Ml1+QlKlT)Vl+Xl1
其中attetion mask M_{l-1}中位置(x,y)的值用如下公式计算得到:
M l − 1 ( x , y ) = { 0 i f M l − 1 ( x , y ) = 1 − ∞ o t h e r w i s e M_{l-1}(x, y)=\left\{ \begin{aligned} 0 \quad if M_{l-1}(x,y) = 1\\ -\infty \quad otherwise \end{aligned} \right. Ml1(x,y)={0ifMl1(x,y)=1otherwise
这里 M l − 1 ∈ 0 , 1 N × H l W l M_{l-1}\in {0, 1}^{N\times H_l W_l} Ml10,1N×HlWl是根据阈值为0.5对Transformer decoder l-1层的输出进行resize后的二值化的结果。 resize后的分辨率大小和 K l K_l Kl一样。 M 0 M_0 M0是通过 X 0 X_0 X0二值化得到的。

1.2 High-resolution features

高分辨率的特征能够改善模型的效果,但是也每次都采用高分辨率的特征对于计算量要求也非常大。为了提升效率,文章输入给Transformer decoder层的特征采用不同分辨率的图片特征。
更详细说明,pixel decoder输出的图像特征大小分别为原图的1/32, 1/16, 1/8。对于每个分辨率的图片,在给到Transformer decoder之前,会加入sinusoidal positional embedding e p o s ∈ R H l W l × C e_{pos}\in R^{H_l W_l \times C} eposRHlWl×C和一个可学习的scale-level embedding e l v l ∈ R 1 × C e_{lvl}\in R^{1\times C} elvlR1×C。Transformer decoder对这种三层Transformer decoder结构重复L次。

1.3 Optimization improvements

这里针对普通的Transformer decoder layer进行改进。普通的Transformer decoder layer处理query features的顺序为self-attention module, cross-attention module,feed-forward network。query feature( X 0 X_0 X0)是初始化为0的特征。dropout用在residual connections和attention maps结构中。

文章对上述三点进行改进,文章认为self-attention只有图片特征的输入,没啥信息可以学习,为了提高计算效率,将self-attention、cross-attention调换了顺序。query feature( X 0 X_0 X0)变成可学习的特征。去除dropout。

二、提升训练效率

因为对高分辨率的mask进行预测,对显存的消耗很大,例如上一版的MaskFormer一个图片训练需要32G的显存。
受到PoinRend和Implicit PointRend文章的启发,训练分割任务的网络时,不需要计算整个mask的loss,只需要计算K个随机采样点的loss即可。
在训练时,有matching-loss(Transformer结构预测类别时特有的匹配loss)和final loss(匹配好后,计算预测结果和gt的loss)。
在计算matching-loss时,采用均匀采样采相同的K个点计算loss。
在计算final loss时,采用importance sampling,给每个不同的预测结果采不同的K个点进行计算loss。
这样的loss计算方式可以减少三倍的显存占用量,从而提高网络训练效率。

三、网络具体实现

  1. Pixel decoder. 采用multi-scale deformable attention(MSDeformAttn)做为pixel decoder结构,采用6层MSDeformAttn处理1/8,1/16,1/32大小的图片feature,并用一个上采样生成1/4的图片feature。
  2. Transformer decoder. L=3(共9层),100个queries(N=100), 在Transformer decoder layer的每个中间层度有一个辅助loss(9层的输出都有一个辅助loss来指导学习1.1中的M)
  3. Loss weights. 对于mask loss,文中采用binary cross-entropy loss和 dice loss一起,即 L m a s k = λ c e L c e + λ d i c e L d i c e L_{mask}=\lambda_{ce}L_{ce}+\lambda_{dice}L_{dice} Lmask=λceLce+λdiceLdice,其中 λ c e = 5.0 , λ d i c e = 5.0 \lambda_{ce}=5.0, \lambda_{dice}=5.0 λce=5.0,λdice=5.0. final loss是mask loss和classfication loss一起计算,即 L m a s k + λ c l s L c l s L_{mask}+\lambda_{cls}L_{cls} Lmask+λclsLcls,其中当有匹配的gt时 λ c l s = 2.0 \lambda_{cls}=2.0 λcls=2.0,当匹配的为no object时, λ c l s = 0.1 \lambda_{cls}=0.1 λcls=0.1
  4. post-processing. 对于全景和语义分割来说,后处理方式同MaskFormer,输出对应的mask以及其对应的类别。对于实例分割,为了输出对应实例的分割,采用类别的分数和mask的平均分数相乘得到每个实例的分数。

到这里该算法的基本内容都介绍完了,具体的训练参数还有训练数据以及数据结果可以查看文章找到更详细的信息。

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

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

相关文章

C++ | Date 日期类详解

目录 简介 日期类总代码 | Date 类的定义 & 构造 & Print 类的定义 构造函数 & Print 比较类&#xff0c;如<、>、<...... 值加减类&#xff0c;如、-、、-...... 加减类具体分类 判断某个月有多少天 GetMonthDay 日期类 / &#xff08;- / -&…

随便聊一下 显控科技 控制屏 通过 RS485 接口 上位机 通讯 说明

系统搭建&#xff1a; 1、自己研发的一个小系统&#xff08;采集信号&#xff0c;将采集的信号数字化&#xff09;通过COM口&#xff0c;连接显控屏 COM3 口采用 485 协议送到显控屏&#xff08;显控科技&#xff09;的显示屏展示出来&#xff09;。 2、显控屏 将 展示的数据…

Jenkins(超详细的Docker安装Jenkins教程!!!)

Jenkins Jenkins&#xff0c;原名 Hudson&#xff0c;2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。 官方网站&#xff1a;https://www.jenkins.io/ 中文文档&#xff1a;https://www.jenkins.io/zh/ 为什么需要Jenkins&#xff1f; 我们以前写完代码&a…

富格林:揭秘暗箱避免欺诈套路

富格林指出&#xff0c;黄金投资在投资市场上扮演着重要的角色&#xff0c;在任何时期总有人在投资黄金。在投资市场中&#xff0c;据小编所知有不少投资者曾经遭遇过欺诈的经历&#xff0c;而这其中一个重要的原因是投资者落入暗箱陷阱中&#xff0c;所以富格林给大家总结了以…

Excel中怎样把单元格里的数据拆分成多行?

时常会遇到这种情况&#xff0c;需要将一个单元格里的数据分拆到多行&#xff0c;可以使用公式&#xff0c;这里演示使用基础操作的办法。 按照excel使用经验&#xff0c;可以复制数据&#xff0c;粘贴到MS Word里&#xff0c;这个是excel的同族软件&#xff0c;兼容性好。 在…

代码随想录算法训练营第三十八天| 509. 斐波那契数,70. 爬楼梯 , 746. 使用最小花费爬楼梯

509. 递归经典入门&#xff0c;不难。需要注意在初始化dp数组的时候注意的是new int[n 1], 不是n. 因为下标从0开始所以在遍历的时候要等n再停止&#xff0c;最后返回dp的最后一个值就可以。 class Solution {public int fib(int n) {if (n < 1) return n; in…

Redis的面试

认识Redis 认识NoSQL SQL&#xff08;关系型数据库&#xff09; NoSQL&#xff08;非关系型数据库&#xff09; 1.结构化 非结构化 2.关联的 非关联的 3.SQL查询 非SQL 4.事务 …

matlab绘制热点图

在MATLAB中&#xff0c;通常使用imagesc、pcolor、heatmap&#xff08;需要Statistics and Machine Learning Toolbox&#xff09;等函数来绘制热点图&#xff08;也称为热力图&#xff09;。热点图通常用于可视化矩阵数据&#xff0c;其中每个单元格的颜色表示矩阵中相应元素的…

sql注入手注语句

?id100 union select 1,database(),3-- asd ​ ?id100 union select 1,table_name,3 from information_schema.tables where table_schemasecurity limit 0,1-- asd ?id100 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemada…

Element-UI库:Web前端开发的强大助力

Element-UI库&#xff1a;Web前端开发的强大助力 一、引言二、Element-UI概述三、Element-UI的使用场景四、Element-UI的最佳实践五、Element-UI的未来发展趋势六、Element-UI的进阶应用七、Element-UI的性能优化八、结语使用Element-UI框架的代码示例示例1&#xff1a;基本按钮…

[C++基础学习-07]----C++结构体详解

前言 结构体&#xff08;Struct&#xff09;是C中一种用户定义的复合数据类型&#xff0c;用于存储不同类型的数据项。结构体可以包含不同类型的数据成员&#xff0c;这些数据成员可以是基本类型&#xff08;如int、float、char等&#xff09;&#xff0c;也可以是数组、指针、…

逃逸分析、栈上分配、标量替换大展神威

一、逃逸分析 1.逃逸分析的目的是判断对象的作用域是否会逃逸出方法体&#xff08;方法逃逸&#xff09;或者外部线程&#xff08;线程逃逸&#xff09;。 2.注意&#xff0c;任何可以在多个线程之间共享的对象&#xff0c;一定都属于逃逸对象。 3.若重写了一个类的finalize方法…

海洋数字孪生技术

信息技术智能化高速发展&#xff0c;海洋信息体系建设经历以数字化为目标的初期发展阶段后&#xff0c;其智慧化发展&#xff0c;形成从数据&#xff0c;到知识&#xff0c;到预测&#xff0c;再到最优决策的海洋发展模式&#xff0c;即“智慧海洋”&#xff0c;成为了海洋信息…

【SSM进阶学习系列丨分页篇】PageHelper 分页插件导入集成实践

文章目录 一、说明什么是分页PageHelper介绍 二、导入依赖三、集成Spring框架中四、编写Service五、编写Controller六、编写queryAllByPage页面展示数据 一、说明 什么是分页 ​ 针对分页&#xff0c;使用的是PageHelper分页插件&#xff0c;版本使用的是5.1.8 。 ​ 参考文档…

Java基础(14)UDP、TCP

UDP&#xff08;用户数据报协议&#xff09;和TCP&#xff08;传输控制协议&#xff09;是互联网协议套件&#xff08;TCP/IP&#xff09;的两个核心协议&#xff0c;用于数据的传输。这两个协议在功能上是相互补充的&#xff0c;分别适用于不同的网络应用场景。 TCP&#xff…

创建和激活python虚拟环境(venv), 以及在vscode上运行python虚拟环境

最近使用python做项目&#xff0c;发现佬们都是在用python的虚拟环境来放项目。发现确实有一些优势在这之中&#xff0c; 首先就是隔离性&#xff0c;我们将每个项目放入相对应的环境配置&#xff0c;可以有效避免乱七八糟的库出现在解释器中。其次就是可移植性强&#xff0c;…

第十三届蓝桥杯国赛真题 Java C 组【原卷】

文章目录 发现宝藏试题 A: 斐波那契与 7试题 B: 小蓝做实验试题 C: 取模试题 D: 内存空间试题 E \mathrm{E} E : 斐波那契数组试题 F: 最大公约数试题 G: 交通信号试题 I: 打折试题 J: 宝石收集 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#x…

为什么 IP 地址通常以 192.168 开头?(精简版)

网络通讯的本质就是收发数据包。如果说收发数据包就跟收发快递一样。IP地址就类似于快递上填的收件地址和发件地址一样&#xff0c;路由器就充当快递员的角色&#xff0c;在这个纷繁复杂的网络世界里找到该由谁来接收这个数据包&#xff0c;所以说&#xff1a;IP地址就像快递里…

AG32 MCU在触摸屏的应用(AGM FPGA/MCU行业应用)

传统的屏驱MCU常见应用于洗衣机、空调、空调面板、仪器仪表等人机交互界面显示场景中&#xff0c;通常是以段码的形式显示设备运转的时间、温度、测量结果等简单运行数据&#xff0c;随着人机交互需求丰富化&#xff0c;智能家居设备、摩托车、电动车等产品也逐步增加了屏幕显示…

2024年第六届先进材料、机械和制造国际会议(AMMM 2024)即将召开!

2024年第六届先进材料、机械和制造国际会议&#xff08;AMMM 2024&#xff09;将于2024年9月6-8日在日本东京举行。AMMM 2024将以国际材料&#xff0c;机械和制造为主题&#xff0c;吸引到来自多个领域的研究人员和学者相聚在一起分享知识&#xff0c;讨论想法&#xff0c;并了…