CVPR 2023 | SAN: Side Adapter Network for Open-Vocabulary Semantic Segmentation

news2024/11/16 9:19:37

CVPR 2023 | SAN: Side Adapter Network for Open-Vocabulary Semantic Segmentation

  • 论文:https://arxiv.org/abs/2302.12242
  • 代码:https://github.com/MendelXu/SAN

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

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

架构设计

  • 冻结的 CLIP,其位置编码为了适应不同于预训练的输入分辨率,需要进行微调。
  • 基于 Transformer (使用各层共享的绝对位置编码)的可训练的与 CLIP 交互的轻量 Adapter 模型。其输入为高分辨率图像,中间的 Transformer 层中附加了可学习的 N(默认为 100)个 token 作为特殊的 query,在模型最后用于 Mask Proposal 生成。

解码设计

  • Adapter 结构与 CLIP 交互。并将 CLIP 分成浅层和深层两个不同的阶段。
    • 融合 visual token:浅层 CLIP 块的特征中 CLS 之外的 visual token 特征被重排、1x1 卷积和放缩操作后,加到 Adapter 的对应特征上。
    • Mask 预测与识别:深层 CLIP 块则会使用 Adapter 生成的 Mask Proposal 和对应的 Attention Bias 用于 Mask Recognition。
      • Mask Recognition
        • Adapter 端:N 个 query token 与自身的 visual token 之间通过变换和内积获得形状为 H / 16 × W / 16 × K × N H/16 \times W/16 \times K \times N H/16×W/16×K×N(K 为 Attention 头的数量)的用于调整 CLIP Attention 中运算的 Attention Bias。
        • CLIP 端:为了不改变 CLIP 的参数,这里利用 Attention Bias 引导原本用于图像级别分类的 CLS token 在感兴趣区域的注意力图,从而实现 Mask 识别。这里引入了使用 CLS 初始化的 N 个 SLS tokens(类似于 Openvocabulary panoptic segmentation with maskclip 中的设计,但本文中是否是可训练的并不清楚,直观理解应该是在初始化的基础上不断更新,本身不额外优化)。而 SLS tokens 的更新过程独立于 CLIP 中原始的其他 token(visual tokens 和 CLS token),不直接影响他们,而仅仅会利用 visual token 更新自身。这一更新过程中:Q 和 V 都来自 SLS,K 来自 CLIP 的 visual token。Adapter 中预测得到的 Attention Bias 会被加到 QK 结果上。
        • 通过类别文本嵌入与 SLS 之间计算相似性获得了 N 与不同类别之间的对应关系矩阵,即 Proposal Logits。从而可以用于分类(论文未说明如何分类),使用分类损失监督。
      • Mask Prediction:Adapter 中附加的 N 个 query token 与自身的 visual token 之间通过变换和内积获得形状为 H / 16 × W / 16 × N H/16 \times W/16 \times N H/16×W/16×N的 Mask Proposal。利用已经获得的 Proposal Logits,相乘可以获得每个类别对应的分割图。使用分割损失监督。

在这里插入图片描述

其他设计

  • Prompt Engineering:CLIP 文本模型基于 14 个模板嵌入的平均作为最终的文本嵌入。
  • 基于 Adapter 的思想,在 CLIP 的视觉编码器上构建了轻量可学习的辅助结构,通过单次前向传播同时完成了 Mask 预测与识别的任务。
  • 将 Mask 预测与识别进行了解耦,作者认为,在 CLIP 中用于识别 Mask 的区域可能并不是 Mask 本身所对应的区域。
  • 利用 CLIP 文本编码器统计了不同测试集与 COCO stuff 测试集之间的类别标签集合的相似程度,从这些不同程度的相似情况可以反映出这些数据集实际上可以展现出模型的在 in-domain 和 cross-domain 两种类型的 open-vocabulary 能力。
  • 实验展现了一些有意思的结论:
    • CLIP-aware 的 Mask Prediction 的设计对于模型性能的重要性。
    • 微调位置编码(优于固定的位置编码)来适应新尺寸的设定下,CLIP 模型最优的输入尺寸并非是预训练尺寸。这与 CLIPSeg 中的实验现象类似。
    • 微调 CLIP 模型会破坏 CLIP 的开集能力。冻结的使用形式是最优的。

性能对比

在这里插入图片描述

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

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

相关文章

贪心算法:解决最优问题的简洁而高效方法

目录 引言: 一. 概念与原理 二. 应用场景 3. 实现方法 4. 优缺点分析 引言: 在计算机科学领域,我们经常面临着需要在一系列选择中找到最优解决方案的问题。贪心算法正是针对这类最优化问题而设计的一种简洁而高效的方法。不同于其他复杂…

Educational Codeforces Round 151 (Rated for Div. 2)(A-B)

打完涨了20分…… 算法选修课就学会了dfs……如果有期末复习的这种劲头&#xff0c;其他算法估计早就学会了&#xff08; A Forbidden Integer 这个还WA了三发…… signed main(){IOS;int n,k,x;bool f1;cf{cin>>n>>k>>x;if(k1)cout<<"NO"…

Quiz 14_2-1: Using Web Services | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Quiz 14_2-1: Using Web Services单选题&#xff08;1-15&#xff09;操作题Autograder : Extracting Data from XML Python for Everybody 课程简介 Python for Everybody 零基础程序设计&#xff08;Python 入门&#xff09; This cou…

Echarts折线图默认不显示数据圆点,鼠标hover时折线图上才显示圆点

