文章:https://arxiv.org/abs/2004.00945
代码:https://github.com/DirtyHarryLYL/HAKE-Action
官网:home
目录
0 思路和贡献
本文提出了一种新的姿态估计思路
核心思路:首先推理human part states(即PaSta,形式如<hand,hold,something>),再用part-level的语义去推理动作。首先用一个叫Activity2Vec的模型去提取PaSta特征,再用一个基于PaSta的方法去推理activity(个人理解:提取人动作分为原子级别如手,脚的状态特征,然后通过所有的原子级别状态,推理出人体动作,即单词->句子的方式,本文中的“单词库”就是PaStaNet数据集)
一句话总结:提出了一种基于知识驱动(识别人体不同部分以及每个部分的状态,并推理出行为信息)的图像级行为理解方法。
主要贡献:
1.构建了PaStaNet数据集,这是第一个带有细粒度PaSta标注的大规模活动知识库
2.提出了一种新的提取零件级活动表示的方法Activity2V ec和一种基于语义的推理方法
1 要解决什么问题
现有的基于图像的活动理解方法主要采用直接映射,即从图像到活动概念的映射,做法通常是基于实例级别,对关键点的定位或者外观来预测人体动作,这种粗粒度(个人理解:比如人体的拉与推手上的动作是很相似的,光靠关节点位置和外观并不能有效识识别到底是推还是拉,于是对动作的识别始终停留在跑,跳等比较粗糙的动作上)的特征提取方法已经到了瓶颈。此外,之前的模型在不同的数据集上性能也会有所不同(可能不同数据集上的同一运动类别的特征不同,导致不能有效地识别)
目前基于图像的行为识别方法都是 adopt direct mapping,
基于实例级别的特征或知识,
这种方法目前已经碰到瓶颈了
下图左图就是之前方法实现Human Object Interaction(后文简称HOI)的基本思路。
2 使用的方法
主要方法就是知识驱动的行为理解
整体思路就是,先检测人的各个部分以及对应的状态,再通过这些状态识别行为类别
2.1 PaStaNet数据集
下文先开始介绍数据集构建的过程:
1. PaSta Definition:即问题抽象。
- 将人划分为10个部分: head, two upper arms, two hands, hip, two thighs, two feet。头、手臂x2、手x2、躯干(hip)、腿x2、脚x2。
- 在收集并研究了200000张图片后,发现人体每个部分的状态(state)的数量都是有限的(详见附录)。
2. Data Collection:收集数据,通过众包以及现有数据集获取,最终选择了20万张。
3. Activity Labeling:标注行为。行为类别主要是人类日常行为以及一些常见的HOI行为,最终选择了11.8万张图片以及 156 类HOI标签,具体类别看附录。
4. Body Part Box:先进行姿态估计,再通过姿态结果获取human parts。
- 这部分手动调整过,提高精度。
- 这部分有一些细节,关于关键点的一些处理(?)。
5. PaSta Annotation:标注body part states,即人体每一部分的状态。现通过众包标注,大概有22万的标注结果。大概过程如下
1)根据前文的156类行为以及WordNet,选择200个动词,如手部state包括hold pick,头部state包括eat/talk to。
2)寻找对迁移学习帮助最大的人体状态。找了150人来标注1万张图片的详细PaSta。
3)根据标注结果,通过NPMI方法(?)来计算行为以及PaSta的co-occurrence。选择76个NPMI得分高的PaSta。
4)通过上面1万张图片的标注结果作为引子,自动生成其他图片的 PaSta 标签,让其他210个标注者对自动生成的结果进行改进。
5)由于每个人同时可能有多个动作,所以标注10个PaSta(?)。
6)为了确保质量,每张图片标注两次,以及通过自动/手动方式质检。
最终,获得11.8万图片,28.5万人物bbox,25万物体bbox,72.4万行为标签,7百万PaSta标签。
2.2 模型
- 首先定义两种行为特征表示范式(问题抽象方式,即行为通过哪些特征来表示)
- Conventional Paradigm:即 实例级别 的特征表示,行为得分通过图片、人物bbox、与人物交互的物体bbox三部分表示。
- PaStaNet Paradigm:这种范式包括两部分
- 首先,PaSta的特征通过图像、人物每个部分的bbox、交互物体来表示。
- 其次,是构建PaSta-based Reasoning方法,输入PaSta以及其他特征,输出行为。
- 人体每一部分的行为得分通过上一部提取的PaSta特征以及交互物体特征。
- 如果没有交互的物体,就将整张图片的ROI结果最为物体特征。
- 如果有多个物体,那就为每个物体构建一个 PaSta 特征以及物体特征的pair。
- 从模型角度看,可以将上面的思路分解为以下几个部分:
- 以图片作为输入,获取human parts。这部分工作是卢老师组以前的一篇论文
- 以图片以及human parts作为输入,获取 human parts states。
- 以图片, human parts以及对应的states作为输入,获取行为类别。
- Part State Recognition
- 问题描述:已知图像、Human Part box,获取。
- 需要先计算一个alpha,用于表示某个part的特征对于结果的关联程度,取值0-1。
- 如何计算?以 part feature 以及 object feature 作为输入,通过一个 part attention predictor 计算得到。
- GT如何获取?如果human part与人的action有联系,那label就是1,没联系就是0。
- 这一步要获取一个对于alpha的分类结果损失函数
- 识别PaSta
- 首先明确,这是一个多分类任务,即一个human part可能对应多个 states
- PaSta的输入是人体特征以及物体特征,将两个特征拼接+maxpooling+fc,得到预测结果。
- 人体特征是要乘以上面一步计算出来的系数 alpha。
- Activity2Vec
- 这部分的任务是将前面的这些 PaSta 信息转换为特征,以便后续的应用(比如行为识别/HOI)。
- 这部分内容就包括视觉特征以及语言特征。
- 视觉特征,就是使用前面 PaSta Recognition 最后一层FC。
- 语言特征,引入了一个Bert(?)。
- PaSta-based Activity Reasoning
- 之前获得了part-lebel 的特征,那要怎么应用到最终任务中呢?
- 构建图网络(hierarchical activity graph)
- 图网络推理的实现方式尝试了很多,下面图中有介绍。
- 总体方法就是使用 instance-lebel 特征以及 part-lebel 特征进行后融合。
- 之前获得了part-lebel 的特征,那要怎么应用到最终任务中呢?
3 结语
(1)本文提出了一种新思路 从图片-human parts-human parts states-行为识别,是一种高效的新思路。
(2)本文是可作为基本研究,可作为其他研究的前置研究。