论文阅读:Towards Open-vocabulary Scene Graph Generation with Prompt-based Finetuning(ECCV22)

第一次看这种prompt的论文,虽然好久没写论文笔记了但是这篇有必要记录一下()

pipeline如下:在这里插入图片描述
先看左边的Pretraining VRM
这部分分为两个encoder,分别是上方的图像encoder(εi)和下方的文本encoder(εt)

1.图像encoder
图像encoder分为两个部分,分别是区域proposal特征提取器(Faster RCNN)和关系Transformer(RelTrans)

对于一对主客体对(s-o),使用关系Transformer对其编码,编码过程如下:

其中,rt是主客体对中左上角的区域,rb是右下角的区域,[r1,…rm]是与主客体对的union box有重叠的其他区域。区域来自Faster RCNN的输出。l是每个区域的位置embedding。经过关系Transformer的编码后,得到了[ht,h1,…hm,hb]的编码结果,我们需要的是ht和hb(即hs和ho)。

对于主客体对的union box,也需要用关系Transformer对其编码,编码过程跟上面的公式基本一样,只是将rt和rb换成了rso(即主客体的union box),编码结果为[hso,h1,…,hm],我们需要的是hso。然后对hso再执行下面的公式,得到hr。hr计算公式如下:

综上,hs,ho和hr是图像encoder的输出


2.文本encoder
这里应该用的是预训练好的文本encoder。使用的训练数据是VG里的dense caption,每张图像平均有50个caption,只是描述对应区域的,如下图左侧的框。

文本encoder也分为两个部分,先是embedding,再是文本Transformer,前面的embedding我觉得是下式的W2。下式的[w1,w2,…wk]是第i个caption的单词。l’是每个单词的位置embedding。[CLS]和[EOF]是可学习的特殊token,表示第一个单词和最后一个单词。ei是对第i个caption的编码结果。

综上,ei是文本encoder的输出


3.预训练的loss

loss分为三个部分:
(1)Lmrl,针对图像encoder里的关系Transformer,将输入的任一区域用特殊标记[mask]代替,通过对比损失使h[mask]尽可能和h[ground truth]接近,训练的是图像encoder
(2)Lmtl,针对文本encoder里的文本Transformer,使用的交叉熵,也是将任一token mask掉,训练的是文本encoder
(3)Lc,图像encoder的输出和文本encoder的输出尽可能接近,使用的余弦对比损失

至此,预训练结束。在后续的微调过程中,这两个encoder的参数不更新。


再看右边的基于prompt的微调
1.基于hard prompt的微调
模板如下,[CLS]表示第一个单词,[SEP]是句子和句子之间的分隔词。xs是主语的类别,xo是宾语的类别,[mask]是给谓语类别留出来的slot。

谓语的预测公式如下式所示:

其中,模板是Xpro,y是caption中的单词,用M()把它从caption的单词集合中映射到了谓语类别的集合中,ffill()是已经填充完slot的prompt。hr是关系Transformer里的,计算方式为hr=LN(hs,hso,ho)。θ是线性投影函数LN的参数,只有这部分参数更新。P()是得分函数,y_hat是置信度最高的谓语。

得分函数计算如下:

其中,ein( p )是p这个prompt经过文本Transformer的编码结果。这个公式是评估主客体的视觉区域主语-谓语-宾语这种形式的prompt的余弦相似度,然后做了一个softmax。q是所有填充完的prompt。

1.基于soft视觉-关系prompt的微调
模板如下:

其中,xs’,…,xo’来自下图的V2T decoder。注意下图的εi/εt和预训练VRM那里的εi/εt是一个东西。

谓语的预测公式如下式所示:

相比hard prompt,少了hr。θ‘是V2T decoder的参数,只有这部分参数更新。

得分函数P如下:

其中,wr是数据集的谓语类别经过文本encoder的embedding,e[mask]是prompt中[mask]这个token的文本encoder输出

------------------------------------------------一些碎碎念----------------------------------------------------
在做新实验了
想方设法证明加的都是有用的()
最近沉迷史莱姆的视频
但是史莱姆都好贵啊。
感觉我的实验就像做史莱姆一样
加一堆胶水 搅和搅和 面多了加水水多了加面(bushi
最后变成一块()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值