option {......tooltip: {trigger: axis,},series: [{symbol: circle,symbolSize: 5,showSymbol: false, // 只有在 tooltip hover 的时候显示symbolitemStyle: { // symbol样式normal: {color: rgb(255, 255, 255),borderColor: rgba(255, 255, 255, 0.2), // symbol边框颜色…

6.20、JAVA 初识序列化与反序列化

初识序列化与反序列化 1 概述 序列化是指将对象的状态信息转换为可以存储或传输形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后可以通过从存储区中读取或者反序列化对象的状态,重新创建该对象. 序列化:利用ObjectOutputStream,把对象的信息,按照固定…

【QT】如何自定义QMessageBox的窗口大小,通过继承QDialog重新实现美观的弹窗

目录 1. QMessageBox原有的弹窗2. 网上第一种方法&#xff1a;通过样式表setStyleSheet实现改变弹窗大小&#xff08;总体不美观&#xff09;3. 网上第二种方法&#xff1a;重写ShowEvent()改变弹窗大小&#xff08;总体也不美观&#xff09;4. 最好的办法&#xff1a;继承QDia…

centos安装k8s

1. 前置 俩台centos服务器,不过多说明,教程基于centos 2. hosts配置 我这样配置&#xff0c;最后没发现那块有联动&#xff0c;望大佬更正 vim /etc/hosts 在末尾添加 192.***** master 192.*** note3. 防火墙 说是要关闭防火墙&#xff0c;我俩台服务器都是基于内网&…

服务器数据库中遭受Devos勒索病毒攻击后解密处理方法,勒索病毒数据恢复

在当今数字化时代&#xff0c;服务器数据库的安全性备受关注。然而&#xff0c;网络安全威胁依然存在&#xff0c;勒索病毒如Devos仍然是一种常见的攻击计算机病毒。最近&#xff0c;收到很多企业的求助&#xff0c;企业的财务系统账套遭到了Devos勒索病毒攻击&#xff0c;导致…

js数组中对象的替换,替换原数组 lodash中一些常用的方法(很实用)

代码 let myArray [{name: John, age: 25},{name: Alice, age: 30},{name: Bob, age: 35} ];// 要替换的对象 let objToReplace {name: Alice, age: 30};// 替换为的对象 let replacementObj {name: Alex, age: 28};// 使用forEach方法 myArray.forEach((obj, index) > …

浙大滨江院Om中心发布首个大规模图文配对遥感数据集,让通用基础模型也能服务遥感领域...

写在前面 2021 年年底&#xff0c;OpenAI 发布了 CLIP&#xff0c;利用带噪的图像-文本配对数据预训练的视觉语言模型&#xff0c;展示了前所未有的图像-文本关联能力&#xff0c;在各种下游任务中取得了惊人的结果。虽然取得了很大的进展&#xff0c;但是这类通用视觉语言基础…

Visual C++中的虚函数和纯虚函数(以策略设计模式为例)

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来说说Visual C中的虚函数和纯虚函数。该系列帖子全部使用我本人自创的对比学习法。也就是当C学不下去的时候&#xff0c;就用JAVA实现同样的代码&#xff0c;然后再用对比的方法把C学会。 直接说虚函数…

微信小程序 rich-text富文本框 怎么设置里面节点的样式

1、在JS中我们获取数据&#xff0c;在没有类名的情况下 使用正则匹配你想要添加演示的节点 res[1].data[0].f_content为rich-text里面的节点 如图 代码&#xff1a;让获取的节点中的图片的最大宽度为100%,高度为auto this.content res[1].data[0].f_content.replace(/\<…

数据库连接与操作怎么学习? - 易智编译EaseEditing

学习数据库连接和操作是进行数据管理和处理的关键技能之一。下面是一些建议&#xff0c;可以帮助您学习数据库连接和操作&#xff1a; 学习数据库基础知识&#xff1a; 首先&#xff0c;了解数据库的基本概念、术语和原理。掌握关系型数据库和非关系型数据库的特点以及它们之…

Spring Boot中的Elasticsearch自动配置

Spring Boot中的Elasticsearch自动配置 Elasticsearch是一个基于Lucene的分布式全文搜索引擎&#xff0c;它在搜索、分析等方面具有出色的表现。Spring Boot中的Elasticsearch自动配置为我们提供了一种快速集成Elasticsearch的方式&#xff0c;使我们可以在Spring Boot应用程序…

【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

layui弹出层laydate时间选择一闪而过,无法弹出时间选择

问题&#xff1a;layUI日期框弹不出&#xff0c;一闪而过 laydate.render({elem: #ctime,type: datetime,trigger:click }); 解决方案&#xff1a;关键代码&#xff0c;添加如下代码 trigger:click 实现效果

浏览器基础原理-安全: HTTPS

HTTP协议的历史: HTTP协议的目的很单纯, 就是为了传输超文本文件, 所以早期的 HTTP 一直保持着明文传输数据的特征, 但是中间很有可能会被截取或者篡改, 即收到中间人攻击. 解析HTTP协议栈层面: HTTPS往里面加入了安全层, 它的指责是: 对发起HTTP请求的数据进行加密和对接收…

Redis实战篇(二)

三、优惠卷秒杀 3.1 全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这张表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显 受单表数据量的限制 场景分析一&am…

初学mybatis(二)CRUD操作及配置解析

学习回顾&#xff1a;初学mybatis&#xff08;一&#xff09; 一、namespace 1、将上面案例中的UserMapper接口改名为 UserDao&#xff1b;2、将UserMapper.xml中的namespace改为为UserDao的路径 .3、再次测试 结论&#xff1a; 配置文件中namespace中的名称为对应Mapper接口或…

Python基本操作

前言 啦啦啦&#xff0c;现在开始,打算做一期Python基础教程&#xff0c;欢迎大家来看哦&#xff01; 导读 这期文章真的是Python基础中的基础&#xff0c;相信有一定编程基础的小伙伴们都一定能看懂的… 本文共分为以下几个部分&#xff1a; 数与运算符基本输入输出注释模…