论文阅读 | GroupViT: Semantic Segmentation Emerges from Text Supervision

news2024/11/25 2:30:40

前言:CLIP工作拓展-利用文本-图像对的信息进行图像语义分割(CVPR2022)
论文:【here】
代码:【here】

GroupViT: Semantic Segmentation Emerges from Text Supervision

引言

传统分割方法采用自底而上的架构,深度学习方法是端到端的,自顶而下的为每个像素分配标签:
缺点有:标记数据繁琐,以及不能拓展到标签以外的类别
受到如今一些采用zero-shot方式取得成功方法的启发,这样可以针对下游任务微调模型,还可以拓展到没有出现过的类别
因此我们提出了一种方法,groupvit

方法

pipeline如下
在这里插入图片描述

首先是将图像打成16 * 16的小patch一共196个patch送入网络,和vision transformer是一样的,但是加了64个可学习的patch与图像patch合并concat起来送入网络,然后进行transformer,过6层transformer后,进行group block
然后是group_block的设计
原本concat起来的两种patch,196 * 384图像patch 和64 * 384的类别patch进行transformer,通过一个attention 196 * 64 ,可以将原本的图像不同patch的信心合并到不同的类别patch中,因此就实现了group

gumble_softmax
这里引用了一个新的gumble_softmax[可以参考这篇知乎]

简而言之就是将前向推理中的权重变成了取最大值后onehot编码的0或1,后向传播则仍然采用softmax后的概率(不然没法求导),同时加上一个gumble分布,加上一个不确定的值稀释掉原有的概率比,模拟随机采用的过程
在这里插入图片描述
原文的解释为

where Wq and Wk are the weights of the learned linear projections for the group and segment tokens, respectively, and{γi} are i.i.d random samples drawn from the Gumbel(0,1) distribution. We compute the group to assign a segment token to by taking the one-hot operation of it argmax over all the groups. Since the one-hot assignment operation via argmax is not differentiable, we instead use the straight through trick in [60] to compute the assignment matrix as
在这里插入图片描述
With the straight through trick, ˆAl has the one-hot value of assignment to a single group, but its gradient is equal to the gradient of Al, which makes the Grouping Block differentiable and end-to-end trainable. We call this one-hot assignment strategy as hard assignment.

再过了group_BLock后,再叠了9层transformer,这次加了8个类别patch,将64个类别patch聚合成8个个大类别,然后也过了一个group_block,将64合并到8个patch上,最后将8 * C的向量进行 AVG——pooling,得到整张图片的特征
损失函数
作者利用了两种损失函数,图-文本对的对比损失,利用的文本来自与对整幅图像的解释(左下角第一行)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二种的图-多文本对,来自数据集的分割标签,并把单词扩展成了一句话(来自图左下角第二三行)
在这里插入图片描述

以上就是文章方法和设计部分的介绍了,这里沐神的课讲得很清楚,我也是看完他的视频过来的
补充一个文中没有提到的分割位置复原的过程,可以利用group_block中的attention图进行位置分割类别的像素位置复原,比如:第一层的attention为196 * 64
并用gumble_softmax,即最后得到一个onehot编码,实际上就是为这196个像素块分了64个类
可以将它可视化,文中的可视化结果如下
在这里插入图片描述
然后第二层的64 * 8的groupblock的attention也是同理,将64个类别分到了8个大类中,对应到上一层的64个小类,8个大类的可视化如下
在这里插入图片描述
最后一层进行与文本配对,将8个大类中与文本配对的类进行可视化则为
在这里插入图片描述

实验

消融实验
用hard assignament比soft assignment要提高很多,作者解释这是因为可以不用关注那些被hard assignamen附零的不相关区域
mutil-label loss也能提高性能
在这里插入图片描述
token数的选择
在这里插入图片描述

对比实验
在这里插入图片描述
由于不是做分割任务的,对这些方法不是很了解,看表中的显示并没有跑过带标签数据的fine-tune模型,不过也很不错了

总结

看到沐神的视频里介绍用transformer利用可学习的token来给图像块分配标签,这个思路被惊艳到了,感觉特别巧妙,(当然我也不清楚这是不是分割任务中的常见手段)
最后的AVGpooling合并8个类别,感觉设计得不是特别好,将多个区域的特征杂糅到一起与多种的文本匹配,有种暴力训练的感觉,最后的mask 的分类效果也证明分类得不好,不知道作者今后会不会将这块设计改进以下,或者将训练集改进一下,一张图中只留一个分割对象

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

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

相关文章

前置知识-辛几何与辛代数的基本概念、欧式几何与辛几何、相空间

1.3 Hamilton 系统的辛几何算法 经典力学有三种等价的 “数学形式” 体系: Newton 体系、Lagrange 体系和 Hamilton 体系, 其中 Hamilton 体系具有对称的形式且能应用于较广泛的物理现象, 故它一直是物理学理论研究的数学工具. Hamilton 体系的一个重要特性是稳定性, 它在几何上…

MySQL高级-day01

MySQL-day01 1 逻辑架构 1.1 架构概览 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。 …

Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据

