Mask2Former

这篇具有很好参考价值的文章主要介绍了Mask2Former。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Masked-attention Mask Transformer for Universal Image Segmentation

图像分割是关于将不同语义的像素分组,例如,类别或实例成员关系,其中每个语义的选择定义了一个任务。虽然只是每个任务的语义不同,但目前的研究重点是为每个任务设计专门的体系结构。我们提出了一种新的架构Mask -attention Mask Transformer (Mask2Former),能够解决任何图像分割任务(全景、实例或语义)。它的关键组成部分包括Mask -attention,通过约束掩模区域内的交叉注意来提取局部特征。除了将研究工作量减少至少三倍之外,它在四个流行的数据集上的性能显著优于最好的专门架构。最值得注意的是,Mask2Former设置了一个新的最先进的全景分割(COCO上57.8 PQ),实例分割(COCO上50.1 AP)和语义分割(ADE20K上57.7 mIoU)。

Mask2Former

本文提出通用的图像分割架构,它在不同的分割任务中优于专门的架构,同时仍然很容易在每个任务上训练。

Mask2Former vs MaskFormer

在maskformer的基础上:                                 

  • 增加了masked attention机制

  •  使用多尺度高分辨率特征来帮助模型分割小目标/区域

  • 调整了decoder部分的self-attention和cross-attention的顺序  

  • 通过在少量随机采样点上计算mask loss,来加快训练速度

Mask2Former overview

Mask2Former

Mask2Former采用与MaskFormer相同的元架构,具有backbone、像素解码器和transformer解码器。

1、backbone从图像中提取低分辨率特征的主干。

2、像素解码器,从主干的输出中逐渐上采样低分辨率的特征,以生成高分辨率的逐像素嵌入。

3、Transformer解码器,它通过图像特征处理对象查询。

Masked attention

背景特征已经被证明对图像分割非常重要。然而,最近的研究表明,基于transformer的模型收敛缓慢是由于交叉注意层的全局上下文,交叉注意学习关注局部对象区域需要许多训练时间。我们假设局部特征足以更新查询特征,通过自我注意可以收集上下文信息。为此,我们提出了掩码注意,这是交叉注意的一种变体,对每个查询只关注预测掩码的前景区域。

标准交叉注意(带有残差路径)计算

Mask2Former

Mask2Former

 masked attention模型的注意力矩阵计算:

Mask2Former

特征位置(x, y)的注意掩码为 :

Mask2Former

 Mask2Former是前面第(l−1)个transformer解码器层调整掩码预测的二值化输出(阈值为0.5)。它被调整到相同的分辨率kl,M0为从X0得到的二进制掩码预测,即在向Transformer解码器输入查询特征之前的预测。

高分辨率特征

高分辨率特性提高了模型的性能,特别是对于小目标。然而,这需要计算。因此,我们提出了一种有效的多尺度策略,在控制计算量增加的同时引入高分辨率特征。我们不总是使用高分辨率特征图,而是使用一个特征金字塔,它包括低分辨率特征和高分辨率特征,并一次向一个Transformer decoder层提供一个多尺度特征的分辨率。

具体来说,我们使用pixel decoder生成的特征金字塔,分辨率分别为原始图像的1/32、1/16和1/8。对于每个分辨率,我们添加一个正弦位置嵌入,紧跟DETR,以及一个可学习尺度级嵌入,紧跟Deformable DETR。我们使用这些,从最低分辨率到最高分辨率的对应Transformer解码器层。我们重复这个3层Transformer解码器L次。因此,我们最终的Transformer解码器有3L层。更具体地说,前三层得到的特征图分辨率为H1 = H/32, H2 = H/16, H3 = H/8, W1 = W/32, W2 = W/16, W3 = W/8,其中H和W为原始图像分辨率。此模式以轮询方式对以下所有层重复。

优化改进

标准的transformer解码器(左图) vs. 本文的transformer解码器(右图)

        Mask2FormerMask2Former

标准的Transformer解码器层由三个模块组成,依次处理查询特性:自注意模块、交叉注意模块和前馈网络(FFN)。此外,查询特性(X0)在被输入到Transformer解码器之前是零初始化的,并且与可学习的位置嵌入相关联。此外,dropout应用于残差连接和注意图。

为了优化Transformer解码器的设计,本文做了以下三点改进。

  • 首先,我们交换一下self-attention和cross-attention(我们的新“masked attention”)顺序,使计算更有效:第一个自我注意层的查询特征还不依赖于图像特征,因此应用自我注意不会产生任何有意义的特征。

  • 其次,我们使查询特征(X0)也可学习(我们仍然保持可学习的查询位置嵌入),可学习的查询特征在被用于Transformer解码器预测掩码(M0)之前是直接监督的。我们发现这些可学习的查询功能类似于区域提议网络RPN,并且能够生成mask proposal。

  • 最后,我们发现dropout是不必要的,通常会降低性能。因此,我们在我们的解码器完全消除了dropout。

采样点损失函数

