分割模型Maskformer系列

maskformer:Per-Pixel Classification is Not All You Need for Semantic Segmentation

论文地址:https://arxiv.org/pdf/2107.06278 

1.概述

        传统的语义分割方法通常采用逐像素分类(per-pixel classification),而实例分割则使用不同的掩模分类(mask classification)方法。能否用掩膜分类的方法处理语义分割呢?当然是可以的。(掩膜分类:与逐像素分类不同,掩膜分类不是对每个像素单独分类,而是预测整个区域的掩膜(即区域的边界和形状),并将整个掩膜分类到一个类别。这种方法识别整个对象或区域,而不仅仅是单个像素。)

        MaskFormer方法通过预测与单一类预测关联的一组二进制掩模来解耦图像分割和分类的过程,提供了一种比逐像素分类更灵活的方法。掩模分类足够通用,可以同时解决语义和实例级别的分割任务。

 2.详细流程

        MaskFormer 是一种用于图像分割的模型,它整合了多个组件来处理语义和实例级分割任务。这个模型包括三个主要模块:像素级模块(Pixel-level module)、Transformer模块(Transformer module)和分割模块(Segmentation module)。具体流程为:

(1)像素级模块(Pixel-level Module)

  • 输入和特征提取:输入是一张大小为 H×W 的图像。通过一个骨架网络(backbone),例如ResNet或VGG,提取低分辨率的特征图 F。这个特征图的尺寸为C_{F}\times\frac{H}{S}\times\frac{W}{S},其中C_{F}是通道数,S 是步长(通常设为32)。
  • 特征上采样:像素解码器(pixel decoder)逐渐上采样这些特征,生成每像素嵌入 pixel×pixel​。这个过程旨在从低分辨率特征图中恢复更详细的空间信息,为后续的掩模预测提供支持。

(2)变换器模块(Transformer Module)

  • 生成掩模嵌入:变换器解码器(transformer decoder)接收上采样的像素嵌入,并使用 N 个位置嵌入(查询)生成 N 个掩模嵌入𝑄。这些嵌入捕捉图像中每个潜在分割区域的全局信息。
  • 并行处理:解码器并行输出所有预测,每个嵌入对应一个特定的掩模预测。

(3)分割模块(Segmentation Module)

  • 分类和掩模预测:应用线性分类器和 softmax 激活函数在掩模嵌入上,生成每个掩模的类别概率预测 p_{i}。此外,通过多层感知机(MLP)处理掩模嵌入𝑄,生成掩模m_{i}的二进制预测。
  • 二值掩模生成:使用点积操作将每个掩模嵌入与对应的像素嵌入结合,然后通过 sigmoid 激活函数生成最终的二进制掩模 m_{i}​。

(4)掩模分类推理(Mask-Classification Inference)

  • 通用推理:将图像分割为若干个掩模区域,通过匹配每个像素的最大类别概率和掩模概率来分配像素。
  • 语义推理:为语义分割任务专门设计,通过矩阵乘法合并所有二进制掩模和它们的类别预测,生成每个像素的类别标签。

3.实验

 mask2former

Masked-attention Mask Transformer for Universal Image Segmentation
论文地址: https://arxiv.org/pdf/2112.01527

1.概述

        Maskformer存在着计算量大、收敛困难的问题,针对于这个问题,这篇论文提出了Mask2former,这种架构的关键特点是:

  • 掩码注意力(Masked Attention):该机制通过在Transformer解码器中对预测的掩码区域内的特征进行聚焦,从而允许模型在保持高效性的同时提取出具有高度局部相关性的特征。

  • 多尺度高分辨率特征利用:为了改善对小物体的分割效果,作者提出在不同的Transformer解码器层中使用来自像素解码器的不同分辨率的特征图。

  • 优化的注意力顺序和查询特征学习:通过改变自注意力和交叉注意力的顺序,使查询特征可学习,并移除dropout,这些优化措施提高了性能并减少了所需的计算量。

  • 训练效率的提高:通过在计算掩码损失时只采样随机点而非全图,显著减少了训练过程中的内存需求,使得模型更易于训练和部署。

2.具体流程

        Mask2former主要建立在Maskformer的基础之上。

(1)Transformer解码器与掩码注意力

        Mask2Former引入了掩码注意力机制。这种注意力机制的核心是在预测掩码的前景区域内约束交叉注意力,从而提取局部化的特征。这一策略旨在提高模型处理小对象的能力,并通过以下几种方法优化模型性能:

掩码注意力
  • 基本概念:掩码注意力是一种交叉注意力的变体,它只在预测掩码的前景区域内聚焦,而不是整个特征图。
  • 实现方式:通过修改标准交叉注意力的注意力矩阵,使其在预测掩码的有效区域内应用softmax操作,通过将背景区域值置为负无穷从而排除背景区域,实现局部聚焦。

高分辨率特征
  • 策略描述:为了在不显著增加计算负担的情况下处理小对象,Mask2Former引入了一种多尺度策略,利用像素解码器输出的多尺度特征图。这些特征图按从低到高的分辨率供给给Transformer解码器的不同层,从而使每一层都能接收到适合其处理需求的特征级别。
  • 细节实现:例如,特征图的分辨率可以是1/32、1/16、1/8原图大小,通过这种方法,可以在不同层上应用不同分辨率的特征图,以此优化性能并减少计算资源的消耗。

