MaskFormer:将语义分割和实例分割作为同一任务进行训练

news2024/11/17 23:51:53

目标检测和实例分割是计算机视觉的基本任务,在从自动驾驶到医学成像的无数应用中发挥着关键作用。目标检测的传统方法中通常利用边界框技术进行对象定位,然后利用逐像素分类为这些本地化实例分配类。但是当处理同一类的重叠对象时,或者在每个图像的对象数量不同的情况下,这些方法通常会出现问题。

诸如Faster R-CNN、Mask R-CNN等经典方法虽然非常有效,但由于其固有的固定大小输出空间,它们通常预测每个图像的边界框和类的固定数量,这可能与图像中实例的实际数量不匹配,特别是当不同图像的实例数量不同时。并且它们可能无法充分处理相同类的对象重叠的情况,从而导致分类不一致。

本文中将介绍Facebook AI Research在21年发布的一种超越这些限制的实例分割方法MaskFormer。可以看到从那时候开始,FB就对Mask和Transformer进行整合研究了。

1、逐像素分类和掩码分类的区别

逐像素分类

该方法指的是为图像中的每个像素分配一个类标签。在这种情况下,每个像素都被独立处理,模型根据该像素位置的输入特征预测该像素属于哪个类。对于边界清晰、定义明确的对象,逐像素分类可以非常准确。但是当感兴趣的对象具有复杂的形状,相互重叠或位于杂乱的背景中时,它可能会遇到困难,这可以解释为这些模型倾向于首先根据其空间边界来查看对象。

考虑一幅描绘多辆重叠汽车的图像。传统的实例分割模型(如逐像素模型)可能难以应对如下所示的情况。如果汽车重叠,这些模型可能会为整个重叠的汽车创建一个单一的并且是合并后的掩码。可能会把这个场景误认为是一辆形状奇怪的大型汽车,而不是多辆不同的汽车。

掩码分类

掩码分类(在MaskFormer中使用)采用了不同的方法。掩码分类模型不是独立对每个像素进行分类,而是为图像中的每个对象实例预测特定于类的掩码。这个掩码本质上是一个二值图像,表示哪些像素属于对象实例,哪些不属于。换句话说,单个遮罩代表整个对象,而不仅仅是单个像素。

在前一个例子中,使用掩码分类使我们能够识别图像中有多个“car”类实例,并为每个实例分配一个唯一的掩码,即使它们重叠。每辆车都被视为一个独立的实例,并被赋予自己独特的面具,以保持其与其他汽车分开的身份。

使用掩码分类/分割的模型示例:掩码R-CNN, DETR, Max-deeplab…

DETR

DETR的核心是一个被称为Transformer的强大机制,它允许模型克服传统逐像素和掩码分类方法的一些关键限制。

在传统的掩模分类方法中,如果两辆车重叠,可能难以将它们区分为不同的实体。而DETR为这类问题提供了一个优雅的解决方案。DETR不是为每辆车生成掩码,而是预测一组固定的边界框和相关的类概率。这种“集合预测”方法允许DETR以惊人的效率处理涉及重叠对象的复杂场景。

虽然DETR彻底改变了边界框预测,但它并没有直接提供分割掩码——这是许多应用程序中至关重要的细节。这时就出现了MaskFormer:它扩展了DETR的鲁棒集预测机制,为每个检测到的对象创建特定于类的掩码。所以MaskFormer建立在DETR的优势之上,并增强了生成高质量分割掩码的能力。

比如在上面提到的汽车场景中,MaskFormer不仅将每辆车识别为一个单独的实体(感谢DETR的集合预测机制),而且还为每辆车生成一个精确的掩码,准确捕获它们的边界,即使在重叠的情况下也是如此。

DETR和MaskFormer之间的这种协同作用为更准确、更高效的实例分割打开了一个可能性的世界,超越了传统的逐像素和掩码分类方法的限制。

MaskFormer

下面是MaskFormer的架构:

通过主干提取特征:MaskFormer主干网络负责从输入中提取关键的图像特征。这个主干可以是任何流行的CNN(卷积神经网络)架构,比如ResNet,它处理图像并提取一组特征,用F表示。

逐像素嵌入生成:然后将这些特征F传递给像素解码器,该解码器逐渐对图像特征进行上采样,生成我们所说的“逐像素嵌入”(E像素)。这些嵌入捕获图像中每个像素的局部和全局上下文。

段(Per-Segment )嵌入生成:与此同时,Transformer Decoder关注图像特征F并生成一组“N”段嵌入,用Q表示,通过“注意力”的机制为图像的不同部分分配不同的重要性权重。这些嵌入本质上代表了我们想要分类和定位的图像中的潜在对象(或片段)。

这里的术“Segment ”是指模型试图识别和分割的图像中对象的潜在实例。

一般来说,编码器处理输入数据,解码器使用处理后的数据生成输出。编码器和解码器的输入通常是序列,就像机器翻译任务中的句子一样。

