Classification by Attention: Scene Graph Classification with Prior Knowledge
Sahand Sharifzadeh, Sina Moayed Baharlou, Volker Tresp
AAAI Conference on Artificia
cs.CV, cs.LG
2020-11-20
把场景图分类做成对类原型的注意力,并迭代注入常识。1%标注加自监督时,谓词预测R@100达65.68,几乎贴上全量的65.7。
场景图分类要把图里的物体和关系打成 (头实体, 谓词, 尾实体)。碗被挡住、人背对镜头、卡车轮子几乎看不见,外观一变,分类就垮。
当时两条路。一条是在图上对所有物体的视觉特征做消息传递,邻居外观组合爆炸,模型很难学到稳定共现。另一条单独训先验:共现统计或知识图谱嵌入,再在概率空间和视觉预测相乘。视觉里马和驴很像,三元组库可能只有 (Woman, rides, Horse),先验吃不到这份相似性。感知和常识各训各的,也没法用当前画面在「水果在碗里」和「水果在树上」之间做选择。
LMU Munich、Sapienza 和 Siemens 把感知和先验拧进同一套参数。每个物体类、每个谓词类一个可学习向量,叫 schema,同时编码外观和它在关系里怎么出现。
分类不再走全连接,改成注意力:Graph Transformer 上下文化之后的节点特征,去点积全部 schema,softmax 系数就是分类分数。注意力的加权和作为 schema 消息,加回原始图像特征。上一轮图卷积输出不参与这次融合,避免原图信号被冲掉。然后同一套 Graph Transformer 再传消息、再分类。这一圈叫 assimilation。训练做 4 轮,测试可跑到 8 轮;scheduled sampling 最多把 10% 的假阴性换成真标签,避免网络死记某一轮的错误率。
Graph Transformer 是 Graph Network Block 的变体,4 层、每层 5 头。物体节点和谓词节点互为邻居:物体连它的谓词,谓词连头尾物体。多任务两头一起训:第一轮只靠图像分类(IC),后续轮条件于上一轮的预测(ICP)。没有图像时把视觉特征置零,用 one-hot 当注意力系数,直接拿三元组微调 ICP。少标注实验里,backbone 先在 ImageNet 预训练,再在整份 Visual Genome 图像上做 BYOL 自监督,最后才用那 1% 或 10% 的框标签微调。
数据是 Visual Genome 常用切分:150 个物体类、50 个谓词,每张图大约 11.5 个物体、6.2 个谓词。全量实验为了和当时论文对齐,用 Faster R-CNN + VGG-16。
无约束设置下 Schemata 均值 Recall 68.7,当时 CCMT 是 68.4,KERN 是 66.4。SGCls R@50/100 为 48.5/52.1,PredCls 为 83.8/90.5。长尾更明显:无约束 mean Recall 36.3,KERN 只有 32.8。有约束均值 53.5,CCMT 53.3,几乎持平。
真能看的是少标注设定,backbone 换成 ResNet-50,指标是 R@100,五个随机切分的均值:
| 设置 | 标注比例 | SGCls | PredCls | 物体分类 |
| 自监督 + IC | 1% | 12.12 | 48.10 | 40.75 |
| 自监督 + IC + ICP | 1% | 15.36 | 65.68 | 42.09 |
| 自监督 + IC + ICP | 100% | 37.1 | 65.7 | 68.4 |
相对自监督 + IC,1% 标注时 SGCls 相对提升约 27%,PredCls 约 36%,物体分类约 3%。PredCls 的 65.68 已经贴上全量的 65.7。纯 schema、零图像的链接预测(Schemata-PKG)无约束 PredCls R@50/100 是 48.9/54.2,说明类原型里确实装进了常识图。
全量 Recall 只比 CCMT 高 0.3,拿这篇当 2020 年的刷分 SOTA 没有意义。值得看的是归纳偏置:分类层权重本身就是能做链接预测的嵌入,先验走嵌入空间,不是事后乘概率。谓词高度依赖共现,外部三元组在这个任务上几乎能替代图像标注。Backbone 已经过时,但「分类等于对原型的注意力,再把原型当消息注回去」和后来的类原型网络、prompt 是同一类结构想法。
正文没有 Limitations 一节。全量 SGCls 相对 CCMT 基本持平,无约束 R@50 是 48.5 对 48.6。SGDet 声称提升和 SGCls 类似,数字放在代码仓库,论文里没有。少标注实验的「外部三元组」其实是同一份 Visual Genome 里被丢掉的标签,不是 ConceptNet 那种真外来知识库,这个口径被写大了。物体分类和 SGCls 在 1% 下仍远低于全量,15.36 对 37.1。检测框是给定的。Graph Transformer 理论上也能学到先验,多出来的同化步骤有多少是显式偏置、有多少只是多算了几轮消息传递,消融没有把「多轮图卷积但不注入 schema」单列出来。