Token Contrast(ToCo)

2023-10-28 07:40
文章标签 token contrast toco

本文主要是介绍Token Contrast(ToCo),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里所提出的方法名为Token Contrast(ToCo),该方法用于提高使用图像级标签的弱监督语义分割的性能。ToCo 解决了ViT的over-smoothing问题,并进一步探索了它在 WSSS 中的潜力。

打破CAM的局限性!ToCo:进一步激发 ViT 在弱监督语义分割的潜力

原文链接:https://arxiv.org/abs/2303.01267

代码链接:https://github.com/rulixiang/ToCo

弱监督语义分割是一种利用更简单易得的图像级标注,以训练分类模型的方式获取物体的种子分割区域并优化,从而实现图像的像素级、密集性预测。这种方法在训练时使用弱监督信息作为监督信息,训练得到的分割图作为测试阶段的监督信息(在测试阶段用全监督)。

  • 弱监督语义分割和全监督语义分割的区别在于,弱监督语义分割使用的是更简单易得的图像级标注,以训练分类模型的方式获取物体的种子分割区域并优化,从而实现图像的像素级、密集性预测。而全监督语义分割则需要对每个像素进行标注,需要更多的人力和时间成本。

  • 弱监督语义分割和半监督语义分割的区别在于,半监督语义分割是在训练时使用少量的像素级标注数据和大量的未标注数据,以提高模型的性能。

以前使用 CAM 为弱监督语义分割生成伪标签的方法存在缺陷,因为它们只能识别判别区域,从而导致性能不佳。最近的研究提议使用 Vision Transformer 架构对全局特征交互进行建模并生成更准确的伪标签。但是ViT的self-attention中的过度平滑(over-smoothing)问题会导致patch token都是1(这样就是均匀分布了),完成 WSSS的任务就能加困难了。这一问题在最近的工作中尚未被解决。

在本文中,所提出的方法名为Token Contrast(ToCo),该方法用于提高使用图像级标签的弱监督语义分割(WSSS)的性能。ToCo 解决了 Vision Transformer (ViT) 的over-smoothing问题,并进一步探索了它在 WSSS 中的潜力。引入了两个模块:Patch Token Contrast (PTC) 和Class Token Contras (CTC),以提高 CAM 的准确性。Patch Token Contrast (PTC) 模块使用来自中间层的伪代币关系来监督最终的补丁令牌,从而使它们能够对齐语义区域,从而产生更准确的 CAM。Class Token Contrast (CTC) 模块通过对比不确定的局部区域和全局对象的类标记来促进其表示一致性。CTC 利用 ViT 中类代币捕获的高级语义,帮助区分 CAM 中的低可信度区域。这些实验是在PASCAL VOC和MS COCO数据集上进行的,以证明所提出的方法的有效性。

方法

本文的方法如上图所示,下面来看主要的两个点:

Patch Token Contrast

Patch Token Contrast实际上就是通过CAM的机制来解决过度平滑的问题:

Patch Token Contrast (PTC) 是通过利用 Vision Transformer (ViT) 中间层的可靠的伪 token 关系来监督最终的 patch tokens,从而解决了最终 patch tokens 的过度平滑问题。PTC 模块可以保留 patch tokens 的语义多样性,通过中间层的伪 token 关系来监督最终的 patch tokens,使它们能够对齐语义区域,从而产生更准确的 Class Activation Map (CAM)。所以设计了如下的loss function: 

设计Patch Token Contrast(PTC)模块的动机是解决弱监督语义分割(WSSS)的Vision Transformer(ViT)中最终token的over-smoothing的问题。PTC 模块使用来自中间层的伪标签关系来监督最终的token。这是因为中间层仍然可以保留token的语义多样性。通过利用来自中间层的知识,即可靠的配对代币关系,PTC 可以监督最终token以调整语义区域,从而生成更准确的CAM。

Class Token Contrast

Class Token Contrast (CTC) 模块是通过对比不确定的局部区域和全局对象的类别token来促进其表示一致性。CTC 模块的灵感来自于 ViT 中的token可以捕获高级语义这一事实。它利用 ViT 中token捕获的高级语义,有助于区分类激活映射 (CAM) 中的低可信度区域。采用以下的loss function进行优化:

给定图像,CTC 模块首先从其辅助 CAM 指定的不确定区域中随机裁剪局部图像。由于 ViT 中的token捕获了语义对象的信息,因此全局和局部图像的token分别聚合了全局和局部对象的信息。然后,CTC 模块通过对比其class token来促进局部非突出区域和全局对象之间的表示一致性。这有助于强制在 CAM 中激活更多物体区域,从而提高分割的准确性。

实验

 本文的文献调查侧重于使用图像级标签的弱监督语义分割(WSSS)。作者讨论了类激活图(CAM)在识别完整物体区域方面的局限性,这是由于CNN的局部结构感知造成的。他们还提到了最近为解决这一限制而提出的各种训练方案,例如擦除、online attention积累和跨图像语义挖掘。作者提出了一种名为Token Contrast(ToCo)的新方法,该方法利用Vision Transformer(ViT)架构来解决CAM和CNN对WSS的局限性。他们引入了两个新模块,补丁代币对比(PTC)和类别代币对比(CTC),以提高分割的准确性。作者对 PASCAL VOC 和 MS COCO 数据集进行了实验,结果表明 ToCo 的表现优于其他相似情况的方法,并且使用最先进的多阶段方法实现了很优越的性能。

可以发现在语义分割上也有较好的性能。 

可视化对比也可以发现本文提出的ToCo的CAM图更接近于理想中的attention状态。

讨论