场景 Navicat通过存储过程批量插入mysql数据: Navicat通过存储过程批量插入mysql数据_霸道流氓气质的博客-CSDN博客 上面使用过Navicat借助存储过程批量插入数据。但是插入数据是固定的 insert语句,如果在本地开发时需要模拟插入一些随机数据(从指定…

考出PMP证书到底有没有用?

我们将从三方面分享: 1. PMP 证书在国内的含金量怎么样? 2. HR 如何看待 PMP 证书? 3. 拿到 PMP 证书后,有哪些变化? 一,PMP证书的含金量 说到 PMP 证书的含金量,相信这个问题是所有学员都…

SVHN数据集下载及使用方法

街景门牌号数据集(SVHN),这是一个现实世界数据集,用于开发目标检测算法。它需要最少的数据预处理过程。它与 MNIST 数据集有些类似,但是有着更多的标注数据(超过 600,000 张图像)。这些数据是从…

【笑小枫-面试篇】Java基础面试题整理,努力做全网最全

写在前面 或许你只是想白嫖内容,或许你也会忽略这段文字,但我还是想弱弱的说 题目整理耗费了大量精力,希望可以给博主点赞收藏,谢谢大家啦 我呢,笑小枫,一个努力的普通人,也希望可以花1秒钟记住…

VS Code安装及(C/C++)环境配置(Windows系统)

参考资料2份: 从零开始的vscode安装及环境配置教程(C/C)(Windows系统)_光中影zone的博客-CSDN博客_vscode运行配置https://blog.csdn.net/qq_45807140/article/details/112862592 VSCode配置C/C环境 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/87864677 五…

C语言与Linux系统文件操作函数大全

目录 一、C语言——fopen函数 二、C语言——fwrite函数 三、C语言——fread函数 四、C语言——fseek函数 1、Linux系统——open接口 2、Linux系统——write接口 3、Linux系统——read接口 4、Linux系统——lseek接口 一、C语言——fopen函数 fopen函数是C标准库提供的打…

FreeRTOS入门(02):任务基础使用与说明

文章目录目的创建任务任务调度任务控制延时函数任务句柄获取与修改任务优先级删除任务挂起与恢复任务强制任务离开阻塞状态空闲任务总结目的 任务(Task)是FreeRTOS中供用户使用的最核心的功能,本文将介绍任务创建与使用相关的基础内容。 创…

QT入门Containers之QTabWidget

目录 一、QTabWidget界面相关 1、布局介绍 2、更改选项卡的名字 3、设置关闭图标 4、代码测试新增页面在构造函数中添加 5、添加图标 6、常用设置 此文为作者原创,创作不易,转载请标明出处! 一、QTabWidget界面相关 1、布局介绍 选项…

MySQL 数据库基础命令

MySQL 基础命令 一.了解数据库 1、了解数据库对象 1.表: 用于以有组织方式存储数据。以行和列的格式包含数据。 2.索引: 是内部表结构,MySQL 用它基于一列或多列的值来提供对表中各行的快速访问。 3.视图: 是虚拟表&#…

Netcat安装与使用(nc)

Netcat安装与使用1.Netcat简介1.1.Netcat安装1.1.1.安装整体流程1.1.1.1.安装依赖1.1.1.2.安装Netcat1.1.1.3.配置环境变量1.1.1.4.测试1.2.Netcat基本功能1.3.Netcat常用参数2.Netcat用法2.1.前期准备2.2.banner相关信息抓取2.3.端口扫描2.3.1.扫描指定端口2.3.2.扫描指定端口…

springboot启动图案的修改方法

目录 一、springboot项目启动原图 二、如何修改为你心意的图片 1、首先在resource下创建banner.txt这是默认的名字 2、在banner.txt文件中加入你自己的配置 3、生成的图案 4、推荐几个生成的网址 5、修改字符颜色 6、控制Banner的是否开启、输出位置 第一种: …

yarn的global安装命令不生效

问题 yarn全局安装某个依赖完成之后,但依赖没有生效,一般有两种情况导致的。 解决思路 1.yarn命令问题 yarn在全局安装某个依赖时,global要紧接在yarn之后,然后才是add yarn global add xxxx如果出现global在add之后&#xff…

JAVASE半天速通集锦(only 40点,查找and复习必看)

JAVASE 以下内容根据【尚硅谷】7天搞定Java基础,Java零基础极速入门 视频简单总结而成 所谓变量就是可以改变的向量存储;标识符即标识数据的符号——变量名:只有下划线和$,预定义关键字或保留字不给用 基本数据类型 byte 8,sho…

诚邀您体验人工智能AI

近期,人工智能(AI)领域动作频频,OPENAI公司Chat GPT的出现,标志着人工智能的研究与应用已经进入了一个崭新的发展阶段,国内腾讯、阿里巴巴、百度、易网、国外微软、谷歌、苹果、IBM、Amazon,等互…

数据结构---顺序表

专栏:数据结构 个人主页:HaiFan. 专栏简介:从零开始,数据结构!! 顺序表前言接口实现SListInit初始化和SListDestory销毁SListPrint打印表中的元素SListCheckCapacity检查表中空间SListPushBack尾插和SListP…

【项目设计】高并发内存池(一)[项目介绍|内存池介绍|定长内存池的实现]

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

IPVlan 详解

文章目录简介Ipvlan2同节点 Ns 互通Ns 内与宿主机 通信第三种方法Ns 到节点外部结论Ipvlan31. 同节点 Ns 互通Ns 内与宿主机 通信Ns 内到外部网络总结源码分析ipvlan 收包流程收包流程主要探讨使用 ipvlan 为 cni 通过虚拟网卡的实现。简介 ipvlan 和 macvlan 类似&#xff0c…

深度学习入门(六十七)循环神经网络——注意力机制

深度学习入门(六十七)循环神经网络——注意力机制前言循环神经网络——注意力机制课件心理学注意力机制注意力机制是显式地考虑随意线索非参注意力池化层Nadaraya-Watson 核回归:总结教材(注意力提示)1 生物学中的注意…