实现方法

latent space representation similarity


古老方法

Visual-semantic embedding(nips’13)

idea

模型十分原始,还没有用“cross modal”这种标签,目的是为了学到好的image和text融合的embedding。
图中label其实是image description(text),给image加了个transformation,希望image的space能够transform到与text相同的空间中去。

loss

其loss是拉进相同对,拉远不同对的hinge rank loss:

v()是image的latent space,Mv()就到了与text相同的space了,然后dot得到分数。

小结

后续的其实都可以说是这个模型泛化的。

Image Encoders

UNITER(eccv’20)

出自微软dynamic 365

image端Faster RCNN,nlp端bert。
训练loss除了text bert的MLM,img端也用类似的掩码后重建,外加image-text matching的loss

loss

txt的MLM是bert的老loss,不谈了。

第二部分是图片重建loss。
对图片的重建文章给了三种,因为图片的重建是一个二维张量,所以可以:

  • feature regression,在给定其他img region的条件下,恢复出被mask掉的region。回归用的是mse:

  • 由于图片是FasterRCNN输出是bounding box和这个box的cls类别,还可以用cls类别做loss:

  • 除了mse,还可以用KL拉进输出的ditribution:

第三部分是 txt和img的matching (ITM) loss,采用了二分类loss,预测两个是否是pair:

至此pretrain的Loss就结束了。

其他信息

为了用作不同下游任务,文章还给出了什么下游任务用什么loss组合:

ViT(Vision Transformer ICLR’21)

transformer在cv的转化版。尽管在这篇工作之前也有很多类似的工作,但是这个工作还原度最高、效果最好、训练资源最大。


与原版Transformer稍微有一点区别:

loss

用CLS预测图片的分类

CLIP

训练

实验

img-text retrieval

JEMA(cikm’21)

来自DeepAI

方法

食物与食谱多模对齐,文章偏应用。

结构特别复杂,image两段feature extraction,text也两段,后各自融合,各自由两两个小loss引导,再两模态融合又有大loss引导,融合后,再加一个小loss引导,共4段loss。

loss

  • DHTLsmDHTL_{sm}DHTLsm,Soft-margin based Batch Hard Triplet Loss,就是triplet loss,soft margin又hard的triplet loss,这是主loss:
    平常的triplet loss是L=max(d(a,b)−d(a,c)+margin,0)L=max(d(a,b)-d(a,c)+margin,0)L=max(d(a,b)d(a,c)+margin,0),原先的margin+∗margin+*margin+,被approximate成了ln(1−ln(γ(∗+margin)))ln(1-ln(\gamma(*+margin)))ln(1ln(γ(+margin)))。loss是双边的取样了两次,一次的recipe(text)→\rightarrowfood(image),一次反过来。

  • 两个多分类loss,分别是image与image label和text与text高频term的两个多分类任务的loss。

  • 一个discriminator loss,专门判别embedding是否是text emb还是img emb:
    FDF_DFD是判别器,判别此emb是否是visual image,还另外给text那部分加了一个让他embs尽可能变得像visual emb的loss LDAL_{DA}LDA
    文章的理由是,既然我判别器是判别emb是否是visual,那对text来说我就要尽可能接近v的emb才能让这个GAN work啊。(我估计是模型不加LDAL_{DA}LDA收敛不了,个人看过的GAN里加这个的不多。。)

效果

仍然是retrieval实验,用text embs去找 img embs,或者相反方向。

JEMA模型的不同在于recipe关键词的排序不同,img都是ResNet系列做encoder。
最后还是TFIDF的效果最好(老的东西不一定效果不好~)

消融

既然加了这么多loss,到底有没有效果?
-b意思是使用普通triplet loss,作为基线模型;MA_v、MA_r是分支的多分类loss;CA和DA表示 embs判别那个loss是用判别方式还是用分类方式;已经大loss DHTLsmDHTL_{sm}DHTLsm

消融实验结果看起来非常舒服的,并且使用了和eval相同的分数MedR、R@1等。

case study

以text→\rightarrowimg为例,因为输入要有2段:instruction和ingredient,retrieve出来food imgs。

小结

  • 这是有监督的,2个模态监督信息 img的分类+text的高频term。
  • 结构复杂,组件多。
  • 效果好,各组件消融实验清楚。

EOMA ICMR ’22

文章提出event概念,曰 在一段时间内先做什么后座什么的这些事情,叫做event。而我们food recipe是event dense的,所以要强调event在feature extraction阶段的作用。

