UNC&Adobe提出模块化注意力模型MAttNet,解决指示表达的理解问题

  • 代码链接:https://github.com/lichengunc/MAttNet

  • Demo 链接:http://vision2.cs.unc.edu/refer/comprehension

任务

Referring Expression(指示表达)指描述图片中某一特定物体的一句自然语句。与 Image Captioning 任务不同的是 Referring Expression 具有唯一性和区域性,比如「穿红色毛衣的女人」或「右边的男孩」。在日常生活中,无论人与人之间的交流或是人机交互,都会涉及这种指示性的短语表达。所以理解它们并准确定位所描述的物体成为自然交互的必要条件。

指示表达理解的问题可以被定义成:从图片 I 里的各个物体〖O={o_i }〗_(i=1)^N 中选出那个「最」能被指示表达 r 贴切描述的物体 o^*。过往在此问题上的研究可以分为两类:基于 CNN-LSTM 的框架建模的 P(r|o),以及基于联合概率框架建模的 P(r, o)。本文使用后者。

模型与方法

文章对数据集进行统计后发现根据目标物体和其他物体的差异性,对它的指示表达可以涉及不同类型的信息。例如,如果目标物体为十个黑球中的一个红球,那么对它的指示表达可以很简单得说「红球」。如果相同的红球被放在其他三个红球中,那么基于位置的信息可能变得更加重要,例如「右边的红球」。或者,如果在场景中有 100 个红球,那么球与其他物体之间的关系可能是最明显的信息,例如「猫旁边的红球」。因此,将指示语句的理解模型进行模块化分析便显得非常自然直观。本文利用主语,位置和关系模块来解析输入的指示语句,然后触发不同的视觉模块进行处理。

本文提出的模块化注意力模型 (MAttNet) 如图 1 所示。模型首先将输入的指示表达分解成三个短语表征,作为三个视觉模块的输入,这些视觉模块用不同的注意力模型分别计算与其对应的短语的匹配分数。最后,三个模块的匹配分数的加权总和成为整体匹配得分。整个模型可以无缝链接 Mask R-CNN 框架,因而可以做目标定位和目标分割两个任务。

具体来分析模型的细节。首先是自然语言的分解模块,作者提出的 Language Attention Network(语言注意力模型)对输入的指示表达进行主语,位置和关系的三个模块的拆解。每个拆解后的成分会有两个输出,其一是该模块的词向量表征,其二是该模块占整句句子的权重。然后是三个视觉模块,给定某个备选物体 (candidate object),我们计算它与三个词向量表征的匹配分数。其中,主语的视觉模块抽取物体的 R-CNN 特征,并使用该模块内部的软注意力模型抽取与词向量相关的区域,计算匹配分数;位置的视觉模块抽取物体的位置特征,将其映射到高维空间后与位置词向量进行匹配;关系的视觉模块抽取其周边其他物体的特征,使用多示例学习 (Multiple Instance Learning) 选取与关系词向量最相关的周边物体,计算得分。最后,三个匹配得分会和上述的三个权重进行内积,得到最终匹配得分。

图 1:模块化注意网络 (MAttNet)

实验结果

实验中,首先为了和前文进行公平比较,使用了 VGG16 特征,在目标定位上超过前文~2%。配合上 Mask R-CNN 的特征后,优势扩展为~7%。在目标分割上,基本达到前文最佳精度的两倍。此外,模型具有很好的解释性,作者展示了三个模块各自注意到的相关单词和视觉区域。如图 2 所示。

结束语

指示表达的应用很广,人与人的对话系统和人机交互系统都经常会涉及对图片或场景里的某个目标物体进行自然语言的描述。从作者提供的 demo 来看,方向性的指示表达和对「人」这一类的指示表达,理解得都还比较准确;但对其他物体的指示理解还有进一步的提升空间。作者在提供的代码的最后写了一些 Notes,可以作为后续工作的思考方向。

图 2:MAttNet 在 RefCOCOg 上的结果:第一列为原图,第二列为输入的指示表达与其分解结果,第三列为主语模块的注意区域;第四列为主语模块的 attribute 输出;第五列为目标定位(蓝筐);第六列为目标分割。

理论
2
返回顶部