CLIP Surgery论文阅读
CLIP Surgery for Better Explainability with Enhancement in Open-Vocabulary Tasks(CVPR2023)
M = norm ( resize ( reshape ( F i ˉ ∥ F i ‾ ∥ 2 ⋅ ( F t ∥ F t ‾ ∥ 2 ) ⊤ ) ) ) M=\operatorname{norm}\left(\operatorname{resize}\left(\operatorname{reshape}\left(\frac{\boldsymbol{F}_{\bar{i}}}{\left\|\boldsymbol{F}_{\underline{i}}\right\|_{2}} \cdot\left(\frac{\boldsymbol{F}_{t}}{\left\|\boldsymbol{F}_{\underline{t}}\right\|_{2}}\right)^{\top}\right)\right)\right) M=norm resize reshape Fi 2Fiˉ⋅( Ft 2Ft)⊤
重点是CLIP的图可视化,上面是CLIP Surgery可视化Similarity map的公式
贡献:

1.发现CLIP可视化结果(相似度图)和人的感知是反的,集中在背景(flatten transformer做q可视化,集中在前景
),认为是QK self-attention导致,最相似的token并不是本身或者相同语义区域,而是一些背景的噪声。而用vv attention就不会出现错误的关联。出现这种情况的原因主要是训练的pooling不合适,提出了CLIP Architecture Surgery,如模型图所示
x ^ i + 1 = { None i < d f attn ( x i , { ϕ v } ) + x i i = d , f attn n v ( x i , { ϕ v } ) + x ^ i i > d , ∀ T & A x i + 1 = { f F F N ( x i ′ ) + x i ′ , s.t. x i ′ = f a t t n q k ( x i , { ϕ q , ϕ k , ϕ v } ) + x i , ∀ T & A f res ( x i ) + x i , ∀ R e s \begin{array}{l} \hat{x}_{i+1}=\left\{\begin{array}{ll} \text { None } & i<d \\ f_{\text {attn }}\left(x_{i},\left\{\phi_{v}\right\}\right)+x_{i} & i=d, \\ f_{\text {attn } n_{v}}\left(x_{i},\left\{\phi_{v}\right\}\right)+\hat{x}_{i} & i>d \end{array}, \forall T \& A\right. \\ x_{i+1}=\left\{\begin{array}{ll} f_{F F N}\left(x_{i}^{\prime}\right)+x_{i}^{\prime}, \text { s.t. } & \\ x_{i}^{\prime}=f_{a t t n_{q k}}\left(x_{i},\left\{\phi_{q}, \phi_{k}, \phi_{v}\right\}\right)+x_{i} & , \forall T \& A \\ f_{\text {res }}\left(x_{i}\right)+x_{i} & , \forall R e s \end{array}\right. \\ \end{array} x^i+1=⎩ ⎨ ⎧ None fattn (xi,{ϕv})+xifattn nv(xi,{ϕv})+x^ii<di=d,i>d,∀T&Axi+1=⎩ ⎨ ⎧fFFN(xi′)+xi′, s.t. xi′=fattnqk(xi,{ϕq,ϕk,ϕv})+xifres (xi)+xi,∀T&A,∀Res
2.发现CLIP可视化有非常多的噪声响应

算取一个冗余特征,多类的情况显著的类会影响其他的类(带偏了)。所以我们用类之间的分数作为权重,对每个特征做类别的加权,来抑制显著类的影响。然后在类别维度(Nt,text token的数量)求均值作为冗余特征,并对每个特征减去冗余特征,然后求和得到余弦相似度。对于单个类来说,如交互式分割和多模态可视化,则用空文本特征作为冗余特征(知乎上看到这句话才明白,看的一脸懵逼)。category dimension 是(Nt)
具体如下:
- 先算出multiplied features[Ni,Nt,C]: F m = F ^ i ∥ F ^ i ∥ 2 ⊙ F ^ t ∥ F ^ t ∥ 2 F_m=\frac{\hat{F}_i}{\|\hat{F}_i\|_2}\odot\frac{\hat{F}_t}{\|\hat{F}_t\|_2} Fm=∥F^i∥2F^i⊙∥F^t∥2F^t
沿C方向做逐元素乘法
- 再算similarity score[1,Nt]: s = s o f t m a x ( F c ∥ F c ∥ 2 ⋅ ( F t ∥ F t ∥ 2 ) ⊤ ⋅ τ ) s=softmax(\frac{F_c}{\|F_c\|_2}\cdot(\frac{F_t}{\|F_t\|_2})^\top\cdot\tau) s=softmax(∥Fc∥2Fc⋅(∥Ft∥2Ft)⊤⋅τ)
[CLS]乘token[Nt,C]算相似度
- 再算category weight[1,Nt]: w = s m e a n ( s ) w=\frac s{mean(s)} w=mean(s)s
- 再算冗余特征common and redundant features[Ni,1,C]: F r = m e a n ( F m ⊙ e x p a n d ( w ) ) F_r=mean(F_m\odot expand(w))\mathrm{~} Fr=mean(Fm⊙expand(w))
沿C方向做,空文本相似度最大的?
- 最后算common and redundant features[Ni,Nt]: S = s u m ( F m − e x p a n d ( F r ) ) S=sum(F_m-expand(F_r))~ S=sum(Fm−expand(Fr)) (去掉冗余特征)
模型
不参与训练,只在推理

实验
错误的self-attention也能解释为什么有人删掉CLIP中ResNet的最后一个self-attention可以做可视化。但是ViT每层都是self-attention,所以现有的方法在ViT上表现很差(全是self-attention删最后一层没用)
开放多标签分类
除此之外我们的算法做open-vocabulary的多标签分类也有效果,可以作为一种后处理任意插到算法里面来提高mAP。原理是抑制冗余特征后会让误报少一些。注意,单类没有效果,因为冗余特征是一个common bias,不改变单张图别之间的位次,而是影响跨图之间的排位来减少误报

多模态可解释性
做了多模态的可解释性,解释CLIP训练过程中文本和图片是怎么匹配的,也发现了一些有趣的现象。比如CLIP训练数据一般关注部分物体,如第一张图片只关注了自行车。而且CLIP对文本也有一定的感知,如最后一张。对于文本的解释,一些不重要的词如 ‘in’ ‘the’ ‘.’ 也经常也有高响应,而且结束符[end]是最高频的。这说明clip会把全局特征编码到固定的token中。

ref
https://www.zhihu.com/question/595372017
相关文章:
CLIP Surgery论文阅读
CLIP Surgery for Better Explainability with Enhancement in Open-Vocabulary Tasks(CVPR2023) M norm ( resize ( reshape ( F i ˉ ∥ F i ‾ ∥ 2 ⋅ ( F t ∥ F t ‾ ∥ 2 ) ⊤ ) ) ) M\operatorname{norm}\left(\operatorname{resize}\…...
Luancher和unityLibrary都有build.gradle有什么不同
在 Unity 项目中,通常会包含两个主要的 Module: Launcher Module: 这是 Android 项目的主要 Module,包含 UnityPlayerActivity,并负责启动 Unity 游戏。 unityLibrary Module: 这是 Unity 导出的 Android 工程,其中包…...
【Unity】2D角色跳跃控制器
最近加了学校的Nova独游社,本文是社团出的二面题,后续有时间优化下可能会做成一个二维冒险小游戏。本文主要涉及相关代码,参考教程:《勇士传说》横版动作类游戏开发教程 效果演示 【Unity】2D角色跳跃模拟器 主要实现功能…...
Gradle vs Maven
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的…...
Linux认证 | RHCA是什么等级的证书?考到工资能有多少?
RHCA就是红帽认证架构师,RHCA是红帽公司在红帽认证工程师(RHCE)和红帽认证技师(RHCT)认证推出之后又一个最新的顶级认证,在业界也是最受欢迎的、最成熟的linux认证。 那么RHCA是什么等级的证书?…...
SQLite System.Data.SQLite和sqlite-net-pcl之间的区别
System.Data.SQLite System.Data.SQLite是一个.NET数据提供程序,用于操作SQLite数据库。它是在SQLite C语言库之上构建的,提供了以.NET方式访问SQLite数据库的功能。System.Data.SQLite提供了ADO.NET接口,可以与其他关系型数据库一样使用Com…...
【Leetcode】【消失的数字】【C语言】
方法一:按位异或(找单身狗) 我们知道:按位异或^操作原则:相同为零,相异为一 所以 0^aa a ^a0 a ^bb ^a int missingNumber(int* nums, int numsSize){ int i 0; int tem1 0,tem20; for (i 0;i < nu…...
在Linux中安装宝塔面板
在公网为x.x.x.x的服务器上安装宝塔面板 安装宝塔面板 第一步,下载安装宝塔面板。 命令:cd /usr/local/src wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 注意:需要等几分钟来下载宝塔面…...
数据结构 - 全貌总结
目录 一. 前言 二. 分类 三. 常见的线性和非线性结构 一. 前言 数据结构是计算机存储、组织数据的方式。一种好的数据结构可以带来更高的运行或者存储效率。数据在内存中是呈线性排列的,但是我们可以使用指针等道具,构造出类似“树形”等复杂结构。 数…...
淘宝API商品详情接口丨关键词搜索接口丨用户评论接口丨淘宝销量接口
淘宝API商品详情接口,关键词搜索接口,用户评论接口,淘宝销量接口如下: 淘宝/天猫获得淘宝商品详情 API 返回值说明 item_get-获得淘宝商品详情 1.公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在…...
Android开机动画启动流程
首语 在Android设备开机启动时,会展示Android开机动画,用于增加用户体验和展示设备品牌等信息。它也是Android系统启动的一部分。开机动画是由bootanimation负责的,因此首先先了解下bootanimation是如何启动的。 bootanimation 启动脚本分析…...
react_13
React Router //-dom代表给浏览器应用使用的 npm install react-router-dom 目前版本是 "react-router-dom": "^6.18.0" 使用 新建文件 src/router/MyRouter.tsx import { Navigate, RouteObject, useRoutes } from "react-router-dom"; imp…...
vscode git提交
...
LangChain+LLM实战---实用Prompt工程讲解
原文:Practical Prompt Engineering 注:本文中,提示和prompt几乎是等效的。 这是一篇非常全面介绍Prompt的文章,包括prompt作用于大模型的一些内在机制,和prompt可以如何对大模型进行“微调”。讲清楚了我们常常听到的…...
虚拟机备份中的CBT技术
虚拟机备份的CBT( Changed Block Tracking)模式是一种备份模式,它能够识别和跟踪自上次备份后虚拟机中被修改过的块,这些修改会被存放到日志文件中。在启用CBT模式之后,备份软件会利用这个功能进行增量备份。 启用CBT…...
云服务器哪家便宜靠谱 | 简单了解亚马逊云科技发展史
云服务器哪家便宜又靠谱呢?为什么说亚马逊云科技在这道题答案的第一行,一篇故事告诉你。 1994年,杰夫贝索斯在西雅图创建了亚马逊,最初只是一个在线书店。 1997年,亚马逊在纳斯达克交易所上市,成为一家公…...
【LeetCode】每日一题 2023_11_6 最大单词长度乘积
文章目录 刷题前唠嗑题目:最大单词长度乘积题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode? 启动!!! 题目:最大单词长度乘积 题目链接:318. 最大单词长度乘积 题目描述 代码与解题思路…...
【小白专用】PHP中的JSON转换操作指南 23.11.06
一、JSON的基础知识 1.1JSON数据格式 JSON数据格式是一组键值对的集合,通过逗号分隔。键值对由“键”和“值”组成,中间使用冒号分隔。JSON数据格式可以嵌套,而且可以使用数组 二、PHP中的JSON函数 JSON的操作需要使用编程语言进行处理&am…...
Web3游戏的十字路口:沿用传统IP还是另起炉灶?
人们经常问我对 Web3 游戏有什么看法。因此,我想以书面形式概述一下我目前的想法。 让我先澄清一下:我不是专家。这不是一篇深入探讨游戏世界精细指标如 MAU 或 D14 等的全面分析。请把这看作是我根据个人交流和研究,这反映我在游戏领域关注…...
【系统架构设计】架构核心知识:4 系统可靠性分析与设计
目录 1 可靠性 2 系统可靠性 2.1 可靠性指标 2.2 可靠性计算 2.2.1 串联系统 2.2.2 并联系统</...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