话虽然这么说,但是其实forward流程完全一样,只是换个说法讲故事而已。

模型


与原工作的不同点:

  • text端:title也用作text data,encoder换为transformer系列
  • img端:encoder换为CNN(其实是ResNetXt101,与上个工作一样)+ViT
  • event embs:
  • loss:内部align外加两项

eval

效果只能说炸裂,换了encoder之后直接升天。

既然loss和forward流程并无改变,其实此还是该归功于encoder的选择,Transformer系列、ViT和Transformer确实太好用了。

消融实验的数据也是非常好看(会不会有猫腻……

小结

  • 更换encoder,注意event后,效果炸裂,直接提点10%以上;
  • 其他和上篇工作一样,可以理解为更换了encoder后的上篇工作;
  • 由于效果炸裂,成为会议的best paper candidate。

Graph based Text-Img:GSMN(cvpr’20)

方法

首先分两段输入,text和img。两端分开来说。
text: 用NLP的依存分析解析出来各个word的关系并依据这些关系建图。word embedding用Bi-GRU第i层的avg的hidden state,可能是依存关系的工具给的。
img:用Faster RCNN得到的各个object框,然后用ResNet取feature作为initial representation,用极坐标定点各个object的位置,并以此建图。

以上两步就得到了visual graph和textual graph,接下来进行两次尺度上的matching。

node level matching

(文章说是matching,倒不如说是representation的预处理……)

这里是对不经过图卷积的node表示直接进行matching。UαU_{\alpha}Uα做text node表示矩阵,VβV_{\beta}Vβ做visual node 表示矩阵,matching过程如下:

  • 两两计算vvvuuu的相似度得到相似度矩阵,后在img维度上softmax得到text→\rightarrowimg的权重,并与V相乘,得到了获得text信息的img表示Ct−>iC_{t->i}Ct>i
    img→\rightarrowtext方向上也是这么做,得到Ci−>tC_{i->t}Ci>t

    至此,visual node的embedding和graph,以及textual node embedding和graph都准备好了。

structural level matching

这一步倒相对简单了,直接把两个graph送入图卷积神经网络GCN后得到两组feature,然后平均了两两组合输入再过linear得到这个pair的match程度。经过message passing,

先经过图卷积,

在经过两层linear,得到用mlp推断的similarity。

(他这里并没有用XXX表征一幅图,而是用xxx,一般来说xxx表示图中一个节点。原因应该是这里一幅图+图caption就要建两个图,整个数据集有很多个图,他把图看成了“基本单位”。

有了两个方向的匹配度,平均一下就是undirectional真的similarity了。

(有一点奇怪,structural level matching的sim并没有visual node和 textual node的交互……只有node level matching的时候进行了交互融入进去了一点两模态的交互。

文章对此有如下解释:

revise

text GRU,img Faster RCNN+ResNet,node matching获得初始表示,经过图卷积后计算sim,然后进行triplet loss。

loss

也是经典的triplet loss,拉进match pair的距离,拉远不match的,同时也可见整个模型是有监督

效果

文章方法GSMN

  • 数据集:Flickr30K and MSCOCO,img+caption

  • 任务:retrieval

  • 测试指标:

    提升很大3%左右。
    sparse意思是我用NLP依存关系对textual graph建边;dense指我直接fully connect,不用依存关系了。sparse+dense文章没清楚,可能是有些图sparse有些图dense?

文章只给出了retrieval的结果,没有给更细粒度的semantic segment的效果,只给了他的case study:
由于用的Faster RCNN,还是只能画框来表征object,这种semantic segment是图中textual node与visual node的dot sim得到的。

小结

  • 方法有点怪的,除了loss是“比较通用”,node matching其实是对初始表示做个加权,structure matching是自己这一路用mlp做个预测值,只有node matching能勉强说是两模态有信息交流……
  • 能实现的仍然是 短语级别 - 图片级别的retrieval,而不是图片obj和word级别的对齐,
  • 在retrieval上,与sota相比提升很大

ALBEF nips’21

流程


3个encoder,除了img和text还有multimodal encoder。img encoder是ViT(终于有用ViT的了),text encoder和multimodal encoder都是是bert。

txt和img端得到feature后,再输入multimodal的encoder,然后以输出做loss。

这还没完,这是一个base model,还有一个momentum model(图右侧),momentum model的encoder参数按照running average方法更新,除了base model的3个loss,还有base model和momentum model的loss。

loss

loss有三块,bert的MLM,text-img matching和NCE。MLM还是完形填空,略过。

带监督的nce

带监督的NCE loss的时机在multimodal encoder之前,这也是文章标题说的:Align before Fuse: Vision and Language Representation Learning with Momentum Distillation,他要在fuse之前做align。(但是也没说这样子的好处)
文章直接用img和txt的个encoder的[CLS] token做整个img和txt的表征,进行infoNCE,两个方向上:

再加入监督信息:

matching loss

matching loss是multimodal encoder过后,会输出这一组txt和img是否是一组,这个loss是有监督

最终的loss就是三部分加起来

与momentum modal的loss

回顾带监督的nce有两个estimation distribution pmi2tp_{m}^{i2t}pmi2tpmt2ip_{m}^{t2i}pmt2i。我base modal有这俩,momentum model也有。文章最小化这两者的KL散度。

  • 为什么要外加个momentum model?
    文章给出的理由是:数据大部分是爬虫爬来的,即便是有标签的pair,也只是“weakly correlated”,是有很多噪声,那那些text和img更相关的可能埋没在neg pair里面了。而原本的NCE只认给定的txt和img,但是如果我有个momentum modal,他的参数更新是相对旧的,我就能找到不是标定的txt-img但是“更可能”是有关系的pair了。

    The image-text pairs used for pre-training are mostly collected from the web and they tend to be noisy. Positive pairs are usually weakly-correlated: the text may contain words that are unrelated to the image, or the image may contain entities that are not described in the text. For ITC learning, negative texts for an image may also match the image’s content. For MLM, there may exist other words different from the annotation that describes the image equally well (or better). However, the one-hot labels for ITC and MLM penalize all negative predictions regardless of their correctness.
    To address this, we propose to learn from pseudo-targets generated by the momentum model.

    个人理解:牵强!可能就是硬为了用上momentum 机制,蹭MoCo的热度……

到此Loss部分结束,简单说是base model的3部分,外加base-momentum的1部分,都是带有监督信息的。

消融实验

TR text retrieval;IR image retrieval。

第1、2行可以看到ITC(image-text constrastive loss)那部分对retrieval影响大~3个点。
选取hard negative pair也能提点1%。
倒数2、3、4行,momentum model和base model机制只提了0.x%。

与baseline的实验

retrieval做法:

During inference, we first compute the feature similarity score sit ccc for all image-text pairs. Then we take the top-k candidates and calculate their ITM score sit mmm for ranking


提了很多,但是差距不是很大。分数都非常高95%以上了都。

小结

  • 模型是有监督的。
  • 使用了ViT,最新的视觉领域的encoder了,数据集也极大,retrieval的结果都达到95%以上了。
  • momentum model机制大可不必,参数量直接翻了一倍结果也提升不大
  • txt的bert和img的ViT,估计整个模型会很大。

能加强Semantic Align的正则项 ACL’21

论文提出了一个“距离”IAIS,并且提供了最小化此距离的对应loss

距离的提出

文章的输入,是把各个模态的序列合并了起来X=XV∣∣XLX=X_V||X_LX=XV∣∣XLL表示linguistic,V表示visual。并起来以后,再做和transformer self-att一样的操作。但是由于并不是一个模态的了,文章把详细拆成了四个部分:
SLLS_{LL}SLLSVVS_{VV}SVV是“模态内att;”SLVS_{LV}SLVSVLS_{VL}SVL是“模态间att”。

接下来,由于假设L和V是对齐的,所以也希望SLLS_{LL}SLLSVVS_{VV}SVV距离也能够相近:
文章定义了m-KL是双向的KL,从SLLS_{LL}SLLSVVS_{VV}SVV一个KL,还有反向一个。并且把这个距离叫做Intra Modal Self-att Distance with annotation (ISDa)。

那这个距离有用没用?

UNITER在训练过程中,随着Recall的增大,ISDa在减小,并且二者皮尔森系数是-0.6,说明是有关联的。

提出的新附加loss

通过用SVLS_{VL}SVLSLVS_{LV}SLV“重建”SVVS_{VV}SVVSLLS_{LL}SLL,并且与用SVVS_{VV}SVVSLLS_{LL}SLL的m-KL来算loss。

重建方法一:

其实就是找att最大的然后记录、转换。
转换过后,新出来的SLLsS_{LL}^sSLLsSVVsS_{VV}^sSVVs就和原SLL SVV做m-KL。

重建方法二:
SVVd=σ(SVL)σ(SLV)S_{VV}^d=\sigma (S_{VL})\sigma (S_{LV})SVVd=σ(SVL)σ(SLV)
然后还是m-KL拉进SVVdS_{VV}^dSVVdSLLdS_{LL}^dSLLd和原SVVS_{VV}SVVSLLS_{LL}SLL

retrieval实验

刚刚介绍的副loss只用在了fine tune阶段,而且设置了阈值只在符合条件的pair才给计算。(这种计算量巨大)


不过这对比不使用,是有效果的。
sigular指两个for的重建SLLS_{LL}SLL,distributed指SVVd=σ(SVL)σ(SLV)S_{VV}^d=\sigma (S_{VL})\sigma (S_{LV})SVVd=σ(SVL)σ(SLV)重建。

小结

  • 提出了一个距离以及配套的loss,能够仅在fine tune阶段就提升retrieve的效果
  • encoder 是 FasterRCNN,相对老旧,在使用IDSa的时候不方便
  • XVX_VXVXLX_LXL并到一起了做输入了,实际使用会方便吗?
  • 由于文章计算资源不够,实验有限。

CAMP(iccv’19)

直来直去的feature fusion。
VVV是FasterRCNN取出来的;TTT是bi-directional GRU取出来的。数据集Flickr30K和COCO。

forward

TTT是text feature、VVV是visual feature。

第一步

进行类似transformer K Q V attention的操作(cross modal message aggregation),只不过这次是TTTVVV矩阵。A=softmax((WvV)T(WTT)d)A=softmax(\frac{(W_vV)^T(W_TT)}{\sqrt d})A=softmax(d

(WvV)T(WTT)),T^=AT\hat T=ATT^=AT这个操作是对TTT的,对VVV也有相同操作。
对应图上红色。

第二步

再来一次Gated fusion+residual(图中对应绿色)。gate(单个向量)操作:
对于VVV,整体来看是1 VVVTTT进入gate算门是否被激活 2 与门GGG再做运算做fusion:

⊕ is the fusing operation (elementwise sum)。
这一步文章还单独画了一个图:

第三步

再来一次和第一步相同的操作

第四步loss

有了v∗v*vt∗t*t相加后过mlp和sigmoid作为两者是否是pair的预测,
不过他是以最难二分类loss,就是从所有的vt pair中,只取最接近真pair的那组做0:

消融实验


base model:没有任何cross model的操作,直接用encoder取到的feature做cos retrieve。可以看到也不差

影响比较大的组件:cross att(红色 11)、fusion residual(绿色的残差链接 12)、mlp预测与ranking loss而不是用cos(蓝色 7)。


消融的结果可以看到:

  • 两次两个模态的交互起到了至关重要的角色。
  • 就即便是base model的feature直接cos检索,效果也不差,仅差了5个点

小结

总结

  • 全部是有监督模型
  • 尽管case study上,能够实现sentence word ↔\leftrightarrow img obj级别的align,但是并没有一个model是以此为目的,且给出衡量指标的模型,全部的模型都是检索任务。不过retrieval的提升可以理解为query中的obj与samples的obj对得更齐了使得整体的结果上升了。
  • txt端的encoder大部分都是bert,img这边有Faster RCNN和ViT,这些模型retrieval结果的提高,很大程度上是encoder升级换代。
  • 没有模型是只用一个Loss就解决掉align问题的,全部都是多角度、多方位的几个loss叠加训练。
  • 训练Loss 主要都是triplet loss+其他需求loss构成。

跨模态对齐 20220728相关推荐

  1. 你说我画,你画我说:全球最大中文跨模态生成模型文心ERNIE-ViLG来了!

    来源:机器之心 本文约2300字,建议阅读9分钟该模型参数规模达到100亿,是全球最大的中文跨模态生成模型. 在文字生成图像上,文心 ERNIE-ViLG 可以根据用户输入的文本,自动创作图像,生成的 ...

  2. Cross-modal Pretraining in BERT(跨模态预训练)

    BERT以及BERT后时代在NLP各项任务上都是强势刷榜,多模态领域也不遑多让-仅在2019 年就有8+篇的跨模态预训练的论文挂到了arxiv上-上图是多篇跨模态论文中比较稍迟的VL-BERT论文中的 ...

  3. See Finer, See More!腾讯上交提出IVT,越看越精细,进行精细全面的跨模态对比!

    See Finer, See More!腾讯&上交提出IVT,越看越精细,进行精细全面的跨模态对比! [写在前面] 基于文本的人员检索是基于文本描述来查找查询对象.关键是要学会在视觉-文本模态 ...

  4. LXMERT:从Transformers学习跨模态编码器表示LXMERT: Learning Cross-Modality Encoder Representations from Transfors

    摘    要 视觉和语言推理需要理解视觉概念.语言语义,以及最重要的是,这两种模式之间的对齐和关系.因此,原论文提出了LXMERT(从Transforms学习跨模态编码器表示)框架来学习这些视觉和语言 ...

  5. 跨模态学习能力再升级,EasyNLP电商文图检索效果刷新SOTA

    作者:熊兮.欢夏.章捷.临在 导读 多模态内容(例如图像.文本.语音.视频等)在互联网上的爆炸性增长推动了各种跨模态模型的研究与发展,支持了多种跨模态内容理解任务.在这些跨模态模型中,CLIP(Con ...

  6. 跨模态学习能力再升级,EasyNLP 电商文图检索效果刷新 SOTA

    导读 多模态内容(例如图像.文本.语音.视频等)在互联网上的爆炸性增长推动了各种跨模态模型的研究与发展,支持了多种跨模态内容理解任务.在这些跨模态模型中,CLIP(Contrastive Langua ...

  7. 可见光-红外的跨模态行人重识别最新研究成果汇总

    目录 Introduction Challenges Advantages Methods [2020 AAAI] Cross-Modality Paired-Images Generation fo ...

  8. 论文笔记--跨模态间的人脸与人名对齐方法研究-2012

    论文信息: 硕士论文-跨模态间的人脸与人名对齐方法研究-2012-复旦大学-吴伟 文末附人脸标注论文下载地址 文章目录 摘要 技术 框架图 人名重要性评估 人名检测 句法分析获得人名重要性&语 ...

  9. 今日 Paper | 跨模态行人重识别;对抗时尚迁移;学会注意错误等

    2020-03-11 15:11:09 目录 跨模态行人重识别:共享与特异特征变换算法cm-SSFT GarmentGAN:具有图片真实感的对抗时尚迁移 学习将纹理从服装图像转移到3D人体 学会注意错 ...

最新文章

  1. android 多屏幕适配 : 第一部分
  2. “河边一群鹅,嘘声赶落河。捉得鹅来填肚饿,吃完回家玩老婆!”
  3. 【NLP】Attention Model(注意力模型)学习总结
  4. 从建好到用好,阿里云原生微服务生态的演进
  5. Oozie JMS通知消息实现--根据作业ID来过滤消息
  6. mysql表类型_MySQL表类型的选择
  7. datastax.repo_使用Datastax Java驱动程序与Cassandra进行交互
  8. android 自定义属性 双向绑定,如何解决:“在使用自定义视图实现双向数据绑定时,找不到属性’android:text’”的getter?...
  9. oracle dg 日志手动应用,做了DG之后,日志没有被应用
  10. 【ICPC 2021网络赛2】The 2021 ICPC Asia Regionals Online Contest (II)签到题5题
  11. Node.js 推荐20多个学习网站及书籍
  12. 5分钟学会如何玩转云数据库组件(迁移,审计,订阅)
  13. 数字图像处理:时域、频域和空间域
  14. 八、JUC强大的辅助类
  15. display的值和作用
  16. VMware Workstation虚拟机无法获取IP地址的解决办法
  17. 区间缩放,标准化,归一化
  18. 【Python学习】导入类
  19. 激发潜能 成就梦想:抱着积极的心态开发你的潜能
  20. WebRTC系列<四> 全面了解客户端-服务器网页游戏的WebRTC

热门文章

  1. 美颜sdk中的人脸美型实现流程详解
  2. python中find是什么意思啊_python中str的find()
  3. python数据分析怎么学
  4. 腾讯WiFi管家手机无线上网免费下载安装
  5. MTTR/MTTF/MTBF图解
  6. 机器学习(五)——时间序列ARIMA模型
  7. proxmox VE备份优化手记--两次优化,大幅度提高性能
  8. 电脑突然无法上网如何解决 如何重新启用以太网
  9. ORM框架Gorm-删除记录
  10. [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.3.5发布-极简强大Go语言开发WEB网页客服...