CVPR 2023 | OVSeg: Open-Vocabulary Semantic Segmentation with Mask-adapted CLIP

news2024/11/24 19:51:46

CVPR 2023 | OVSeg: Open-Vocabulary Semantic Segmentation with Mask-adapted CLIP

  • 论文:https://arxiv.org/abs/2210.04150
  • 代码:https://github.com/facebookresearch/ov-seg

在这里插入图片描述

在这里插入图片描述

架构设计

在这里插入图片描述

  • 类别无关的 mask proposal generator:MaskFormer
  • 手动微调以适应 masked image 的 CLIP:使用时被冻结。

解码设计

  • 分类标签利用 prompt 模板和 CLIP 的 text encoder 生成 K K K个类别对应的文本嵌入 t k t_k tk。额外引入了一个“on object”类别,用于匹配那些没有合适的真值匹配的预测。并设置了一个可学习的嵌入 ∅ \emptyset 用于对应这一类别。
  • MaskFormer 生成 N N N个 proposal embedding 和 N 个 mask proposal。
    • proposal embedding v i v_i vi用于表征对应 mask proposal 的目标信息。可以得到分类概率: p i , k = exp ⁡ ( σ ( v i , t k ) / τ ) / ∑ k ( exp ⁡ ( σ ( v i , t k ) / τ ) ) p_{i,k}=\exp(\sigma(v_i, t_k)/\tau)/\sum_k(\exp(\sigma(v_i, t_k)/\tau)) pi,k=exp(σ(vi,tk)/τ)/k(exp(σ(vi,tk)/τ))
    • mask proposal 会用于从输入图像中提取目标。按照紧凑的方形区域提取 patch 后,利用 mask 置零背景像素,并放缩 patch 到 CLIP 的输入分辨率上。patch 送入 CLIP 的 visual encoder 提取图像表征。可以得到另一个分类概率: p ^ i , k = exp ⁡ ( σ ( v ^ i , t k ) / τ ) / ∑ k ( exp ⁡ ( σ ( v ^ i , t k ) / τ ) ) \hat{p}_{i,k}=\exp(\sigma(\hat{v}_i, t_k)/\tau)/\sum_k(\exp(\sigma(\hat{v}_i, t_k)/\tau)) p^i,k=exp(σ(v^i,tk)/τ)/k(exp(σ(v^i,tk)/τ))
    • 最终预测的概率为二者的几何平均: p i , k 1 − λ ∗ p ^ i , k λ , λ ∈ [ 0 , 1 ] p_{i,k}^{1-\lambda} * \hat{p}_{i,k}^{\lambda}, \lambda \in [0, 1] pi,k1λp^i,kλ,λ[0,1]
    • 最终预测使用 MaskFormer 的融合模块来融合不同的 mask-wsie 预测。

其他设计

  • 本文借鉴了不少来自 ZegFormer 的设计:
    • 在 Mask 类别设置中,额外引入了一个“on object”类别,用于匹配那些没有合适的真值匹配的预测。并设置了一个可学习的嵌入用于对应这一类别。
    • 使用了类似的两种分类概率计算方式和组合方式。

在这里插入图片描述

  • Prompt Engineering:使用了来自 Open-vocabulary object detection via vision and language knowledge distillation 的 15 个 text prompt templates。对嵌入平均。
  • 训练过程:先使用 COCO-Stuff 训练修改的 MaskFormer,在使用从 COCO-Captions 构造的数据集微调 CLIP。

实验发现

  • 通过精心设计的实验对比发现,预训练的 CLIP 无法对 masked image 执行令人满意的分类,这是两阶段开放词汇分割模型的性能瓶颈。本文认为这是由于蒙面图像和 CLIP 的训练图像之间的显著域差距造成的。CLIP 在自然图像上进行预训练,并使用了最小的数据增强。而且 mask proposal 是从原始图像中裁剪和调整大小后得到的,这也进一步被不准确的分割 mask 破坏。所以 CLIP 需要进行特殊的微调。
  • 微调 CLIP 时,如果使用具有闭集类别标签的分割数据(例如 171 类的 COCO-stuff)会破坏 CLIP 的对于开放词汇概念的泛化能力。为此本文使用了现有的 image-caption 数据集来构建微调过程从而获得了更好的性能。
  • 剪裁图像但不屏蔽背景像素的设定会导致更差的性能。这可能是因为这些背景内容会干扰 CLIP 的分类能力。
  • 模型的失败中,有一部分是因为语言定义类别的模糊性,有一部分的类别之间概念存在重叠。所以对于开放词汇分割模型设计一种更好的评估方式仍然是一个重要的主题。

在这里插入图片描述

  • 调整CLIP:将自行构造的伪标签注释与原本的真实数据注释组合后训练,性能反而不如仅使用伪标签注释的性能,但是也优于仅仅使用原始标注的效果。或许更好的组合比例可以获得性能提升。

