Auto-Encoding Scene Graphs for Image Captioning 论文笔记
引言
本文主要是在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端共享的字典当中。
MGCN网络为了处理从图像得到的场景图信息,本文提出了一个MGCN (Muti-modal Graph Convolution)的网络。网络结构及处理过程如下:
首先,使用了Faster-RCNN 对图像做目标检测提取feature信息, 又利用了MOTIFS模型提取了检测目标之间的关系。利用本文自己提出了一个fc-ReLU-fc-softmax 结构提取目标的属性信息。然后将得到各类型feature和各自的label 进行了融合。
字典
本文利用文本中的知识预训练出一个具有先验知识的字典,在后面的任务中直接使用这个训练好的字典,对上下文产生的词嵌入向量进行转换重建。这样,模型在为图像产生caption的时候相当于利用到了大量文本语料库中的知识,能产生更符合人类习惯描述的句子。
实验结果
1.消融实验
作者在MS-COCO数据集上做了模型的消融实验:
Base: 传统的caption 模型,直接把图像特征做attention变换送入到编码器,无其他变换。
Base+MGCN:基模型+图卷积,就是说把物体之间的关系 属性也都融合到特征当中。
Base+D w/o GCN:文本库中的单词做完词嵌入之后之间送入D中,不做GCN操作。
Base+D:和上面的相比,单词做完词向量之后,在经过GCN转换,送入D中。
SGAE:全都用上
2.语料实验
作者还利用不同的语料库分别对字典D做了训练,结果有比较大的差距。
BASE:什么都不用
Web:采用VG数据集里面的caption 语料库
SGAE:采用的是COCO数据集里面caption中的语料库
3.句子重构实验
作者还使用了不同方法得到的scene graph做了最后句子重构实验
结论
作者利用场景图信息,改进了目前常用的Encode-Decoder框架,其中,提出的无监督的学习方法SGAE,通过预训练一个在Encoder端和Decoder端共享的字典,充分利用了在语料库中学到的知识,在最后在为图像生成描述的时候能产生更符合人类语言习惯的句子。