而maskformer的“编码器”是骨干网络(用于maskFormer的Resnet50),它处理输入图像并生成一组特征映射。这些特征映射与传统Transformer中的编码器输出具有相同的目的,提供输入数据的丰富的高级表示。

然后使用这些嵌入Q来预测N个类标签和N个相应的掩码嵌入(E掩码)。这就是MaskFormer真正的亮点所在。与传统分割模型预测每个像素的类标签不同,MaskFormer预测每个潜在对象的类标签,以及相应的掩码嵌入。

在获得掩码嵌入后,MaskFormer通过像素嵌入(E像素)与掩码嵌入(E掩码)之间的点积产生N个二进制掩码,然后进行s型激活。这个过程可能会将每个对象实例的二进制掩码重叠。

最后对于像语义分割这样的任务,MaskFormer可以通过将N个二进制掩码与其相应的类预测相结合来计算最终预测。这种组合是通过一个简单的矩阵乘法实现的,给我们最终的分割和分类图像。

MaskFormer用于语义和实例分割

语义分割涉及到用类标签标记图像的每个像素(例如“汽车”,“狗”,“人”等)。但是它不区分同一类的不同实例。例如如果图像中有两个人,语义分割会将所有属于这两个人的像素标记为“人”,但它不会区分A和B。

而实例分割不仅对每个像素进行分类,而且对同一类的不同实例进行分离。比如实例分割需要将所有属于A的像素标记为“A”,所有属于B的像素标记为“B”。

大多数传统的计算机视觉模型将语义分割和实例分割视为独立的问题,需要不同的模型、损失函数和训练过程。但是MaskFormer设计了一个统一的方式处理这两个任务:它通过预测图像中每个对象实例的类标签和二进制掩码来工作。这种方法本质上结合了语义和实例分割的各个方面。

对于损失函数,MaskFormer使用统一的损失函数来处理这个掩码分类问题。这个损失函数以一种与语义和实例分割任务一致的方式评估预测掩码的质量。

所以使用相同的损失函数和训练过程得到的的MaskFormer模型可以不做任何修改地同时应用于语义和实例分割任务。

总结

MaskFormer提供了一种新的图像分割方法,集成了DETR模型和Transformer架构的优点。它使用基于掩码的预测,增强了对图像中复杂对象交互的处理。

MaskFormer的统一方法在图像分割方面向前迈出了一大步,为计算机视觉的进步开辟了新的可能性。它为进一步的研究奠定了基础,旨在提高我们理解和解释视觉世界的能力。

论文地址:

https://avoid.overfit.cn/post/3f38050c2a794e33ac9ee66642740fd3

作者:HannaMergui

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

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

相关文章

c++11 标准模板(STL)(std::basic_streambuf)(五)

定义于头文件 <streambuf> template< class CharT, class Traits std::char_traits<CharT> > class basic_streambuf; 类 basic_streambuf 控制字符序列的输入与输出。它包含下列内容并提供到它们的访问&#xff1a; 1) 受控制字符序列&#xff…

【探索 Kubernetes|作业管理篇 系列 13】StatefulSet 拓扑状态

前言 大家好&#xff0c;我是秋意零。 在上一篇中&#xff0c;我们讲解了 Deployment 这种无状态的控制器&#xff1b;而如果要部署有状态的应用&#xff0c;那么 Deployment 显然是达不到我们的需求的。 今天讲解的是 StatefulSet 有状态控制器。 最近搞了一个扣扣群&…

电气照明节能设计在智能控制系统中的应用

【摘要】&#xff1a;随着社会的不断发展&#xff0c;经济水平也随之稳步提升&#xff0c;人们的消防意识也正在逐步加强&#xff0c;这就促进了消防应急照明系统的发展。当今社会,智能照明系统已经普及到家家户户&#xff0c;并在建筑工程中被广泛应用&#xff0c;同时其自身具…

【计算机网络自顶向下】计算机网络期末自测题(一)

前言 “(学不懂一点) &#xff08;阴暗的爬行&#xff09;&#xff08;尖叫&#xff09;&#xff08;扭曲&#xff09;&#xff08;阴暗的爬行&#xff09;&#xff08;尖叫&#xff09;&#xff08;扭曲&#xff09;&#xff08;阴暗的爬行&#xff09;&#xff08;尖叫&#…

非公平锁实现原理+源码解读

目录 非公平锁实现原理 加锁解锁流程 加锁源码 解锁源码 非公平锁实现原理 加锁解锁流程 先从构造器开始看&#xff0c;默认为非公平锁实现 public ReentrantLock() {sync new NonfairSync(); } NonfairSync 继承自 AQS 没有竞争时 第一个竞争出现时 Thread-1 执行了…

解决不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接的问题

问题概述&#xff1a; 用windows server 2012 r2 vl x64搭了个文件服务器&#xff0c;在使用时有个问题&#xff0c;老是用户登录有问题&#xff0c;提示“不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接”。出现的原因不详&#xff0c;网上也没查到合理的…

