《GroupViT: Semantic Segmentation Emerges from Text Supervision》论文解读

会议:CVPR

年份:2022

代码:https://github.com/NVlabs/GroupViT

研究背景与动机

  • 传统深度学习系统中,图像区域的Grouping通常是隐式通过像素级识别标签的自上而下监督来实现的。
  • 作者提出将Grouping机制重新引入深度网络,通过文本监督自动实现语义区域的Group。

主要贡献

  • 在深度网络中超越规则形状的图像网格,引入了一种新的GroupViT架构,以将视觉概念进行分层自底向上的分组为不规则形状的Group。
  • 没有任何像素级标签和训练,只有使用对比损失的图像级文本监督,GroupViT成功地学会了将图像区域分组在一起,并以零样本的方式迁移到几个语义分割词汇表。
  • 据我们所知,本文是在不使用任何像素标签的情况下,探索从文本监督单独到几个语义分割任务的零样本迁移的第一项工作,并为这项新任务建立了强大的基线。

网络架构

group简单说如果有一些聚类的中心点,从这些中心点开始发散,把周围相似的点逐渐扩散成一个group,最后这个group即相当于一个Segmentation mask。

Group ViT的贡献就是在现有的ViT模型中加入计算单元Grouping Block,同时加入了可学习的Group Tokens。这样模型在初期学习的时候就能慢慢一点点的将相邻的元素group起来,最后变成一个个segmentation mask

  • (a) GroupViT 的架构和训练管道。GroupViT 包含一个 Transformer 层的层次结构,分为阶段,每个层都在逐渐更大的视觉段上运行。右边的图像显示了出现在不同Group阶段的视觉片段。较低的阶段将像素Group为对象部分,例如大象的鼻子和腿;较高的阶段进一步将它们合并到整个对象中,例如整个大象和背景森林。
  • (b) 分组块的架构。每个分组阶段都以一个Group块结束,该Group块计算学习的组标记和段(图像)标记之间的相似性。该分配是通过组标记的 gumbel softmax 计算的,并转换为 one-hot 硬分配。分配给同一组的片段标记合并在一起,并表示输入到下一个分组阶段的新段标记。

(a) GroupViT架构和训练流程

  1. 输入图像:输入的图像首先被分割成多个图像块,每个图像块都被称为“Image Token”。
  2. 线性投影:这些图像块经过线性投影后,形成初始的表示。
  3. Transformer层:这些表示随后被输入到一系列的Transformer层中进行处理。
  4. Grouping Block:在Transformer层之间,有多个“Grouping Block”,每个Grouping Block通过Gumbel-Softmax方法进行分组。具体来说,Grouping Block接收来自上一层的特征表示,利用可学习的Group Token对这些表示进行分组,形成新的表示。
  5. 组表示和细分表示:在每个Grouping Block中,分组后的表示({g^l_i})和细分表示({s^l_i})会被送到下一个Transformer层中进行进一步处理。
  6. 文本编码器:同时,文本描述(如图中的“Two elephants in the jungle this morning”)会被输入到文本编码器中,生成文本的表示(z^T)。
  7. 对比损失:图像表示(z^I)和文本表示(z^T)通过多层感知机(MLP)进行处理,并利用对比损失进行训练,以便图像和文本表示在共享空间中靠近。

(b) Grouping Block

  1. 输入表示:每个Grouping Block接收来自上一层的细分表示({s^l_i})和组表示({g^l_i})。
  2. 线性变换:细分表示通过三个线性变换W_q、W_k和W_v,生成查询、键和值。
  3. Gumbel-Softmax:使用Gumbel-Softmax进行加权求和,以获得组表示的加权值。
  4. 线性变换:组表示经过线性变换W_o后,与原细分表示相加,生成新的细分表示({s^{l+1}_i})。
  5. 输出表示:新的细分表示会被传递到下一层Transformer中。

通过对比损失进行对齐

