热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GroupViT(SemanticSegmentationEmergesfromTextSupervision)

GroupViT(SemanticSegmentationEmergesfromTextSupervision)CVPR2022来自文本的监督信号&#

Group ViT(Semantic Segmentation Emerges from Text Supervision)CVPR2022

来自文本的监督信号,并不依赖于Segmentation mask的手工标注。而是像CLIP一样利用图像文本对使用对比学习的方式进行无监督的训练。

视觉方面做分割,grouping是一种常用的方法。如果有一些聚类的中心点,从这些中心点开始发散,把周围相似的点逐渐扩散成一个group,那这个group即相当于一个Segmentation mask。

让模型在最初的时候能将周围相邻相似的像素点group起来,变成Segmentation mask。Group ViT的贡献就是在也有的ViT模型中加入Grouping Block,同时加入了可学习的Group Tokens

图像编码器就是一个ViT,12层Transformer Layers。输入有两个部分,一个是来自原始图像的Patch Embedding,另外一个是可学习的Group Tokens。假设输入图像为224*224@3,每个patch的大小为16×16,得到14×14个196个长为384(196×384)的序列。(384对应ViT-small,特征维度384)。另外一个输入Group Tokens初始设为64×38464可以理解为64个聚类中心,代表每张图片有64个类别。6层Transformer Layers交汇之后认为Group Tokens学的已经差不多了,聚类中心也学的不错了,加入一个Grouping Block聚类一下,合并称为更大的Group,学到一些更有语义的信息。利用Grouping Block将图像(Patch Embedding)上的直接assign到64个Group Tokens上。相当于做了一次聚类的分配。

Grouping Block先用类似自注意力的方式算了一下相似度矩阵,然后利用相似度矩阵帮助聚类中心的分配,并将196×684降维到64×384。聚类中心分配过程不可导,利用gumbel softmax将该过程变成可导的。第二阶段使用8个Group Tokens将相似的类别进一步合并,将64个Group合并为8个Group。目前图像被分成了8大块,每个块代表一个类别的特征。然后与CLIP一致,通过图像文本对算一个对比学习的loss,然后训练。CLIP中,一个文本对应一张图像的特征,很容易算一个对比学习的loss。但是现在文本端为一个特征,图像端则为8×384的8个特征,无法与文本特征匹配。作者使用了Avg Pooling的方式。得到一个1×384的特征,这样文本特征和图像特征就可以匹配起来了。

接下来看模型如果做zero-shot的推理过程。文本和图像分别经过各自的编码器得到文本特征和图像特征,然后计算相似度,得到最匹配的图像文本对。局限性在于最后的聚类中心(Group Tokens)只有8类,从一张图像中最多分割出八个目标。

作者也做了消融实验,发现64-8的组合效果最好。

每个阶段可视化如图所示,第一阶段中Group5的类别为眼睛,图中确实可以将不同生物眼睛很好的分割出来。第二阶段对应大的目标区域,第三行第二阶段Group6对应类别草地,草地也被较好的分割出来。Grouping Token起到了聚类中心的作用,用Grouping这种思想完成无监督的分割。

与baselin方法比起来确实有提升,第一个用文本做监督信号的工作。还可以做zero-shot 的推理。但是对于有监督的模型如DeepLabV3plus已经达到了87左右的mlou,高了30多个点。

未来工作,一是没有使用dense prediction的特性,如空洞卷积、金字塔池化以及U-Net的结构,从而获取更多的上下文信息和多尺度信息。另一方面是推理过程中,作者设定了相似度阈值0.9,对于相似度小于0.9的阈值,则认为是背景类。

论文链接:http://arxiv.org/abs/2202.11094

参考:CLIP 改进工作串讲(上)【论文精读】_哔哩哔哩_bilibili


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
author-avatar
手机用户2502885031
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有