Open-Vocabulary Multi-Label Classification via Multi-modal Knowledge Transfer 论文解读

  • 前言
  • Motivation
  • Contribution
  • Challenge
  • Method
    • Stage 1
    • Stage 2
  • Experiment
  • Ablation Studies

前言

这篇文章应该是离我要做的东西最近的文章了,这是我需要去follow的一篇,来自AAAI2023。之前已经仔细看过一次,现在又回头看第二次了。我需要对这篇文章进行一个详细的汇报与分享,希望自己能做好!什么时候才能在这篇的基础上进行创新呢?拭目以待!!

Motivation

multi-label zero-shot learning(ML-ZSL)的方法可以更好地满足真实应用的需求,因为它能够预测从没见过的标签。文中对于目前的ML-ZSL的方法提出了存在的2个问题:

  1. 仅仅使用了单模态预训练模型(一般是语言预训练模型),忽略了图像-文本对的视觉语义信息。个人认为应该是文本图像不能够很好地、很正确地、很迅速的match在一起,因为先验知识掌握得不足。如果两个模块分开用两种不同的预训练模型,因为它们之间没有知识互通,所以会导致虽然两个模型都能很好地学习到图像/文本特征,但在跨模态的matching中还是会表现得不够好。
  2. 预训练语言模型只能够较好地处理word label,而不能拓展到text label(例如word label ‘cat’ & text label ‘black cat’,后者会带有一定的视觉属性。

上图中对比了一般的ML-ZSL框架和文章提出的MKT架构。在这个图中也可以看出来传统ML-ZSL的缺陷,主要是Image Encoder和Label Encoder完全是分开的,没有知识互通,在跨模态的比较中可能会遇到比较大的alignment问题。第二个点就是关于text label (‘Black Dog’),像Glove这样的预训练embedding模型只能是把它拆开,然后用两个word embedding叠在一起作平均。如果没有图像的帮助,最后在语义空间中或许不能作很好地匹配。文中MKT模型使用了VLP (Vision and Language Pre-trained) 模型,因为是用文本和图像对一起训练的,所以有知识的共享,更好的alignment和matching。

同时,open-vocabulary方法取得了很好的成果。open-vocabulary是在大量的文本-图像对上面去训练的,正好能解决单模态预训练模型的缺陷,因为它达成了图像与语言模型的知识互通。下面来区分一下open-vocabulary和zero-shot的细微差别:

(from Open-Vocabulary Object Detection Using Captions, CVPR2021)

  • v Ω v_{\Omega} vΩ: entire language vocabulary
  • v B v_{B} vB: classes for training (mainly for vision model)
  • v C v_{C} vC: open set for training a large model (teacher model)
  • v T v_{T} vT: classes for testing

对于open-vocabulary任务来说,一般需要使用很大的视觉-文本对,训练一个大模型;然后再使用这个大模型去完成其他下游的训练任务,或者用这个大模型来指导其他任务模型的训练。Open-Vocabulary其实是更加泛化的zero-shot learning,它和传统的ZSL区别在于,它能够识别任意的类别,而非同一领域相似但未见的类别。和Weakly Supervised区别在于,WS任务是需要已知训练的类别,它需要包含在这个open set中,而open-vocabulary的测试类别是不可知的,它可以是open set中任意的子集,也可以不是。

例如说,传统的ZSL任务就是,在cifar10的其中几类上训练,然后测试的时候能识别另外的几类。但open-vocabulary因为具有大量数据训练的模型,在它的指导和帮助下能够识别出与训练数据分布相差较大的类别,如cifar10训练,识别杯子、台灯这种十分不相关的类别。

Contribution

  • open-vocabulary之前没有用于多标签分类任务,这篇文章首次探索这一应用,提出的MKT (multi-model knowledge transfer) 联合应用了图像-文本对的语义多模态信息。
  • MKT中应用了知识迁移,引入了open-vocabulary的前置知识,用来保证图像与文本的matching。为了适应不同的下游任务,对text embedding使用了prompt tuning。使用two-stream module, 捕捉局部与全局的特征,实现更好的特征提取功能
  • 在NUS-WIDE和Open Images上取得sota

Challenge

  • The alignment between image and label embedding
  • The relation between seen and unseen label embedding
  • word-level label to text-level label

Method

文中将训练过程分成了2 stage。第一个阶段主要是训练ViT和Two-stream模块的参数,第二个阶段采用了prompt tuning,详情可见 Learning to Prompt for Vision-Language Models.

Stage 1

  • 1 — 图片先划分为non-overlapping patch,外加一维class token指代分类,然后放入Vision Transformer,得到下面输出:
    x L = [ o c l s , o p a t c h ] x_L=\left[o_{c l s}, o_{p a t c h}\right] xL=[ocls,opatch]
    假设图像大小224×224×3,用一个16x16尺度,步长为16,通道数为768的卷积过一下图像,然后每一个patch大小为14×14,进入Transformer先拉平成196长度,然后外加一个class token变成197×768的大小。过完Transformer后还是保持一样的大小。

  • 2 — 同一张图放入VLP Image Encoder,得到一个向量输出(大小是1×768),因为这里用的CLIP模型的Image Backbone也是ViT,但官方模型只输出一维图像embedding。在这里将VLP Image Encoder当作老师模型,用该输出和上面计算出的 O c l s O_{cls} Ocls进行距离计算(1范式),获得只是蒸馏部分Loss。
    L dist  ≜ ∥ Φ I C L I P ( x ) − o c l s ∥ 1 = ∥ o d i s t − o c l s ∥ 1 \mathcal{L}_{\text {dist }} \triangleq\left\|\Phi_I^{C L I P}(\mathrm{x})-\mathbf{o}_{c l s}\right\|_1=\left\|\mathbf{o}_{d i s t}-\mathbf{o}_{c l s}\right\|_1 Ldist

    ΦICLIP(x)ocls

    1=odistocls1

  • 3 — 一个two stream Module,这也是和普通ViT模型较大的不同,就是利用好patch embedding,而普通ViT模型只是利用那个分类 embedding。这里让patch embedding过一个local线性层,因为patch主要捕捉的是local information;让class embedding过一个global线性层,将它们的维度都映射成public embedding space 需要的维度(512维)。

  • 4 — 用VLP Text Encoder把prompt template转换为text embedding,维度默认为512维。

    prompt template: 将下游任务转换为pre-training的任务。先制定一个句子模板,比如说文中是" There is a [mask] in the scene",mask部分填入的是标签词,后面需要做的是标签词映射,即给 定哪些标签词是positive的,哪些是negative的。引入模板和标签词本质可理解为一种数据增强, 通过增加提示的方式引入先验知识。

  • 5 — 计算similarity score,对于class embedding, 在公共空间中直接和text embedding做cosine计算相似度;对于patch embedding,所有patch都要和text embedding做点积,但是只选出前K个得分较高的,并且加起来取平均。
    s i = ⟨ z i , e c l s ⟩ + TopK ⁡ ( [ ⟨ z i , e 1 ⟩ , ⟨ z i , e 2 ⟩ , … , ⟨ z i , e N ⟩ ] ) s_i=\left\langle\mathbf{z}_i, \mathbf{e}_{c l s}\right\rangle+\operatorname{TopK}\left(\left[\left\langle\mathbf{z}_i, \mathbf{e}_1\right\rangle,\left\langle\mathbf{z}_i, \mathbf{e}_2\right\rangle, \ldots,\left\langle\mathbf{z}_i, \mathbf{e}_N\right\rangle\right]\right) si=zi,ecls+TopK([zi,e1,zi,e2,,zi,eN])
    上面的 s i s_i si是该样本属于第i类标签的score, z i z_i zi是在embedding space中的text embedding, e c l s e_{cls} eclse i e_i ei是经过two-stream出来的image embedding。

  • 6 — 计算Ranking loss。
    L rank  ≜ ∑ i ∑ p ∈ y i , n ∉ y i max ⁡ ( 1 + s i n − s i p , 0 ) \mathcal{L}_{\text {rank }} \triangleq \sum_i \sum_{p \in \mathbf{y}_i, n \notin \mathbf{y}_i} \max \left(1+s_i^n-s_i^p, 0\right) Lrankipyi,n/yimax(1+sinsip,0)

  • 7 — 合并ranking loss 和 distillation loss
    L stage  1 = L rank  + λ L dist  \mathcal{L}_{\text {stage } 1}=\mathcal{L}_{\text {rank }}+\lambda \mathcal{L}_{\text {dist }} Lstage1=Lrank+λLdist

Stage 2

等到Stage 1中主要模型的参数都训练好之后固定住,去训练一个表现较好的prompt。这里的prompt不是采用人工制订的prompt template( like ‘This is a [label].’ ),而是把[label]前面的字都变成是可训练的。所以这个阶段我们主要训练一个prompt template类似 V 1 V 2 V 3 . . . V N [ l a b e l ] V_1V_2V_3...V_N[label] V1V2V3...VN[label] 这样的,可以是对于所有类别都是这个template, 这样能更好适应我们设定的任务。这种方法不需要人工制订,减少人力成本,也去除了我们需要大量领域知识的要求。

在这个阶段,我们的目标也是让图像和文本对尽可能正确匹配,但最后的Loss是有区别的,因为没有知识蒸馏操作。
L stage  2 = L rank  \mathcal{L}_{\text {stage } 2}=\mathcal{L}_{\text {rank }} Lstage2=Lrank

Experiment

  • 数据集:NUS-WIDE, Open-Images v4
  • 任务:zero-shot learning( ZSL ), generalized zero-shot learning (GZSL)
  • 对比模型:LESA, GAN-MLZSL, ZS-SDL, BiAM, CLIP-FT, MKT

    对于NUS-WIDE和Open-Images采用不同的K。比较这个最新提出的BiAM模型,以及训练好的CLIP-FT模型都有提升。比BiAM在两个数据集上分别提升了2.5%和16.3%,同时比同样是open-vocabulary的CLIP-FT也有一部分提升。

Ablation Studies

  1. 探究了distill 和 prompt tuning 各自起到的作用和组合起到的作用,两个组合才能发挥更大作用(NUS-WIDE)

    prompt tuning还可以更好地识别视觉信息,下面是做了tuning前后的对比:
  2. 采用不同的Label embedding方法(没有distill和prompt tuning)

    在label retrival任务中,探索CLIP和它的prompt tuning版本能否更好地捕捉标签之间的相关性。图中的Girls和Airport应该是没有出现在可见标签中的,获取图像的Top-3标签,与真实标签做一下对比。CLIP+prompt tuning能够非常准确捕捉标签的相似信息。

    下面这张图用t-SNE的方法体现了在2维上label embedding的相似性,也再次证明了CLIP能够更好地捕捉相似性。
  3. 探究two stream module的作用,local head在F1上表现好,global head在mAP上表现好。因为global head是一个更加全局的通用的、通用的表示。
  4. 探究超参数 λ \lambda λ 和local head中的 t o p − k top-k topk
  5. 探究不同的backbone- VGG19 & ResNet50
  6. 标准的多标签分类任务对比
  7. 与BiAM的Attention map比较

Open-Vocabulary Multi-Label Classification via Multi-modal Knowledge Transfer 论文解读相关推荐

  1. Vocabulary Learning via Optimal Transport for Neural Machine Translation论文解读

    abstract token vocabulary的选择对机器翻译结果的影响比较大 本文研究什么样才是好的词表,并且能不能不通过训练直接找到最优的词表 首先提供一种从信息理论的角度来分析词表的作用 通 ...

  2. 【医学+深度论文:F14】2018 Joint Optic Disc and Cup Segmentation Based on Multi Label Deep Network

    14 2018 T-MI (IEEE Transactions on Medical Imaging ) Joint Optic Disc and Cup Segmentation Based on ...

  3. 论文解读《Co-Correcting:Noise-tolerant Medical Image Classification via mutual Label Correction》

    论文解读<Co-Correcting:Noise-tolerant Medical Image Classification via mutual Label Correction> 论文 ...

  4. 论文解读:Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference

    论文解读:Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference   随着 ...

  5. 【Lifelong learning】Continual Learning with Knowledge Transfer for Sentiment Classification

    链接:http://arxiv.org/abs/2112.10021 简介 这是一篇在情感分类Sentiment Classification运用连续学习Continual Learning的pape ...

  6. C++知识点33——使用C++标准库(无序关联容器unordered_(multi)map,unordered_(multi)set)

    C++中,无序关联容器一共有4个,unordered_map,unordered_set,unordered_multimap,unordered_multiset 这四个和有序关联容器最大的区别就是 ...

  7. Convolutional Neural Networks for Sentence Classification论文解读

    本文将CNN和NLP结合: 介绍了一系列的对比实验,实验结果说明了: 一个简单的(单层神经网络)的CNN模型 一点超参数的调节(Filter的个数) static word vector 另外,对cn ...

  8. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  9. [论文解读] A Ranking-based, Balanced Loss Function Unifying Classification and Localisation in Object De

    文章内容 相关研究现状 1. 定位任务和分类任务的平衡/耦合 2. 基于排名的目标检测算法 本文工作 基于排序损失的误差驱动优化方法推广 定理1:基于概率分布的损失函数重定义 定理2:正负样本梯度总和 ...

最新文章

  1. Java架构体系学习路线图,这六点尤为重要!
  2. 中大南方学院计算机温澍潜,中大南方学院
  3. cassandra框架模型之一——Colum排序,分区策略 Token,Partitioner bloom-filter,HASH
  4. pycharm如何查找程序项目中所有断点?
  5. weblogic与sitemesh乱码问题
  6. 求护士的心理阴影面积 | 今日最佳
  7. 优化自定义函数_Pandas常见的性能优化方法
  8. 从html到pug模板,将变量从html-webpack-plugin传递到pug模板
  9. 为iOS Vision盒子架构建Core ML管道(五)
  10. STM8学习笔记---串口通信中如何自己定义通信协议
  11. php mysql时间倒序,php mysql时间已过去计算
  12. html弹出保存文件对话框_初步了解CAD的模板文件
  13. Memcache分组和同步机制的实现
  14. work summary(2)
  15. postgresql设置postgres密码_django项目时配置postgresql数据库的方法
  16. CenterNet++ | CenterNet携手CornerNet终于杀回来了,实时高精度检测值得拥有!
  17. oracle数据库查表创建语句,转载:如何查看Oracle数据表的建表语句?
  18. ArcGIS 基础6-ArcCatalog数据库管理
  19. 计算机网络CRC冗余码的计算
  20. 电脑技巧2——调出控制面板(桌面控制面板)

热门文章

  1. 可编程的并行接口8255A(有答题例题)
  2. upupw mysql 1067_UPUPW套件中,MySQL5.7配置优化参考
  3. 最笨的解决android打包aar中引入远程依赖资源加载不到的问题
  4. open-ethereum-pool以太坊矿池源码分析(1)环境安装
  5. JavaFX鼠标拖拽移动图片
  6. 块设备文件读取实验记录
  7. 设计模式 6 - 原型模式及spring源码案例分析
  8. 张萌韩墨羽——Android蓝牙
  9. 【新】手把手教你申请计算机软件著作权——新系统填写申请表
  10. 如何关闭苹果手机app评分及评论