文章目录
来源:Unbiased Scene Graph Generation from Biased Training
注:下文出现的SGG是场景图生成的意思
1. 摘要
如今的场景图生成离应用还有很远,主要是因为存在训练中的偏差,如关系表达模糊,举个例子:人在沙滩上行走/坐在沙滩上/躺在沙滩上
等复杂关系简单归结为人在沙滩上
。
传统的消除偏差的方法无法区分好的和坏的偏差,如:
- 外部良好的背景知识:
人读书
而不是人吃书
; - 坏的长尾偏差:
在...后面
和在...前面
统一被归类为在...旁边
。
作者因此提出了一个新的模型,模型步骤如下:
- 构建一个因果图,并用该图进行传统的有偏训练;
- 从训练后的因果图中提取反事实因果关系,以推断出应该被删除的不良偏差(使用 总直接影响(Total Direct Effect) 作为最终预测分数);
该模型可以应用到不同的场景图生成模型以进行无偏预测。
2. 介绍
作者在这里解释了当今场景图生成所遇到的一个关键问题:
- 下图(c)中显示:对于所生成的关系
near, on, has
,给我们提供信息量不够,我们不知道具体表示什么意思; - 下图(b)中显示:我们的训练数据本身就有偏差。例子:如果一个模型在训练期间预测
on
的次数是预测stand on
的1000倍以上,那么在测试期间,前者更有可能胜过后者。
因此我们需要将细粒度关系和模糊的关系区分开来。
有偏见的注释也不是一无是处:大多数有偏见的注释可以帮助模型学习良好的上下文先验知识,可以过滤掉不必要的信息。不必要的信息如:苹果在公园停车
以及苹果戴着帽子
。
作者认为对于消除偏差主要是要让机器识别“主要影响”和“次要影响”,借此提出了 “反事实因果关系”。
- 先对原始图片特征进行有偏训练,如图(a):预测出来的可能性如右边所示,分数最高是
on
,因此关系为on
。与此同时还有其他的预测,这些预测可能有错,但是为我们过滤掉大量不合理的选项。 - 然后生成该图片的反事实场景——也就是把图片特征中出现的物体都覆盖一层掩膜,如图(b)。然后和原始场景进行对比,从而得出最后的预测(具体如下文)。
下图(a)上面部分是作者所提出的事实因果图(左)与反事实因果图(右)。作者称这一技术为总直接影响 Total Direct Effect (TDE)
。
以因果图中的Y
为例,可以看到有三个箭头指向它,分别是X->Y I->Y Z->Y
,表示Y
是由X Y Z
共同引起的组合效应。作者提到X
代表对象视觉特征,Z
代表对象所属的类别,I
表示输入的图片。褪色(虚线白色箭头)表示消失的X
不再是由I
引起也不再影响Z
。
这里注意到下图(a)下面部分是两个因果图产生的可能性相减。减去的是移除了目标特征的反事实因果图,而这和上面提到的反事实因果关系概念上是一样的。这样一相减就使得最终产生的分数更加偏向于目标特征X
。
下图(b)所示,提议的TDE
显著改进了大多数谓词,改进性能的分布不再是长尾的。
作者提出了一个新的SGG检测工具包,用来实现更加全面的评估。除了传统度量方式,还包含针对偏差的度量:
- 平均召回率 mean Recall;
- 一种新的句子到图的检索方法,用于更全面的图级度量。
3. 因果图中的有偏训练模型
作者在这部分简述了有偏训练的一般步骤,所有的符号我们参照下图(b)。
节点I
(输入图片和主干):使用目标检测网络如 Faster-RCNN 提取一系列边界框以及图片对应的特征图;
箭头I->X
(对象特征抽取):使用目标检测网络如 Faster-RCNN 提取 RoIAlign(感兴趣区域)特征和该区域所对应暂时的对象类别,然后生成X
;
输
入
:
边
界
框
+
感
兴
趣
区
域
+
对
象
类
别
⟶
输
出
对
象
特
征
输入:边界框+感兴趣区域+对象类别\longrightarrow输出对象特征
输入:边界框+感兴趣区域+对象类别⟶输出对象特征
节点X
(对象特征):表示成对的对象特征:X = (x1, x2)
;
箭头X->Z
(对象分类):将对象特征解码对象微调后的类别;
节点Z
(对象类别):表示一对对象类别的 one-hot 向量:Z = (z1, z2)
;
箭头X->Y
(SGG 对象特征的输入):成对的对象特征X
被合并为一个连接表示;
箭头Z->Y
(SGG 对象类别的输入):成对的对象类别Z
的 one-hot 向量被转换为一个 n x n 的矩阵,n 表示 one-hot 向量的长度;
箭头I->Y
(SGG 视觉上下文的输入):提取上下文联合区域特征,通俗理解为两个物体的联合边界框;
节点Y
(预测分类):使用融合函数生成从三个分支X Y Z
获取输入的最终谓词分数。
4. 基于因果图的无偏预测
作者先给我我们介绍了一些在因果图中的术语:
- 干预:清除变量的所有传入箭头,并要求变量取某个值。如下图(b),表示
x
不再受u
的影响; - 反事实:如下图(c),即使
x
被干预,z
依然保持原始值,而不因x
改变而改变。
总直接效应表示为:
总
直
接
效
应
=
图
(
a
)
−
图
(
c
)
总直接效应=图(a)-图(c)
总直接效应=图(a)−图(c)
要明确一点,无偏预测是在有偏预测基础上进行的,即让模型“思考”两次。
5. 实验
5.1. 数据集
对于 SGG ,使用 Visual Genome 数据集,该数据集由 108k 个图像组成,包含 75k 个对象类别和 37k 个谓词类别。然而,由于 92% 的谓词不超过10个实例,作者遵循了广泛采用的 VG 分割方法,成为 VG 数据集,其中包含最常见的 150 个对象类别和50个谓词类别。分割后的训练集占原来 70%,测试集占原来 30%。作者从训练集中抽取 5k 验证集进行参数调整。
对于句子到图的检索,选择了 VG 和 MS-COCO 图像描述数据集之间重叠的 41859 个图像,并将其划分为训练集(35859)、测试 1k,测试 5k
。后两个仅包含VG测试集的图像,每个图像至少有5个描述作为查询。
5.2. 评估模型
评估了三个模型:VTransE、MOTIFS 、VTree
评估了两个融合函数:SUM、GATE
5.3. 场景图生成评估
评估分为三个部分:
- 关系检索(RR)
它可以进一步分为三个子任务:
(1)谓词分类(PredCls):图片+真实边界盒+标签 ----> 场景图
(2)场景图分类(SGCls):图片+真实边界盒 ----> 场景图
(3)场景图检测(SGDet):图片 ----> 场景图
传统的Recall@K (R@K)
评估方法被作者弃用,这些方法会过分迎合头部元素,如:on,而忽略尾部元素,如:laying on。为了解决这种问题,作者提出了mean Recall@K (mR@K)
。这种评估方法分开检索每一种谓词的R@K
,然后计算平均值。 - 零样本关系检索(ZSRR)
评估方法成为:Zero-Shot Recall@K
主要是预测没在训练集出现过的主谓宾三元组。这是另一篇论文作者提出来的,也包括三个子任务。 - 句子到场景图检索(S2GR)
这是作者提出的评估方法。用句子到场景图的检索进行评估,这可以用来衡量场景图级别的一致性。举个例子,如果walking/sitting/laying on
由于长尾效应都被预测为on
,那么这些图片在检索的时候就会混淆在一起。
5.4. 实现细节
检测器
- 以
ResNeXt-101-FPN
为主干的Faster R-CNN
为检测器,输入图片是 1k 像素。 - 检测器在 VG 训练集使用 SGD 作为优化器。
- 批量大小为 8,学习率 0.008,在第 30k 和 40k 次迭代中分别递减 10 倍
- 4 个 2080ti
场景图生成
- 批量大小:12(PredCls、SGCls)、8(SGDet)
- 学习率:0.12(PredCls、SGCls)、0.08(SGDet)
- 在验证性能稳定后,学习率将下降10倍
- 对于SGDet,每幅图像采样80个ROI
- 与之前的工作不同,没有假设重叠的主客体对在 SGDet 中有效,这使得 SGG 更一般。