多标签图像-文本对比损失。给定一个输入图像-文本对,我们通过提取它的名词并用几个句子模板提示它们来从原始文本中生成新文本。对于对比学习,我们只将匹配的图像和文本对视为正样本。我们训练 GroupViT 和文本编码器来最大化正图像-文本对之间的特征相似度,并最小化负对之间的特征相似度。

GroupViT 零样本转移到语义分割

 GroupViT的每个输出段的嵌入对应于图像的一个区域。将每个输出段分配给嵌入空间中图像-文本相似度最高的对象类。

实验结果

GroupViT 大大优于其他分组方法。这表明,与使用 CLIP 训练的 ViT 相比,我们的 GroupViT 在 zeroshot 转移到语义分割方面更有效。

总结

我们迈出了仅使用文本学习语义分割的第一步,无需任何明确的人工监督。我们表明,使用 GroupViT,从大规模噪声图像-文本对学习的表示可以以零样本的方式转移到语义分割中。这项工作还表明,除了图像分类之外,文本监督还可以转移到更细粒度的视觉任务,这些任务以前没有探索过,并开辟了令人兴奋的研究方向。 

 

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

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

相关文章

LeetCode热题100刷题12:20. 有效的括号、394. 字符串解码、739. 每日温度、155. 最小栈、139. 单词拆分

