实例分割模型Mask2Former解析

Masked2Former是在mask rcnn基础上改进的一个实例分割模型,参考了一些经典模型的思想,如DETR,实验表明效果很好。
在这里插入图片描述

论文:《Masked-attention Mask Transformer for Universal Image Segmentation》
https://arxiv.org/abs/2112.01527

代码地址:https://github.com/facebookresearch/Mask2Former

1.摘要

图像分割对具有不同语义的像素进行分组,例如,类别或实例隶属关系。每种语义选择都定义了一个任务。虽然每个任务只是语义不同,但目前的研究重点是为每个任务设计专门的体系结构。我们提出了maskedatattention Mask Transformer (Mask2Former),这是一种能够处理任何图像分割任务(全景、实例或语义)的新架构。它的关键组成部分包括屏蔽注意,它通过在预测的屏蔽区域内约束交叉注意来提取局部特征。
除了将研究工作量减少至少三倍之外,它在四个流行数据集上的性能明显优于最佳的专业架构。最值得注意的是,Mask2Former为全光分割(COCO上57.8 PQ),实例分割(COCO上50.1 AP)和语义分割(ADE20K上57.7 mIoU)设置了新的技术水平。
在这里插入图片描述

2.模型创新点

主要改进:
1.首先在Transformer解码器中使用屏蔽注意力(Masked attention),与传统的Transformer解码器中使用的交叉注意力相比,可以更快收敛并提高性能。
2.使用多尺度分辨率特征,帮助模型分割小物体/区域
3.提出了更换自注意力和交叉注意力的顺序、使查询特征可以学习、去除dropout等优化改进,所有这些可以不增加额外计算的同时提高性能。

3.模型结构

模型主要包括三个结构:主干特征提取器、像素解码器以及变压器解码器。

3.1 初步的掩码分类

收到DETR的启发,图像中的每个片段都可以作为C维特征向量,并且可以通过Transformer解码器处理,并使用一组预测目标进行训练。关于这种元架构更多的应该参考MaskFormer。

在这里插入图片描述

3.2 屏蔽注意力的Transformer解码器

3.2.1 Masked Attention

上下文特征已被证明对于图像分割很重要。然而,最近的研究表明,基于 Transformer 的模型收敛缓慢是由于交叉注意力层中的全局上下文造成的,因为交叉注意力需要许多训练周期才能学习关注局部对象区域。我们假设局部特征足以更新查询特征,并且可以通过自注意力收集上下文信息。
为此,我们提出了屏蔽注意力,这是交叉注意力的一种变体,仅参与每个查询的预测掩模的前景区域。
原始的交叉注意力的计算:
在这里插入图片描述
Masked attention的计算方式:
在这里插入图片描述
在这里插入图片描述
M_(l-1)是先前第(l-1)个transformer解码器层的经过调整大小的掩码预测的二值化输出,它被调整到与k_l相同的分辨率,M_0是从X_0得到的二进制掩码预测,即再查询特征馈送到Transformer解码器之前。

3.2.3 优化改进

标准 Transformer 解码器层 由三个模块组成,按以下顺序处理查询特征:自注意力模块、交叉注意力模块和前馈网络(FFN)。此外,查询特征(X0)在输入 Transformer 解码器之前被初始化为零,并与可学习的位置嵌入相关联。此外,dropout 应用于残差连接和注意力图。
为了优化 Transformer 解码器设计,我们做了以下三点改进。首先,我们切换自注意力和交叉注意力(我们新的“屏蔽注意力”)的顺序,以使计算更有效:第一个自注意力层的查询特征是与图像无关的,并且没有来自图像的信号,因此应用自注意力不太可能丰富信息。其次,我们使查询特征(X0)也可学习(我们仍然保留可学习的查询位置嵌入),并且可学习的查询特征在用于 Transformer 解码器中预测掩码(M0)之前直接受到监督。我们发现这些可学习的查询特征的功能类似于区域提议网络,并且能够生成掩模提议。最后,我们发现 dropout 是不必要的,而且通常会降低性能。因此,我们完全消除了解码器中的丢失。

3.3提高训练效率

在预测与其匹配的真实情况之间的最终损失中,我们使用重要性采样 对不同的预测和真实情况对的不同 K 点集进行采样。我们设置 K = 12544,即 112 ⇥ 112 点。这种新的训练策略有效地将训练内存减少了 3x,从每张图像 18GB 减少到 6GB,使计算资源有限的用户更容易使用 Mask2Former。

5.结论

我们提出了用于通用图像分割的 Mask2Former。 Mask2Former 基于简单的元框架 [14] 和新的 Transformer 解码器,使用所提出的屏蔽注意力,在四个流行数据集的所有三个主要图像分割任务(全景、实例和语义)中获得了最佳结果,甚至超越了设计的最佳专业模型每个基准,同时保持易于训练。与为每个任务设计专用模型相比,Mask2Former 可以节省 3 倍的研究工作量,并且计算资源有限的用户也可以使用它。
我们希望引起人们对通用模型设计的兴趣
中间实验参数配置、实验结果和模块深度解析,有时间再来填坑!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是TestNG以及如何创建testng.xml文件?

目录 什么是TestNG? 如何创建testng.xml文件 手动创建testng.xml 通过testng.xml运行整个包 通过testng.xml运行类 使用Eclipse创建testng.xml 本文将讨论TestNG以及如何通过执行testng.xml文件在TestNG中运行第一个测试用例。 什么是TestNG? Te…