操作系统3:CPU任务调度和进程调度

目录 1、处理机调度的层次 &#xff08;1&#xff09;高级调度(High Level Scheduling) &#xff08;2&#xff09;低级调度(Low Level Scheduling) &#xff08;3&#xff09;中级调度(Intermediate Scheduling) 2、处理机调度算法的目标 批处理系统的目标 3、作业与作…

MongoDB 基于角色的访问控制

一、概述 MongoDB采用基于角色的访问控制&#xff08;RBAC&#xff09;来管理对 MongoDB系统。向用户授予一个或多个角色那 确定用户对数据库资源和操作的访问权限。外面 在角色分配中&#xff0c;用户无权访问系统。 1、启用访问控制 MongoDB默认情况下不启用访问控制。您可…

Facebook Insights分析工具解读,掌握关键数据指标

什么是Facebook Insights&#xff1f; Facebook Insights是Facebook平台上的一项内置分析工具&#xff0c;旨在帮助企业和品牌了解其在Facebook上的表现和受众互动情况。该工具提供了丰富的数据和指标&#xff0c;可以帮助用户洞察粉丝群体、了解发布内容的表现&#xff0c;并…

闭门造轮(LVGL_2)

例程1_// 组件(widgets)&#xff1a; 标签(label)的用法 static void label_event_cb(lv_event_t * e) {lv_obj_t * obj lv_event_get_target(e); // 获取触发事件的部件(对象)lv_event_code_t code lv_event_get_code(e); // 获取当前部件(对象)触发的事件代码sw…

Golang每日一练(leetDay0105) 最小高度树、戳气球

目录 310. 最小高度树 Minimum Height Trees &#x1f31f;&#x1f31f; 312. 戳气球 Burst Balloons &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…

用自定义域名访问Tailscale节点

需求 tailscale 是好东西&#xff0c;在任何地方都可以和在局域网访问一样&#xff0c;但是也有着 IP 访问的不便&#xff0c;一方面 IP 是 tailscale 分配的&#xff08;非子网路由模式&#xff09;&#xff0c;另一方面还要记住各种端口 tailscale 也考虑到了这些问题&…

SpringBoot 使用 TestRestTemplate 进行 RESTful API 集成测试

SpringBoot 使用 TestRestTemplate 进行 RESTful API 集成测试 RESTful API 集成测试是测试应用程序与其外部依赖项之间的集成。SpringBoot提供了TestRestTemplate来测试RESTful API&#xff0c;本文将介绍如何使用TestRestTemplate进行RESTful API集成测试。 1. 什么是 TestR…

java File类 和 IO流

File类 文件和文件夹(文件路径)的抽象表示&#xff0c;是专门来出来磁盘上面的文件或文件夹的 构造方法 方法 返回boolean creatNewFile() 生成一个文件&#xff0c;当且仅当具有该名称的文件尚不存在时 public class Demo02 {public static void main(String[] args) th…

知了汇智网安项目实训助力高校实战型人才培养

当前&#xff0c;随着信息技术的高速发展和网络的普及应用&#xff0c;网络安全面临着日益复杂和严峻的挑战。恶意黑客、网络病毒、数据泄露等安全威胁不断涌现&#xff0c;给个人、企业和国家的信息资产和社会稳定带来了巨大风险。新形势之下&#xff0c;培养网络安全实战型人…

深眸科技受邀参加昆山元宇宙装备展与产业论坛,为工业视觉注智赋能

为落实《“十四五”数字经济发展规划》&#xff0c;进一步夯实元宇宙在终端装备领域的落地与拓展&#xff0c;江苏昆山将于6月27至29日&#xff0c;举办“2023元宇宙装备展”。本届展会由昆山市人民政府主办&#xff0c;昆山市工业和信息化局、赛迪工业和信息化研究院集团&…

力扣题库刷题笔记8--字符串转换正数(atoi)

1、题目如下&#xff1a; 2、个人Python代码实现如下&#xff1a; 这里可以看到&#xff0c;解答错误很多次&#xff0c;实际上就是对于题目的条件读的不够细&#xff0c;导致很多边界值的用例跑不过。而且个人习惯极其不好&#xff0c;没有输入各种可能的输入进行调试&#xf…

【计算机网络自顶向下】计算机网络期末自测题(一)答案

2019-2020 学年第 2 学期自测题答案及评分标准 (卷 1) 计算机网络 一、 填空题&#xff1a; 参考答案&#xff1a; 1 、 01000101 、11100111 3 、 100Mbps、双绞线、基带、全双工 [10Mbps 要求单位] 4 、 报文 5 、 ICMP 6 、 虚电路 7 、 距离矢量、链路状态 …

考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(matlab代码)

目录 1 主要内容 目标函数 电动汽车负荷建模 算例系统图 程序亮点 2 部分代码 3 程序结果 ​4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第四章《考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联…

【抗扰PID控制】干扰抑制PID控制器研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…