GroundeR:Grounding by Reconstruction
tensorflow代码
主要框架分为两部分,一是根据phrase p(也就是caption中的某个词组)确定出图片中最可能对应的区域(proposals),二是根据选出的区域重构出一个phrase p0.
3.1 Learning to ground
要在一幅图片的N个proposals中选出与phrase p最匹配的,需要定义一个attention function: fATT 来选出获得最大attention的box j : j = arg max fATT(p, ri)
那fATT 是什么呢? 他就是文章中提到的attention modal,它的输入是一个多词短语,短语中每个单词先用one-hot编码表示,然后经过embedding成为对应词向量,作为编码器LSTM的输入。LSTM最后一个时间步的hidden state h 作为该phrase的表示。
接下来,每个bounding box ri 经过CNN编码,得到其对应的visual feature vector vi
文章中使用一个两层的感知机来计算每个proposal的attention:
然后用softmax进行标准化,获得该proposal是phrase p恰好对应的区域的概率:
loss Latt:
3.2 Learining to reconstruct
把式(5)中得到的αi作为权重,对所有vi求和:
通过ReLU进一步编码成:
v’att 将作为重构phrase的基础。依然采用LSTM,将v’att作为输入,生成phrase p’ 的分布函数:
每个时间步t内,根据v’att和所有之前生成的words预测下一个单词的分布
loss Lrec:
total loss: L = λLatt + Lrec