码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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​​ ​2​Fiˉ​​⋅( ​Ft​​ ​2​Ft​​)⊤ ​ ​ ​
    重点是CLIP的图可视化,上面是CLIP Surgery可视化Similarity map的公式

    贡献:

    https://picx.zhimg.com/80/v2-cf9998060d51d70d47669260a0de3801_720w.webp?source=1940ef5c
    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}" role="presentation" style="position: relative;">\begin{array}{l} \hat{x}_{i+1}=\left\{\begin{array}{ll} \text { None } & id \end{array}\begin{array}{l} \hat{x}_{i+1}=\left\{\begin{array}{ll} \text { None } & id \end{array}, \forall T \& A\right. \\ x_{i+1}=\left\{
    fFFN(xi′)+xi′, s.t. xi′=fattnqk(xi,{ϕq,ϕk,ϕv})+xi,∀T&Afres (xi)+xi,∀Res" role="presentation" style="position: relative;">fFFN(x′i)+x′i, s.t. x′i=fattnqk(xi,{ϕq,ϕk,ϕv})+xifres (xi)+xi,∀T&A,∀ResfFFN(xi′)+xi′, s.t. xi′=fattnqk(xi,{ϕq,ϕk,ϕv})+xi,∀T&Afres (xi)+xi,∀Res
    \right. \\ \end{array} x^i+1​=⎩ ⎨ ⎧​ None fattn ​(xi​,{ϕv​})+xi​fattn nv​​(xi​,{ϕv​})+x^i​​i<di=d,i>d​,∀T&Axi+1​=⎩ ⎨ ⎧​fFFN​(xi′​)+xi′​, s.t. xi′​=fattnqk​​(xi​,{ϕq​,ϕk​,ϕv​})+xi​fres ​(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​∥2​F^i​​⊙∥F^t​∥2​F^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​∥2​Fc​​⋅(∥Ft​∥2​Ft​​)⊤⋅τ)

    [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

  • 相关阅读:
    C# 中NHibernate使用及配置映射
    容器运行时 笔记 / CRI-O / CRI-O 安装说明
    技术干货 | PACMOO:基于帕累托最优的公平性约束协同过滤算法
    stm32—GPIO
    C++智能指针
    供求两端的对接将不再是依靠互联网时代的平台和中心来实现的
    分库分表(一)
    腾讯云服务器价格计算器,它来了!
    物联网智能家居总体设计与实现
    Kafka系列之:深入理解Kafka Connect REST API
  • 原文地址:https://blog.csdn.net/qq_52038588/article/details/134247563
    • 最新文章
    • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
      用 Hashids 优雅解决 C 端自增 ID 暴露问题
      V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
      LLVM Pass快速入门(四):代码插桩
      milkup:桌面端 markdown AI续写和即时渲染
      基于项目工程构建SBOM(软件物料清单)的研究
      鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
      .NET 中如何快速实现 List 集合去重?
      扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
      浅谈数据访问层
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    小工具 小游戏
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

    京公网安备 11010502049817号