CLIP 的微调

数据构造

在这里插入图片描述

给定一个 image-caption 对,先提取标题中的名词,并使用预训练的分割模型生成类别无关的掩码区域建议。再使用预训练 CLIP 模型,为每个提取的名词分配最佳匹配提案。通过从 masked images 和新类别之间的这种弱监督对齐中学习,自适应的 CLIP 更好地保留了其对开放词汇分类的泛化能力。

  • 这一过程首先使用预训练的 MaskFormer 提取 masked proposal,并从对应的图像 caption 中利用现成的语言解析器提取所有名词,将其看做潜在的类别。然后利用 CLIP 来为每个类别挑选最匹配的 mask proposal。
  • 从 COCO-Captions 中,作者们测试了两个版本的数据:1)每个图像使用 5 个 caption 时,获得 1.3M 的 mask-category 对,包含 27K 个不重复的名词;2)每个图像使用 1 个 caption 时,获得 440K 对有着 12K 不重复名词的数据。实验中,后者获得了相对更好的表现,而且训练也更快。这些数据虽然具有噪声,但是信息的多样性展现出了相较于人工标签更好的性能。

在这里插入图片描述

Mask Prompt Tuning(MPT)

在这里插入图片描述

当 masked image 转化为 token 时,将“zero token”替换为可学习的 prompt token。微调过程中,要么只训练 prompt 并冻结 CLIP 权重,要么同时训练它们。文中发现,单独的 MPT 显著提高了 CLIP 在掩码图像上的性能。对于多任务场景,这是一个至关重要的属性,因为它与其他任务共享,所以无法更改 CLIP 的权重。可学习的 mask prompts 被用于替换那些整个都属于背景的 patch 所对应的 token,这里也同时借鉴了VPT(Visual Prompt Tuning)中的deep prompts的思想,在Transformer的更深层中加入了这样的prompt token。整个过程中文本编码器始终被冻结。

在这里插入图片描述
在这里插入图片描述

  • 而对于微调后的 CLIP,再进行 MPT 可以进一步提升性能。
  • 如果反过来,即先 MPT 后使用固定的 mask prompts 进行 CLIP 微调,或二者一起学习,即同时学习 mask prompts 并微调 CLIP,性能都会有下降。

实验对比

在这里插入图片描述

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

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

相关文章

linux端口被占用 关闭端口

1.查看端口是否被占用 netstat -anp |grep [端口号]2.查看占用的进程 lsof -i:[端口号]3.关闭进程 kill -9 [进程PID]LISTEN 表示被占用,3061/java 分别是:进程PID/进程 通过进程PID关闭进程

桥接模式:解耦抽象与实现

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。本文将深入探讨桥接模式的原理、结构和使用方法,并通过详细的 Java 示例代码来说明。 1. 桥接模式的定义 桥接模式是一种将抽象部分与实现部分分离的设计模…

数字信号处理复习知识点

目录 第一章:时域离散系统 1.什么是因果性和稳定性 2.模拟频率,模拟角频率, 数字频率之间的关系 3.什么是频谱混叠? 第二章:时域离散信号和系统的频域分析 1.时域离散信号傅立叶变换的定义 2.如何用模拟信号的傅立…

电信青年员工踏上三千里数字化追梦之旅,数字员工为电信高质量发展注智赋能

导语: 近年来,广西电信紧紧围绕集团战略,聚焦产业数字化发展机遇,加强前瞻性技术研究和人工智能产业应用研究,为夯实高质量发展增添科技动力。 在数字中国建设的大背景下,广西电信全资子公司广西壮族自治区…

推荐一款适合前端宝宝体质的数据库文档工具

先看效果 首页 安心食用 npx dbshowlatest按照提示输入相关信息 Welcome to the DB Show! v0.0.7? Use config from local? no ? Select a database type MySQL ? Enter the host name localhost ? Enter the port number 3306 ? Enter the user name root ? Ente…

Linux slab 分配器源码解析

文章目录 前言一、slab分配器1.1 简介1.2 高速缓存描述符1.3 架构图 二、相关结构体2.1 struct array_cache2.2 struct kmem_list32.3 struct slab2.3.1 简介2.3.2 OFF_SLAB 三、创建和释放slab3.1 创建slab3.1.1 kmem_getpages3.1.2 alloc_slabmgmt3.1.3 slab_map_pages 3.2 释…

常用数据分类算法原理介绍、优缺点分析与代码实现[LR/RF/DT/SVM/NavieBayes/GBDT/XGBoost/DNN/LightGBM等]

本文的主要目的是总结记录日常学习工作中常用到的一些数据分类算法,对其原理简单总结记录,同时分析对应的优缺点,以后需要的时候可以直接翻看,避免每次都要查询浪费时间,欢迎补充。 机器学习领域中常用的分类模型包括以…