受 PointRend 和 Implicit PointRend 的启发,通过在 K个随机采样点而不是整个掩码上计算掩码损失来训练分割模型。在本文中设置K=12544,即112×112点。 本文在匹配损失和最终损失计算中使用采样点计算掩码损失:

1、在构建二分匹配成本矩阵的匹配损失中,对所有预测和真实掩码的相同的 K 点集进行均匀采样。

2、在预测之间的最终损失及其匹配的ground truth中,使用importance sampling为不同的预测和ground truth对不同的K点进行采样。

这种训练策略有效地将训练内存减少了 3 倍,从每张图像 18GB 到 6GB。文章来源地址https://www.toymoban.com/news/detail-470370.html

到了这里,关于Mask2Former的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【多模态】6、BLIP-2 | 使用 Q-Former 连接冻结的图像和语言模型 实现高效图文预训练

    论文:BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 代码:https://github.com/salesforce/LAVIS/tree/main/projects/blip2 在线体验:https://huggingface.co/Salesforce/blip2-opt-2.7b 出处:Salesforce Research | 和 BLIP 是同一团队 时间:2023.01 线上体验示例:将图拖拽至此即可

    2024年02月16日
    浏览(46)
  • 生成随机mask以及根据mask对两幅图片进行合并

    对图像处理的一些操作还是需要掌握的嘿嘿 这里代码参考MAT的一份代码: https://github.com/fenglinglwb/MAT/blob/main/datasets/mask_generator_256.py 封装一下生成mask函数 调用一下 这里以celeba-256为例子 调用一下 000255.jpg 001133.jpg 000255_001133.jpg

    2024年02月14日
    浏览(46)
  • UG\NX二次开发 结构体UF_UI_mask_s、UF_UI_mask_t、UF_UI_mask_p_t解释

    文章作者:里海 来源网站:里海NX二次开发3000例专栏 感谢\\\"小余努力变优秀 \\\"订阅本专栏,非常感谢。 在开发中我们会遇到一些函数例如 UF_UI_select_single UF_UI_select_by_class 会用到这些结构体 在 uf_ui_types.h 头文件中有这样的说明:

    2024年02月04日
    浏览(58)
  • nn.TransformerEncoderLayer中的src_mask,src_key_padding_mask解析

    注意,不同版本的pytorch,对nn.TransformerEncdoerLayer部分代码差别很大,比如1.8.0版本中没有batch_first参数,而1.10.1版本中就增加了这个参数,笔者这里使用pytorch1.10.1版本实验。 attention mask 要搞清楚src_mask和src_key_padding_mask的区别,关键在于搞清楚在self-attention中attention mask的作用

    2024年02月04日
    浏览(36)
  • Mask RCNN详解

            Mask R-CNN是对Faster R-CNN的直观扩展,网络的主干有RPN转换为主干网络为ResNet的 特征金字塔网络(FPN),同时 添加了一个分支用于预测每个感兴趣区域(RoI)上的分割掩模,与现有的用于分类和边界盒回归的分支并行(图1)。 掩模分支是一个应用于每个RoI的小FCN,以像素

    2023年04月11日
    浏览(33)
  • 2023 Mask R-CNN 改进:DynaMask: Dynamic Mask Selection for Instance Segmentation 论文笔记

    写在前面   本周更新的第二篇论文阅读,2023年每周一篇博文,还剩5篇未补,继续加油~ 论文地址:DynaMask: Dynamic Mask Selection for Instance Segmentation 代码地址:https://github.com/lslrh/DynaMask 收录于:CVPR 2023 欢迎关注,主页更多干货,持续输出中~   一般的实例分割通常采用固定

    2024年02月01日
    浏览(81)
  • OpenCV制作Mask图像掩码

    一、掩膜(mask) 在有些图像处理的函数中有的参数里面会有mask参数,即此函数支持掩膜操作,首先何为掩膜以及有什么用,如下: 数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩

    2024年02月04日
    浏览(31)
  • 【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?

    上一篇文章【CV大模型SAM(Segment-Anything)】真是太强大了,分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标中 详细介绍了大模型SAM(Segment-Anything)的不同使用方法 ,后面有很多小伙伴给我留言问我分割后的目标对象如何保存,这篇介绍一下分割后的ma

    2024年02月09日
    浏览(55)
  • Mask RCNN训练自己的数据集

    Mask RCNN作为实例分割的经典算法,对于图像分割的初学者来说,还是很有必要了解下的。 原mask rcnn的Tensorflow版本是1.13,这里提供tf2.5的mask rcnn的github源码地址:https://github.com/zouyuelin/MASK_RCNN_2.5.0 目录 一、制作数据集 1.下载安装labelme  2.标注数据集 3.labelme数据集转化 二、模

    2024年02月15日
    浏览(41)
  • Unity Camera设置-Culling Mask

    参考文档:Unity中Camera参数—Culling Mask详解_-MCQ-的博客-CSDN博客_unity相机cullingmask 什么是Culling Mask?它是Camera的一个属性, 包含或忽略要由摄像机渲染的对象层。简单来说就是摄像机照射场景中哪些层级的物体。 理解起来比较简单,怎么动态赋值稍微麻烦一点,用过一次之后

    2024年02月15日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包