优化改进
  • 解码器改进:在标准的Transformer解码器层中,包含自注意力模块、交叉注意力和前向馈网络(FFN)。为了提高效率和性能,Mask2Former在这一结构上做出了调整,包括改变自注意力和交叉注意力的顺序,使查询特征可学习,并去除dropout。
  • 训练效率提升:通过在匹配和最终损失计算中使用采样点而非完整掩码,显著降低了训练过程中的内存需求,从18GB减少到6GB,这使得模型在有限的计算资源下更加易于训练和使用。

3.实验

在多个数据集上实现了新的sota

  

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

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

相关文章

Ubuntu20.4中复现Graspness

Ubuntu20.4中复现Graspness 文章目录 Ubuntu20.4中复现Graspness1.安装cuda和cudnn2.安装pytorch3.安装MinkowskiEngine4.编译graspnetAPI5. RuntimeError: "floor" "_vml_cpu" not implemented for IntRefernece 🚀非常重要的环境配置&#x1…

uniapp:抖音PK进度条(nvue)

nvue中,仿抖音PK进度条效果, <template><view class="index" :style="{width:windowWidth+px,height:index_windowHeight+px,paddingTop:windowTop+px}"><view class="pk"><text class="pk_jindu_left_val fsz-24 …

UE和three.js的区别

UE&#xff08;Unreal Engine&#xff09;和three.js都是用于创建3D图形的软件平台&#xff0c;但它们在功能、目标和应用场景方面存在一些差异。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 功能 UE 是一款功能全面的3D游戏引擎&…

Excel操作之工具类

需求&#xff1a;根据指定的路径下模版进行解析 将模版上传到指定的文件服务器。 1&#xff1a;将路径下的excel文件进行解析 下载 A:创建excel表格对应的字段注解 ExcelColumn Retention(RetentionPolicy.RUNTIME) Target(ElementType.FIELD) public interface ExcelColumn …

汽车EDI:IAC Elmdon EDI 对接指南

近期收到客户C公司的需求&#xff0c;需要与其合作伙伴IAC Elmdon建立EDI连接&#xff0c;本文将主要为大家介绍IAC Elmdon EDI 对接指南&#xff0c;了解EDI项目的对接流程。 项目需求 传输协议&#xff1a;OFTP2 IAC Elmdon 与其供应商之间使用的传输协议为OFTP2。OFTP2是…

qt5-入门-xml文件读写

本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt 5.12 代码已经测试通过。其他例子日后更新。 假设需要读写的xml文档结构如下图所示&#xff1a; 那么首先需要修改.pro文件&#xff0c;增加一句&#xff1a; 然后执行qmake。 代码 #include <QtXml/Q…

如何更快地执行 Selenium 测试用例?

前言&#xff1a; 当我们谈论自动化时&#xff0c;首先想到的工具之一是 Selenium。我们都知道Selenium WebDriver 是一个出色的 Web 自动化工具。实施Selenium 自动化测试的主要原因是加速 selenium 测试。在大多数情况下&#xff0c;Selenium 的性能比手动的要好得多。但是&…

FreeRTOS的移植

在工程模版里新建FreeRTOS的文件夹 将FreeRTOSv9.0.0文件夹下的\FreeRTOS\Source里的文件&#xff0c;复制到刚刚创建的FreeRTOS文件夹中。 在FreeRTOS\portable的文件夹下&#xff0c;使用Keil环境时&#xff0c;只使用Keil、MemMang、RVDS文件&#xff0c;可以删除其他的文件…

迅饶科技 X2Modbus 网关 AddUser 任意用户添加漏洞复现

0x01 产品简介 X2Modbus是上海迅饶自动化科技有限公司Q开发的一款功能很强大的协议转换网关, 这里的X代表各家不同的通信协议, 2是T0的谐音表示转换, Modbus就是最终支持的标准协议是Modbus协议。用户可以根据现场设备的通信协议进行配置,转成标准的Modbus协议。在PC端仿真…

jupyter notebook单元格运行耗时计算魔术方法timeit

%%timeit 默认执行多次计算平均耗时 -n 或 --number&#xff1a;指定总的运行次数。 -r 或 --repeat&#xff1a;指定每个运行要重复的次数。 例如&#xff0c;如果你想要运行一个测试&#xff0c;总共运行3次&#xff0c;每次运行7次迭代&#xff0c;你可以这样写&#xff1a…

华为OD机试【全量和已占用字符集】(java)(100分)

1、题目描述 给定两个字符集合&#xff0c;一个是全量字符集&#xff0c;一个是已占用字符集&#xff0c;已占用字符集中的字符不能再使用。 2、输入描述 输入一个字符串 一定包含&#xff0c;前为全量字符集 后的为已占用字符集&#xff1b;已占用字符集中的字符一定是全量…

static静态成员变量和静态方法

当有new创建一个对象的,里面属性和方法,通过构造函数,能定义多个不同的对象,在我们做面向对象开发的时候,给一个场景,人在一个班级的时候,你的老师可能是固定的。 当我们用构造方法去构造的时候&#xff0c;每次都去传递一个固定的实参去定义个老师。 这样好会显得代码非常的…