OneFormer: One Transformer to Rule Universal Image Segmentation论文笔记

论文https://arxiv.org/pdf/2211.06220.pdf
Codehttps://github.com/SHI-Labs/OneFormer

文章目录

  • 1. Motivation
  • 2. 方法
    • 2.1 与Mask2Former的相同之处
    • 2.2 OneFormer创新之处
    • 2.3 Task Conditioned Joint Training
    • 2.4 Query Representations
    • 2.4 Task Guided Contrastive Queries
  • 3. 实验
    • 3.1 BenchMarks
    • 3.2 Ablation Studies
    • 3.3 超参数实验

1. Motivation

在这里插入图片描述

  • 通用图像分割并不是本文所提出的一个概念。远有UperNet,近有Mask2Former、K-Net,这些网络也都是作为一种通用分割架构被提出。
  • 但是,本文认为,这些网络对于语义分割、实例分割、全景分割三种虽然可以做到模型结构的统一,但是还是需要特定任务单独训练得到各自专用的模型,作者将这一类模型称之为semi-universal
  • 本文提出的OneFormer不仅模型结构统一,同时,语义分割、实例分割、全景分割只需要在全景分割数据集训练一遍,据可以得到一个三种任务通用的模型用于推理,达到真正意义上的universal

2. 方法

在这里插入图片描述

2.1 与Mask2Former的相同之处

先不看(b)模块中与文本相关的内容,OneFormer的其余部分模型结构与Mask2Former基本一致:

  1. Backbone:使用ImageNet预训练的网络编码多尺度特征;
  2. Pixel Decoder:使用Multi-Scale Deformable Transformer (MSDeformAttn) 建模多尺度上下文特征;
  3. Transformer Decoder:使用{1/8、1/16、1/32}三个分辨率的特征图对object query进行更新,李勇的主要结构是cross attention、self attention、FFN;
  4. 利用更新后的object query预测(K+1)个类别;
  5. 利用更新后的object query和1/4特征图点积给每个query生成对应的binary mask;

2.2 OneFormer创新之处

相比于Mask2Former,OneFormer的创新点或者说不同之处有以下几点:

  1. Task Conditioned Joint Training:为了将语义分割、实例分割、全景分割三个任务在一个统一的架构中进行统一训练,需要引入特定任务的任务提示词。
  2. Query Representations:除了Mask2Former这一类方法中的用到的object query,为方便理解称之为visual query,本文提出了text query,语义分割、实例分割、全景分割都有各自对应的不同的text query。
  3. Task Guided Contrastive Queries:计算visual query和text query之间的对比损失,因为不同任务的text query是不同的,这样做就可以使得不同任务训练得到的visual query能够具有区分度;

2.3 Task Conditioned Joint Training

  • 首先,对于每种任务,使用the task is { }来构造任务提示词 I t a s k I_{task} Itask ,该提示词随后会经过Tokenize和Embedding以及MLP,得到task-token Q t a s k Q_{task} Qtask
  • 此外,如下图所示,对于每种任务,统计其中出现的各类thing或者stuff的数目,采用a photo with a {CLS}这样的短语构造 T l i s t T_{list} Tlist 序列,。为了使得batch内部的文本长度对齐,需要使用a/an {task} photo这样的短语进行padding,代表no-object,padding后的结果是 T p a d T_{pad} Tpad

在这里插入图片描述

2.4 Query Representations

Query Representations部分主要介绍text query Q t e x t Q_{text} Qtext 和object query Q Q Q是如何构造和初始化的:

  • Q t e x t Q_{text} Qtext:将 T p a d T_{pad} Tpad 进行 Tokenize 以及Embedding,随后采用6层transformer encoder得到 N t e x t N_{text} Ntext个Embedding。然后,将 N c t x N_{ctx} Nctx个可学习的Embedding和 N t e x t N_{text} Ntext个embedding连接起来,最终得到 N N N 个text query Q t e x t Q_{text} Qtext
    在这里插入图片描述

  • Q Q Q:首先,将 Q t a s k Q_{task} Qtask 复制 N − 1 N-1 N1 次,的到初始化后的object query Q ′ Q' Q,然后,使用1/4特征图对 Q ′ Q' Q 进行更新(使用2层transformer),最后,将 Q t a s k Q_{task} Qtask Q ′ Q' Q 连接得到 N N N 个object query Q Q Q

2.4 Task Guided Contrastive Queries

将语义分割、实例分割、全景分割统一在同一个模型中的关键挑战在于,怎么为每个任务生成任务特定的object query,那么,该如何让每种任务的object query之间彼此区分呢?

本文的解决方案是,计算text query Q t e x t Q_{text} Qtext 和object query Q Q Q 之间的对比损失,因为 Q t e x t Q_{text} Qtext是从特定任务的GT中通过统计thing和stuff的数量得到的,所以不同任务的 Q t e x t Q_{text} Qtext之间是彼此区分的,那么只需要将 Q Q Q Q t e x t Q_{text} Qtext 对齐。

所采用的对比损失如下:

在这里插入图片描述
B B B 是一个batch内部的object-text pairs.

3. 实验

3.1 BenchMarks

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2 Ablation Studies

在这里插入图片描述

3.3 超参数实验

在这里插入图片描述

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

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

相关文章

c++的引用和指针

我们要清楚的知道,使用指针和引用都可以的传入函数的main函数的变量在局部函数改变值时,main函数里面相应的变量也会改变值。但他俩的方式不同。 我们先来说指针,指针传入局部参数时,他会在创建个局部指针变量,然后把…

Unity——导航系统补充说明

