在image captioning任务中,常规的encoder-decoder框架都是利用检测网络,如CNN提取特征,然后直接送到decoder端进行解码生成句子。文章《Auto-Encoding Scene Graphs for Image Captioning》引入了场景图模型,并利用自己提出的SGAE模型,对共享字典在文本语料库上进行预训练,然后在caption模型中作为初始化,目的是引入语料库中的先验知识。
论文地址:
https://arxiv.org/abs/1812.02378
本文主要是在image caption 任务中引入了场景图模型。利用图卷积网络(GCN),将图中检测得到的object和其自身的attribute,以及其他object之间的关系融合在一起作为网络的输入。另外,作者受到利用working memory保存动态知识库的启发,提出了一个共享字典的结构,先在文本语料库上进行预训练,最后为图像生成的描述时,利用在语料库中学到的先验知识生成更语义更丰富的句子。
本文基于MS-COCO和VG数据集,对这两个数据集的数据都进行了预处理。对于caption进行了去除空格、全部转换为小写、限制最长句子为16,并删除了出现少于5次的单词,最后词表为10369。
对于VG数据集,只保留出现2000次以上的 object、attributes和relationships。预处理后训练集内只剩下305 类objects、103种属性 和 64 种关系。
本论文整体模型如下图,作者在常规的Encode-Decoder 模型中嵌入了一个自己提出的结构SGAE,即 Scene Graph Auto-Encoder。将图像通过检测网络得到的object和其自身的attribute,以及其他object之间的关系等feature, 生成场景图,再通过图卷积网络处理后作为网络的输入,送到已经利用SGAE结构预训练好的在Encoder 端和Decoder端共享的字典当中。
场景图中给定一个关系三元组 < o i − r i j − o j > <o_{i}-r_{i j}-o_{j}> <oi−rij−oj>,则:
场景图中给定一个目标 o i o_{i} oi和它的属性 a i , 1 : N a i a_{i, 1} : N a_{i} ai,1:Nai,则:
在场景图中,因为 o i o_{i} oi在一个关系对中既可以作为头实体“subject”也可以作为尾实体“object”,也可以出现在不同的关系对中,所以公式处理的时候要把它出现的所有关系都加进去,则:
为了处理从图像得到的场景图信息,本文提出了一个MGCN (Muti-modal Graph Convolution)的网络。网络结构及处理过程如下:
首先,使用了Faster-RCNN 对图像做目标检测提取feature信息, 又利用了MOTIFS模型提取了检测目标之间的关系。利用本文自己提出了一个fc-ReLU-fc-softmax 结构提取目标的属性信息。然后将得到各类型feature和各自的label 利用下面的公式进行了融合得到 u o i u_{o_{i}} uoi,同理可得到 u a i , u r i j u_{a_{i}}, u_{r_{i j}} uai,urij。
最后再利用类似于GCN网络中的4个公式 f o , f s , f a , f r f_{o},f_{s},f_{a},f_{r} fo,fs,fa,fr 对检测目标,相应属性及其之间的关系进行向量嵌入送入后续网络当中。
本文利用文本中的知识预训练出一个具有先验知识的字典,在后面的任务中直接使用这个训练好的字典,对上下文产生的词嵌入向量进行转换重建。这样,模型在为图像产生caption的时候相当于利用到了大量文本语料库中的知识,能产生更符合人类习惯描述的句子。
这个字典是一个 d × K d \times K d×K维的矩阵,给定一个词嵌入向量,可以用下面公式进行重构,其中 α = s o f t m a x ( D T x ) {\alpha}={softmax}({D}^{T} \boldsymbol{x}) α=softmax(DTx):
作者在MS-COCO数据集上做了模型的消融实验:
Base是传统的caption 模型,直接把图像特征做attention变换送入到编码器,无其他变换。Base+MGCN使用了基础模型和图卷积网络,就是说把物体之间的关系及属性也都融合到特征当中。Base+D w/o GCN是文本库中的单词做完词嵌入之后之间送入D中,不做GCN操作。Base+D是和上面的相比,单词做完词向量之后,在经过GCN转换,送入D中。SGAE则是全都用上的结果
作者还利用不同的语料库分别对字典D做了训练,结果有比较大的差距。
BASE是什么都不用;Web采用VG数据集里面的caption 语料库;SGAE采用的是COCO数据集里面caption中的语料库。
作者还使用了不同方法得到的scene graph做了最后句子重构实验
X \mathcal{X} X是从句子直接得到的scene graph; X ^ \widehat{\mathcal{X}} X 是 X \mathcal{X} X再经过字典重构得到的scene graph;SGAE是作者提出的模型,这个scene graph是从图像中得到的。
作者利用场景图信息,改进了目前常用的Encode-Decoder框架,其中,提出的无监督的学习方法SGAE,通过预训练一个在Encoder端和Decoder端共享的字典,充分利用了在语料库中学到的知识,在最后在为图像生成描述的时候能产生更符合人类语言习惯的句子。