Qt QGraphicsItem获取鼠标位置对应图像坐标

本次使用了QGraphicsView来加载图像,然后给其设置了一个QGraphicsScene场景,再给场景添加了一个自定义的QGraphicsItem,在其中重写了paint事件,用来重绘图像。 正常情况时,QGraphicsItem上图像的有效区域QRect大小和QG…

内网穿透[让你在家里也能榨干学校的服务器]Yep!

内网穿透 问题:什么是内网穿透,内网穿透的作用是什么? 前提!!!!你得拥有超级管理员的权限,比如root,不然后面的一切免提! 应用场景如下:比如你…

复选框QCheckBox和分组框QGroupBox

1. 复选框:QCheckBox 实例化 //实例化 // QCheckBox* checkBox new QCheckBox("是否同意该条款",this);QCheckBox* checkBox new QCheckBox(this);1.1 代码实现 1.1.1 复选框的基本函数 复选框选中状态的参数 Qt::Unchecked //未选中状态 Qt::Part…

C++I/O流——(3)文件输入/输出(第二节)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 含泪播种的人一定能含笑收获&#xff…

Qt QSlider滑动条控件

文章目录 1 属性和方法1.1 值1.2 方向1.3 步长1.4 信号和槽 2 实例2.1 布局2.2 代码实现 QSlider是滑动条控件,滑动条可以在一个范围内拖动,并将其位置转换为整数 最常见的应用就是视频播放器中的进度条 1 属性和方法 QSlider继承自QAbstractSlider&…

Linux中文件名修改的多种方法

找一个不算漂亮的普通女孩,一起柴米油盐,一起日出日落,一起田间地头,一起春花冬雪!要一个不算大的小房子,生两个健康可爱的宝宝,这样就很好。。。。。。 简介: 在Linux系统中&#x…

使用Python+pygame实现贪吃蛇小游戏

使用Pythonpygame贪吃蛇小游戏 使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下: 游戏源码如下: import pygame import sy…

排序算法之八:计数排序

1.计数排序思想 计数排序,顾名思义就是计算数据的个数 计数排序又称非比较排序 思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤: 统计相同元素出现次数 根据统计的结果将序列回收到原来的序列中 计数…

freetos day1

作业:使用计数型信号量设计:生产者和消费者模型 总结今天学习的API函数,写出函数参数和返回值的意思,并且说明函数功能 1 2 3

【数据结构】C语言实现共享栈

共享栈的C语言实现 导言一、共享栈1.1 共享栈的初始化1.2 共享栈的判空1.3 共享栈的入栈1.3.1 空指针1.3.2 满栈1.3.3 入栈空间错误1.3.4 正常入栈1.3.5 小结 1.4 共享栈的查找1.5 共享栈的出栈1.6 共享栈的销毁 二、共享栈的实现演示结语 导言 大家好,很高兴又和大…

文件上传进阶绕过(二)4个技巧和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战:upl…

「会议推荐」食品饮料行业数字化、智能化转型升级高质量发展论坛

“2024第十二届国际生物发酵产品与技术装备展览会(济南)”将于2024年3月5-7日在山东国际会展中心(济南市日照路1号)举办。同期中国生物发酵产业协会、山东省轻工机械协会、山东省食品工业协会联合举办“2024食品饮料行业数字化、智…

Win10提示找不到mfc71ud.dll文件,程序无法运行,的解决办法,亲测有效

mfc71ud.dll是Windows操作系统中的一个动态链接库文件,由Microsoft公司开发,属于Microsoft Foundation Class (MFC)库的一部分。"ud"后缀表示这是一个Unicode Debug版本,主要用于支持程序开发和测试。 这个文件主要被用于运行各种…

C++--引用

一.引用的定义🍗 引用是已定义的变量的别名。 例如将data作为value的引用(别名),则可以随意使用data或value来表示该变量。 引用有何作用呢? 其主要作用是作为函数的形参(和函数的返回值)。这样 函数的形参就是实参本身,而不是其副本。这样除指针外,引用也为函数处…

命名空间 “Eigen“ 没有成员 “SelfAdjointEigenSolver“

代码中用到SelfAdjointEigenSolver 结果报错&#xff1a;报错实在windows10条件下发生的。 查找资料&#xff0c;最后还是要定位到官方文档。 计算自伴随矩阵的特征值和特征向量。 这是在特征值模块中定义的。 添加如下引用即可解决&#xff0c;请点赞关注。 #include <…

ssm+vue的物流配送人员车辆调度管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项项目。

演示视频&#xff1a; ssmvue的物流配送人员车辆调度管理系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&…

腾讯云服务器定价_云服务器价格_云服务器计费模式

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

一文搞懂系列——Linux C线程池技术

背景 最近在走读诊断项目代码时&#xff0c;发现其用到了线程池技术&#xff0c;感觉耳目一新。以前基本只是听过线程池&#xff0c;但是并没有实际应用。对它有一丝的好奇&#xff0c;于是趁这个机会深入了解一下线程池的实现原理。 线程池的优点 线程池出现的背景&#xf…

腾讯云服务器购买指南,2024更新购买步骤

腾讯云服务器购买流程很简单&#xff0c;有两种购买方式&#xff0c;直接在官方活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动…