20. 有效的括号 class Solution { public:bool isValid(string s) {if(s.size()%2 !0)return false;stack<char> st;for(int i0;i<s.size();i) {if(s[i]( || s[i]{ || s[i][)st.push(s[i]);else if(st.empty() && (s[i]} || s[i]] || s[i])))return false;els…

MySQL 数据库(基础)- 约束

MySQL 数据库&#xff08;基础&#xff09;- 约束 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。目的&#xff1a;保证数据库中数据的正确&#xff0c;有效性和完成性。分类&#xff1a; 注意&#xff1a;约束是作用在表中字段上的&am…

yoloV8导出engine模型

yoloV8导出engine模型 引言&#xff1a; 目的是TensorRT加速YOLO实例分割模型。 本博客记录达成此目的所需的步骤&#xff0c;及步骤中可能遇到的问题。 as follow&#xff1a; 1. 首先导出onnx模型的脚本命令&#xff1a; yolo export modelbest.pt formatonnx opset12 simpl…

[misc]-流量包-find the pass

提示&#xff1a;黑客抓到一段流量&#xff0c;找找管理员的密码是多少 直接追踪流发现pass flag ffb7567a1d4f4abdffdb54e022f8facd

【RNN练习】天气预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、环境及数据准备 1. 我的环境 语言环境&#xff1a;Python3.11.9编译器&#xff1a;Jupyter notebook深度学习框架&#xff1a;TensorFlow 2.15.0 2. 导…

2024的开放式耳机排行榜,看这六个耳机选购的小Tips

在选择适合散步聊天和听歌的耳机时&#xff0c;开放式耳机是一个很好的选择。相对于传统的入耳式耳机&#xff0c;开放式耳机不会过度隔离你与周围环境&#xff0c;这意味着你可以更自然地与朋友交流&#xff0c;并且更加安全地行走在路上。市面上有许多开放式耳机可供选择&…

01. Hibernate 教程简介

1. 前言 大家好&#xff01;本节课将和大家一起学习鼎鼎有名的 Hibernate 框架。 本节课程将向大家介绍&#xff1a; Hibernate 的功能 、特点&#xff1b;Hibernate 产生的背景&#xff1b;并初步探讨编写 Jdbc 框架的基础构建思路。 2. Hibernate 是什么&#xff1f; 简而…

尚硅谷js

原型模式 原型对象就是相当于java的static,所有实例对象可以直接用静态的属性或者方法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script type"text/javascript&q…

3D工艺大师快速生成装配动画,驱动汽车工业装配流程革新

在现代制造业的一般生产流程中&#xff0c;车间装配环节是产品由蓝图迈向市场前至关重要的一道工序。随着产品结构的日益复杂化和个性化需求的不断增长&#xff0c;车间装配工作面临着前所未有的挑战。高精密度的装配要求、错综复杂的组件关系以及频繁变更的生产计划&#xff0…

Java单边表的局部翻转

反转链表 II 这是上一个翻转全部链表的进阶版&#xff0c;大家可以先去看我的上一篇博客 Java算法之单链表的全部翻转-CSDN博客 题目描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节…

在VSCode上创建Vue项目详细教程

1.前期环境准备 搭建Vue项目使用的是Vue-cli 脚手架。前期环境需要准备Node.js环境&#xff0c;就像Java开发要依赖JDK环境一样。 1.1 Node.js环境配置 1&#xff09;具体安装步骤操作即可&#xff1a; npm 安装教程_如何安装npm-CSDN博客文章浏览阅读836次。本文主要在Win…

使用 lmdeploy 部署 internlm/internlm2_5-7b-chat

使用 lmdeploy 部署 internlm/internlm2_5-7b-chat 0. 引言1. lmdeploy 性能2. lmdeploy 支持的模型3. 快速开始 0. 引言 LMDeploy 由 MMDeploy 和 MMRazor 团队联合开发&#xff0c;是涵盖了 LLM 任务的全套轻量化、部署和服务解决方案。 这个强大的工具箱提供以下核心功能&a…

webRtc架构与目录结构

整体架构 目录结构 webrtc Modules目录

Redis实践经验

优雅的Key结构 Key实践约定&#xff1a; 遵循基本格式&#xff1a;[业务名称]:[数据名]:id例&#xff1a;login:user:10长度步超过44字节&#xff08;版本不同&#xff0c;上限不同&#xff09;不包含特殊字符 优点&#xff1a; 可读性强避免key冲突方便管理节省内存&#x…

使用 Unstructured.io 和 Elasticsearch 向量数据库搜索复杂文档

作者&#xff1a;来自 Elastic Amy Ghate, Rishikesh Radhakrishnan, Hemant Malik 使用非结构化和 Elasticsearch 向量数据库为 RAG 应用程序提取和搜索复杂的专有文档 在使信息可搜索之前解析文档是构建实际 RAG 应用程序的重要步骤。Unstructured.io 和 Elasticsearch 在此…

mybatis动态传入参数 pgsql 日期 Interval ,day,minute

mybatis动态传入参数 pgsql 日期 Interval 在navicat中&#xff0c;标准写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL 5 day)在mybatis中&#xff0c;错误写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL#{numbers,jdbcTypeINTEGER} day)报错内…

CSS【详解】层叠 z-index (含 z-index 的层叠规则,不同样式的层叠效果)

仅对已定位的元素&#xff08; position:relative&#xff0c;position:absolute&#xff0c;position:fixed &#xff09;有效&#xff0c;默认值为0&#xff0c;可以为负值。 z-index 的层叠规则 z-index 值从小到大层叠 兄弟元素 z-index 值相同时&#xff0c;后面的元素在…

python | setup.py里有什么?

setup.py里有什么&#xff1f; 文章目录 setup.py里有什么&#xff1f;C/C扩展总结gcc/g的编译参数&#xff1a;Windows Visual StudioCmakesetup.py C/C扩展模块 为什么需要分发打包&#xff1f;Distutils一个简单的例子通用的 Python 术语 使用 Setuptools 构建和分发软件包源…

Android Gantt View 安卓实现项目甘特图

需要做一个项目管理工具&#xff0c;其中使用到了甘特图。发现全网甘特图解决方案比较少&#xff0c;于是自动动手丰衣足食。 前面我用 Python和 Node.js 前端都做过&#xff0c;这次仅仅是移植到 Android上面。 其实甘特图非常简单&#xff0c;开发也不难&#xff0c;如果我…

Python番外篇:万法归一,一切皆对象

目录 Python中的对象 一切皆对象 数字是对象 字符串是对象 内置类型也是对象 函数和类也是对象 总结 Python中的对象 对象是Python对数据的抽象&#xff0c;在Python程序中&#xff0c;所有的数据&#xff0c;都可以由对象或对象之间的关系表示。 从某种意义上说&#…