本文的贡献是:

  • 提出一种名为Token Compare(ToCo)的方法,以提高使用图像级标签的弱监督语义分割(WSSS)的性能。  whaosoft aiot http://143ai.com   

  • 解决ViT的过度平滑问题,进一步探索其在 WSSS 中的潜力。

  • 引入两个模块:补丁代币对比 (PTC) 和类别代币对比 (CTC),以提高 CAM 的准确性。

  • 对 PASCAL VOC 和 MS COCO 数据集进行实验,以证明所提方法的有效性。

  • 提出未来的工作建议,以改进所提出的方法并将其适用性扩展到其他相关任务。

然而本文也有局限性:它只关注使用图像级标签的 WSSS,不考虑其他类型的薄弱监督,例如涂鸦注释或边框注释。此外,所提出的方法需要预先训练的 ViT 模型,而某些用户可能不容易使用该模型。最后,实验仅在两个数据集上进行,将所提出的方法推广到其他数据集还有待探索。

该论文提出了几项未来的工作来改进所提出的方法。这些包括:-

  • 探索 ToCo 在其他计算机视觉任务中的潜力,例如物体检测和实例分割。

  • 研究 ToCo 在其他基于Transformer的模型(例如 Swin Transformer 和 CAiT)上的有效性。

  • 在 ToCo 框架中加入其他信息,例如物体大小和形状,以进一步提高 WSSS 的准确性。

  • 探索使用 ToCo 执行半监督或全监督语义分割任务的可能性。未来的这些工作有可能提高提出方法的性能,并将其适用性扩展到其他相关任务。

结论

本文提出了一种名为令牌对比(ToCo)的新方法,用于使用图像级标签进行弱监督语义分割(WSSS)。ToCo 利用 Vision Transformer (ViT) 架构,引入了两个新模块,即Patch Token Contrast (PTC) 和Class Token Contrast (CTC),以解决CAM和 ViT 的局限性。对PASCAL VOC和MS COCO数据集的实验表明,ToCo的表现优于其他单级竞争对手,并且使用最先进的多阶段方法实现了可比的性能。与CNN方法和最近的单级WSSS方法,即AFA相比,所提出的方法可以显著产生更积分和更准确的CAM。与 ViT 基线相比,ToCo 还能很好地解决过度平滑的问题。

 

这篇关于Token Contrast(ToCo)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291727

相关文章

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init

【NodeJS】Unexpected token (109:0) 返回错误码500

刚开始报错是这样的: Unexpected token call 是什么我没看懂,但我发现 span.label.lable-success 后面的 #[i+1] 写错了,应该是 #{i+1} 改成完这个错误后又是一个错误提示: What? Unexpected token (109:0) 返回错误码500是什么鬼 我先将自己这段源码的 - if ... - else 检查下

解决OAuth Token,点击退出登录报404问题

首先,认证服务器发送请求 http://auth.test.com:8085/logout?redirect_uri=http://admin.test.com:8080’ 退出后报404无法跳转到网站首页,这个时候增加一个参数redirect_uri指定退出成功后跳转的路径,因为是自定义的,所以需在认证服务器做一些处理 找到源码默认实现接口DefaultLogoutPageGeneratingF

OAuth2 Token实现授权码模式

文章目录 OAuth2 授权:Resource owner password(密码模式)OAuth2 授权:Authorization code grant授权码模式,适用于浏览器模式OAuth2:Implicit(简化授权模式)OAuth:Client credentials(客户端证书)授权码模式使用案例 OAuth2 授权:Resource owner password(密

记一次knife4j文档请求异常 SyntaxError: Unexpected token ‘<‘, ... is not valid JSON

knife4j页面报错问题定位 前几天开发新接口,开发完成后想使用knife4j测试一下接口功能,突然发现访问页面报错提示:knife4j文档请求异常,但之前运行还是正常的,想想会不会与升级依赖有关系,启动其他微服务发现文档接口访问正常,排除因依赖版本升级导致在线API文档无法使用情况,还是和本服务新增接口有关系。 定位问题 首先f12打开调试台,重新刷新页面,看到console有报错提示

【Http 每日一问,访问服务端的鉴权Token放在header还是cookie更合适?】

结论先行: token静态的,不变的,放在header里面。 典型场景 ,每次访问时需要带个静态token请求服务端,向服务端表明是谁请求,此时token也可以认为是个固定的access-key。token动态的,会失效,放在cookie里面。 典型场景,业务登录态token,存在有效期的,过一段时间可能会失效。 下面具体展开下。 在选择将鉴权 Token 放在 HTTP Header 还是

JWT生成、解析token

目录 1. 导入JWT相关依赖2. JWT生成token3. JWT解析token4. 测试结果5. JWT加密、解密工具类 1. 导入JWT相关依赖 <!-- jwt认证模块--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.10.2</

python eval报错 SyntaxError: invalid token

a = eval(startTime)   File "<string>", line 1     2019-01-02 11:00:00               ^ SyntaxError: invalid token startTime = '2019-01-02 11:00:00'a = eval(startTime) 具体内容如上: 后来发现,在eval中的

OpenFeign请求拦截器,注入配置属性类(@ConfigurationProperties),添加配置文件(yml)中的token到请求头

一、需求 OpenFeign请求拦截器,注入配置属性类(@ConfigurationProperties),添加配置文件(yml)中的token到请求头 在使用Spring Boot结合OpenFeign进行微服务间调用时,需要在发起HTTP请求时添加一些默认的请求头,比如认证令牌(token)。为了实现这一功能,可以创建一个请求拦截器,并且通过@ConfigurationPropert

Unexpected token d in JSON at position 5, check bodyParser config错误解决

错误原因:json格式不对 { desc="设备1", iotProjectId=11 } 解决:通过json在线校验格式校验json格式,找出错误原因,修改 在线JSON校验格式化工具(Be JSON) 修改: {"desc": "设备","iotProjectId": 11}