分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)

目录 分布式事物解决方案_XA方案 分布式事物解决方案_Seata实现 Seata提供XA模式实现分布式事务_业务说明 Seata提供XA模式实现分布式事务_下载启动Seata服务 Seata提供XA模式实现分布式事务_搭建聚合父工程构建 创建工程distribute-transaction 字符编码 注解生效激活 Jav…

three js模型旋转

如何让立方体模型旋转到指定的面 父页面 <b-modal ref"modal_mini" size"lg" centered static :hide-footer"true":dialog-class"[modal_mini]":content-class"position-static":body-class"p-0":header-class…

上海亚商投顾:沪指放量调整 两市超4000只个股下跌

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 沪指今日震荡调整&#xff0c;深成指、创业板指午后跌超1%。AI概念股集体下挫&#xff0c;CPO、算力等方向领跌&am…

感知网络安全态势是什么?感知网络安全态势如何实施

网络安全是当今社会中一个非常重要的话题。随着互联网的普及和信息技术的发展&#xff0c;网络安全问题日益突出。为了有效应对各种网络威胁和攻击&#xff0c;网络安全态势感知成为了一种关键的技术手段。 网络安全态势感知的定义 网络安全态势感知是指通过对网络环境中的各种…

2023-07-11力扣每日一题

链接&#xff1a; https://leetcode.cn/problems/maximum-alternating-subsequence-sum/ 题意&#xff1a; 给定一个数组&#xff0c;求一个子序列&#xff0c;使这个子序列的奇数位和-偶数位和最大&#xff08;下标从1开始的话|反正第一个数是&#xff09; 解&#xff1a;…

基于linux下的高并发服务器开发(第一章)-Linux环境开发搭建1.1

1、安装虚拟机 2、在虚拟机中安装Linux系统 &#xff08;1&#xff09;新建虚拟机向导 点击虚拟机设置&#xff0c;使用ISO映像文件(M) &#xff08;2&#xff09;Ubuntu18安装 点击现在安装 点击继续 静静地接下来的安装即可 安装好后&#xff0c;安装VMware Tools 将压缩…

设计原则及设计模式基础

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结&#xff0c;使用设计模式是为了可以重用代码&#xff0c;让代码更容易被他人理解并且提高代码的可靠性。 1 设计模式概述 GoF(Gang Of Four 四人组&#xff0c;指4位著名软件工程学者)&#xff…

ubuntu安装单个redis服务

1.apt-get install redis-server 使用lighthouse用户这样操作会报与权限有关的错误&#xff0c; 改成使用root账号操作 2.安装完成后&#xff0c;Redis服务器会自动启动&#xff0c;查看进程是否正常启动 ps -axu|grep redis redis 18689 0.1 0.4 40136 6860 ? …

第3讲 Camera Sensor 数据流

Camera Sensor Block Camera Sensor Output Format raw8 一个像素点用8bit来表示&#xff0c;范围0&#xff5e;256 raw10 一个像素点用10bit来表示&#xff0c;范围0&#xff5e;1024 raw12 一个像素点用12bit来表示&#xff0c;范围0&#xff5e;4096 Camera Sensor Fr…

智慧园区:如何利用AI识别与视频技术实现工业园区监管模式的升级?

一、背景分析 智慧园区建设的目标是通过运用现代信息技术&#xff0c;通过智能化管理&#xff0c;解决园区管理中存在的许多难题&#xff0c;例如信息不对称、资源浪费等问题&#xff0c;将园区内的设施、设备和系统进行连接和互通&#xff0c;园区可以实现各种资源的高效利用…

这一次,Python 真的有望告别 GIL 锁了?

Python 中有一把著名的锁——全局解释器锁&#xff08;Global Interpreter Lock&#xff0c;简写 GIL&#xff09;&#xff0c;它的作用是防止多个本地线程同时执行 Python 字节码&#xff0c;这会导致 Python 无法实现真正的多线程执行。&#xff08;注&#xff1a;本文中 Pyt…

TexSpire-比markdown更为简洁的文本标记语言,用文字即可生成演示效果

文章目录 一、前言二、语言特点三、举例1、文本框2、表格3、折线图4、思维导图 四、相关资料 一、前言 老实说&#xff0c;本人对于ppt的花里胡哨深恶痛绝&#xff0c;特别是每一次汇报&#xff0c;都需要花费我很多时间去找模板&#xff0c;去设计&#xff0c;去美化内容时&a…

【源码分析系列】number-precision和bignumber.js

01_JS精度 好久前在公司分享的文章&#xff0c;现在才发…本文阐述了为什么0.1 0.2 ! 0.3&#xff0c;并分析了number-precision和bignumber.js的解决原理 被JS精度问题小坑了一把&#xff0c;所以系统来 复习 学习一波~ 背景 在实际业务开发中&#xff0c;可能会遇到一下问题…