《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.rhkb.cn/news/324032.html

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

相关文章

智慧公厕,运用数据提升公共厕所管理水平!

随着城市人口的增加和生活水平的提高,公共厕所的管理变得越来越重要。传统的厕所管理方式已经无法满足人们对卫生、便利和舒适的需求。而智慧公厕作为新一代公厕管理方式,通过运用数据技术和大数据分析手段,彻底改变了公厕管理的模式&#xf…

远程桌面连接不上怎么连服务器,原因是什么?如何解决?

远程桌面连接不上怎么连服务器,原因是什么?如何解决? 面对远程桌面连接不上的困境,我们有办法! 当你尝试通过远程桌面连接服务器,但遭遇连接失败的挫折时,不要慌张。这种情况可能由多种原因引起…

26、Qt使用QFontDatabase类加载ttf文件更改图标颜色

一、图标下载 iconfont-阿里巴巴矢量图标库 点击上面的链接,在打开的网页中搜索自己要使用的图标,如:最大化 找到一个自己想用图标,选择“添加入库” 点击“购物车”图标 能看到刚才添加的图标,点击“下载代码”(需要…

4D 成像毫米波雷达:新型传感器助力自动驾驶

1 感知是自动驾驶的首要环节,高性能传感器必不可少 感知环节负责对侦测、识别、跟踪目标,是自动驾驶实现的第一步。自动驾驶的实现,首先要能够准确理解驾驶环境信息,需要对交通主体、交通信号、环境物体等信息进行有效捕捉&#x…

数据可视化训练第二天(对比Python与numpy中的ndarray的效率并且可视化表示)

绪论 千里之行始于足下;继续坚持 1.对比Python和numpy的性能 使用魔法指令%timeit进行对比 需求: 实现两个数组的加法数组 A 是 0 到 N-1 数字的平方数组 B 是 0 到 N-1 数字的立方 import numpy as np def numpy_sum(text_num):"""…

一起深度学习(AlexNet网络)

AlexNet神经网络 代码实现: 代码实现: import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 采用了11*11的卷积核来捕捉对象,因为原始输入数据比较大#步幅为4 ,可减少输出的高度核宽度。#输出通…

全栈开发之路——前端篇(6)生命周期和自定义hooks

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

基于springboot实现疾病防控综合系统项目【项目源码+论文说明】

基于springboot实现疾病防控综合系统演示 摘要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以&…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-11.1,11.2-BSP文件目录组织

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Labels and Databases for Mac:强大的标签与数据库管理工具

Labels and Databases for Mac是一款集标签制作与数据库管理于一体的强大工具,专为Mac用户打造,旨在提供高效、便捷的标签制作与数据管理体验。 这款软件拥有丰富的内置标签格式,用户可轻松创建各种标签、信封和卡片,满足个性化需…

【CSDN搜材料的小技巧】怎么快速查到高质量最新的内容

问题描述: 我最近搜CSDN已经搜累了,好多东西明显是有问题的,还有一堆人复制粘贴,从海量文章中提取出最新且高质量文章成了当务之急! 解决方案: 我本来想写个爬虫按照文章的收藏或者点赞排序的,无意中看到了这篇文章…

基于Spring Cloud的房产销售平台设计与实现

基于Spring Cloud的房产销售平台设计与实现 开发语言:Java 框架:SpringCloud JDK版本:JDK1.8 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 系统部分展示 前台首页界面,前台首页包括房源信息、…

重载,重写,重定义,纯虚函数,多态习题

只要不够成重写就是重定义。 重定义: 抽象类: 包含纯虚函数的类就是抽象类。 1.纯虚函数的作用,强制子类去完成重写。 2.表示抽象的类型。 抽象就是在现实中没有对应的实体。 1. 下面哪种面向对象的方法可以让你变得富有( a) A 继承 B…

Google搜索广告怎么开户?谷歌广告开户投放引流技巧、账户搭建、谷歌ads广告推广投放策略 #搜索引擎 #谷歌广告#互联网营销

Google搜索广告开户步骤: 选择代理商:首先,您需要选择一个经验丰富、信誉良好的Google广告代理商。可以选择上海上弦来广告开户和代运营。 初步咨询:与代理商进行初步沟通,了解他们的服务内容、成功案例、收费标准等。…

上海AI Lab开源首个可替代GPT-4V的多模态大模型

与开源和闭源模型相比,InternVL 1.5 在 OCR、多模态、数学和多轮对话等 18 个基准测试中的 8 个中取得了最先进的结果。 上海AI Lab 推出的 InternVL 1.5 是一款开源的多模态大语言模型 (MLLM),旨在弥合开源模型和专有商业模型在多模态理解方面的能力差距…

Agent AI智能体的未来

Agent AI智能体的未来 Agent AI智能体代表了人工智能在智能个人助理和虚拟代理人领域的最新进展。未来,Agent AI智能体将继续发挥着重要的作用,并且在以下几个方面实现更多的发展和创新: 个性化服务:Agent AI智能体将通过对用户行…

5月白银现货最新行情走势

美联储5月的议息会议举行在即,但从联邦公开市场委员会(FOMC)近期透露的信息来看,降息似乎并没有迫切性。——美联储理事鲍曼认为通胀存在"上行风险",明尼阿波利斯联邦储备银行行长卡什卡利提出了今年不降息的…

华为招聘目的:不是筛选人才,而是筛选忠诚度。。

华为招聘 日常瞎逛发现一篇「机械应届生锐评华为」的帖子: 楼主提到:华为很会营销,华为和爱国之间的等号已经植入到老一辈的思想中,这就导致家里父母总是不断关心华为招聘的进展。 虽然楼主原本并不反感华为,但却被本次…

git 常用命令 git怎么撤销命令 持续更新中!!!!

基本流程 # 拉取仓库 git clone 仓库地址 # 拉取最新版本 git pull # 本地提交 git add . git commit -m "本次提交信息!" # 推送上云 git push分支 # 创建分支 git checkout -b cart # 删除本机的分支 git branch -d cart # 切换分支 本地切换到主分支…

掌握Android Fragment开发之魂:Fragment的深度解析(上)

Fragment是Android开发中用于构建动态和灵活界面的基石。它不仅提升了应用的模块化程度,还增强了用户界面的动态性和交互性,允许开发者将应用界面划分为多个独立、可重用的部分,每个部分都可以独立于其他部分进行操作。本文将从以下几个方面深…