【论文笔记】CVPR2018 Detecting and Recognizing Human-Object Interactions
Paper:https://arxiv.org/abs/1704.07333
作者:Georgia Gkioxari, Ross Girshick, Piotr Dollár, Kaiming He。
从题目中看出这篇文章主要是研究人与物的互动。根据统计,CVPR2018中分析图像中的人类的有100多篇,说明人们开始关注对图像中主体和关系的理解(这也是Graph Network火的原因)。
简述
这篇文章的目标是检测<人,动作,物>的三元组,用以表征人与物之间的交互关系。
在一张图片中,可能有多个物体有可能和检测到的单个人有交互(图a),本文的方法从检测到的人的bbox来估计和它相关的目标物体是哪个(图b),以及检测一个<人,动作,物>的三元组(图c),另外单个人可能同时做多个动作,例如stand(图d)和cut knife(图c),并且一个动作可能也可能不和物体有交互。
所以文章主要需要解决的问题就是:
- 在一张图的多个物体中,如何找到和人存在交互关系的那个特定的物体
- 如何根据人 / 人和物来预测动作
方法
整个网络主要包括3个部分:(a) object detection branch, (b) human-centric branch, (c) interaction branch。
(a) object detection branch
这个branch就是标准的Faster RCNN的结构。首先使用Region Proposal Network (RPN)来生成object proposals,然后对于每一个proposal box b,我们用RoiAlign来提取特征,然后进行object classification和bbox regression, 得到最终的box,以及每个box对应的类别score。要注意的是通过RoiAlign的部分只在推理阶段用了,训练的时候所有branch是直接用的RPN产生的proposal boxes。
(b) human-centric branch
这个branch的任务之一是进行action classification。它的思路其实和object classification是一样的,在所有bbox中选出human的bbox ()进入这个branch,然后利用RoiAlign从提取特征,再预测每个action类别的score。另外,由于一个人可以同时做多个action(比如sit和drink),即多label,因此我们的输出层是每个action的二值sigmoid分类器,训练目标是最小化gt action类别和预测的action score之间的交叉熵loss。
注意这里得到的action的预测结果相当于是只和人有关,和物体无关,我们说过,一个action可能也可能不和物体有交互,所以action的预测也有可能要包含物体的作用。那首先就是要找到交互物体到底是哪个了。
所以human-centric branch的任务之二是预测交互物体的位置,首先依赖于人的位置,从提取特征,预测目标物体可能位置的分布。以高斯函数进行建模,其中均值是基于action和human预测得到的。具体地,表示均值,它是一个4D的向量,表示已知action和human情况下object的平均位置,写成方程式如下:
这样我们就可以使用上式来计算一个检测到的object box和预测的目标物体位置的相似性了。上式中的是将object box的位置编码成和human box的位置相关的4D坐标:
结合预测的目标物体位置和实际检测到的物体位置,就可以定位到和人交互的那个物体的位置了。
(c) interaction branch
human-centric branch已经给出了如何直接通过人来预测action的方法,那么如何利用人和物体一起来预测action呢?具体地,首先我们已经得到了,然后我们也知道了交互的具体是哪个object,通过这个object的box()我们提取特征然后也计算一个score,将两个score相加再sigmoid,得到最后的一个score——。和之前一样,我们的输出层是每个action的二值sigmoid分类器,训练目标是最小化gt action类别和预测的action score之间的交叉熵loss。
实验
实验是在V-COCO (Verbs in COCO)和HICO-DET两个数据集上进行的,具体见原文,这里不介绍了。(我才不会告诉你是因为博主没仔细看呢。。。)