一、导航系统补充说明 1、导航与动画 我们可以通过设置动画状态机的变量,让动画匹配由玩家直接控制的角色的移动。那么自动导航的角色如何与动画系统结合呢? 有两个常用的属性可以获得导航代理当前的状态: 一是agent.velocity,…

Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

【计算机网络】UDP协议详解

目录 前言 端口号的拓展 端口号范围划分 netstat pidof UDP协议 UDP协议端格式 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 前言 我们前面讲完了http和https协议,它们都属于应用层,按照TCP/IP五层模…

优思学院|为什么质量工程师在别人看是“救火“的呢?

为什么质量工程师在别人看是‘救火’的呢?现今的质量管理体系已经很成熟,一家公司质量部门会有IQC、IPQC、OQC负责来料、过程质量、成品质量等等,而质量工程师(QE)的工作是要确保这些活动合理和有效,不产生…

9.9|day 2|整数拆分|不同的二叉搜索树

整数拆分&#xff1a; class Solution {public int integerBreak(int n) {int[] dp new int[n1];dp[2] 1;for(int i 3;i<n;i){for(int j 1;j<i-j;j){dp[i] Math.max(dp[i],Math.max(j*dp[i-j],j*(i-j)));}}//这里感觉要注意的就是j是我们要拆分的数&#xff0c;所…

蓝桥杯打卡Day7

文章目录 阶乘的末尾0整除问题 一、阶乘的末尾0IO链接 本题思路&#xff1a;由于本题需要求阶乘的末尾0&#xff0c;由于我们知道2*510可以得到一个0&#xff0c;那么我们就可以找出2的数和5的数&#xff0c;但是由于是阶乘&#xff0c;所以5的数量肯定是小于2的数量&#xf…

【数据结构】3000字剖析链表及双向链表

文章目录 &#x1f490; 链表的概念与结构&#x1f490;链表的介绍&#x1f490;链表的模拟实现 &#x1f490;双向链表&#x1f490;双向链表的模拟实现 &#x1f490;链表常用的方法&#x1f490;链表及顺序表的遍历&#x1f490;ArrayList和LinkedList的差异 &#x1f490; …

logback/log4j基本配置和标签详解

什么是logback logback 继承自 log4j&#xff0c;它建立在有十年工业经验的日志系统之上。它比其它所有的日志系统更快并且更小&#xff0c;包含了许多独特并且有用的特性。 logback.xml 首先直接上配置&#xff0c;我在项目过程中发现一些同时遇到需要logback文件的时候就去…

怎样建立一个班级查分系统?

在现代教育中&#xff0c;建立一个高效的班级查分系统对于老师和家长们来说至关重要。物种草作为一款功能强大的在线教育工具&#xff0c;为教师们提供了一个便捷的方式来管理和分享学生成绩。本文将以物种草的口吻&#xff0c;为你介绍如何建立一个高效的班级查分系统&#xf…

SpringBoot2.0入门(详细文档)

文章目录 Springboot是什么Springboot2.x依赖环境和版本新特性说明为什么学习Springboot从springboot优点来看从未来发展的趋势来看 开发环境Spring Boot开发环境搭建和项目启动jdk 的配置Spring Boot 工程的构建maven配置IDEA 快速构建maven 创建工程常用注解 完整代码 Spring…

2023高教社杯数学建模B题思路代码 - 多波束测线问题

# 1 赛题 B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播&#xff0c; 在不同界面上产生反射&#xff0c; 利用这一原理&#xff0c;从测量船换能器垂直向海底发射声波信 号&#xff0c;并记录从声波发射到…

使用融云 CallPlus SDK,一小时实现一款 1V1 视频应用

9 月 21 日&#xff0c;融云直播课 社交泛娱乐出海最短变现路径如何快速实现一款 1V1 视频应用&#xff1f; 欢迎点击小程序报名~ 1V1 音视频、远程服务类应用的实现利器——融云 CallPlus SDK 上线&#xff01; 关注【融云全球互联网通信云】了解更多 作为新一代音视频通话场…

基于Python和mysql开发的看图猜成语微信小程序(源码+数据库+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python和mysql开发的看图猜成语微信小程序&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都…

2022年全国研究生数学建模竞赛华为杯A题移动场景超分辨定位问题求解全过程文档及程序

2022年全国研究生数学建模竞赛华为杯 A题 移动场景超分辨定位问题 原题再现&#xff1a; 在日常家庭生活中&#xff0c;人们可能需要花费大量时间去寻找随意摆放在家中某些角落里的小物品。但如果给某些重要物品贴上电路标签&#xff0c;再利用诸如扫地机器人的全屋覆盖能力&…

前端实现页面通过canvas添加全屏水印

写在前面&#xff0c;博主是个在北京打拼的码农&#xff0c;从事前端工作5年了&#xff0c;做过十多个大大小小不同类型的项目&#xff0c;最近心血来潮在这儿写点东西&#xff0c;欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何…

视频直播点播平台EasyDSS如何单独保存录像计划文件?具体如何操作呢?

视频推拉流EasyDSS视频直播点播平台&#xff0c;集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体&#xff0c;可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 有用户反馈&#xff1a;在视频直播点播平台EasyDSS中设置了片段形…

【数据结构--二叉树】合并二叉树

/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2){if(root1NULL&&root2NULL)//两个二叉树都…

华为云云耀云服务器L实例评测|Linux系统之安装Tomcat

华为云云耀云服务器L实例评测&#xff5c;Linux系统之安装Tomcat 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、Tomcat介绍2.1 Tomcat简介2.2 Tomcat特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购买云耀云服务器L实例4.…

risc-v dv源代码分析

地址为 GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verificationRandom instruction generator for RISC-V processor verification - GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verif…