电影短片《Changing Batteries》讲了这样一个故事:独居的老奶奶收到儿子寄来的一个机器人,这机器人善于察言观色,很快就跟老奶奶“心有灵犀”,不仅能在老奶奶口渴时为她端水、在老奶奶扫地时接过老奶奶的扫把,做力所能及的家务活,如果老奶奶在椅子上看电视睡着了,机器人还为她轻轻盖上踏足。有了它,老奶奶又重新感受到久违的快乐,过上了更轻松的生活[1]……咳咳,催泪的故事讲完了,接下来我们先说说这机器人的察言观色技能是怎么实现的。 在人工智能研究领域,这一技能叫人体行为识别,是智能监控、人机交互、机器人等诸多应用的一项基础技术。以电影提到的老人智能看护场景为例,j2直播,智能系统通过实时检测和分析老人的行动,判断老人是否正常吃饭、服药、是否保持最低的运动量、是否有异常行动出现(例如摔倒), 从而及时给予提醒,确保老人的生活质量不会由于独自居住而有所降低。第二个例子是人机交互系统,通过对人的行为进行识别,猜测用户的“心思”,预测用户的意图,及时给予准确的响应。第三个例子是医院的康复训练,通过对动作行为的规范程度做出识别,评估恢复程度以提供更好的康复指导等。 俗话说“排骨好吃,骨头难啃”,行为识别是一项具有挑战性的任务,受光照条件各异、视角多样性、背景复杂、类内变化大等诸多因素的影响。对行为识别的研究可以追溯到1973年,当时Johansson通过实验观察发现,人体的运动可以通过一些主要关节点的移动来描述,因此,只要10-12个关键节点的组合与追踪便能形成对诸多行为例如跳舞、走路、跑步等的刻画,做到通过人体关键节点的运动来识别行为[2]。正因为如此,在Kinect的游戏中,系统根据深度图估计出的人体骨架(Skeleton,由人体的一些关节点的位置信息组成),对人的姿态动作进行判断,促成人机交互的实现。另一个重要分支则是基于RGB视频做行为动作识别。与RGB信息相比,骨架信息具有特征明确简单、不易受外观因素影响的优点。我们在这里主要探讨基于骨架的行为识别及检测。 人体骨架怎么获得呢?主要有两个途径:通过RGB图像进行关节点估计(Pose Estimation)获得[3][4],或是通过深度摄像机直接获得(例如Kinect)。每一时刻(帧)骨架对应人体的K个关节点所在的坐标位置信息,一个时间序列由若干帧组成。行为识别就是对时域预先分割好的序列判定其所属行为动作的类型,即“读懂行为”。但在现实应用中更容易遇到的情况是序列尚未在时域分割(Untrimmed),因此需要同时对行为动作进行时域定位(分割)和类型判定,这类任务一般称为行为检测。 基于骨架的行为识别技术,其关键在于两个方面:一方面是如何设计鲁棒和有强判别性的特征,另一方面是如何利用时域相关性来对行为动作的动态变化进行建模。 我们采用基于LSTM (Long-Short Term Memory)的循环神经网络(RNN)来搭建基础框架,用于学习有效的特征并且对时域的动态过程建模,实现端到端(End-to-End)的行为识别及检测。关于LSTM的详细介绍可参考[5]。我们的工作主要从以下三个方面进行探讨和研究: 1.如何利用空间注意力(Spatial Attention)和时间注意力(Temporal Attention)来实现高性能行为动作识别 [8]? 2.如何利用人类行为动作具有的共现性(Co-occurrence)来提升行为识别的性能[7]? 3.如何利用RNN网络对未分割序列进行行为检测(行为动作的起止点的定位和行为动作类型的判定)[9]? 1. 空时注意力模型(Attention)之于行为识别
图1.1:“挥拳”行为动作序列示例。行为动作要经历不同的阶段(比如靠近、高潮、结束),涉及到不同的具有判别力的关节点子集合(如红色圆圈所示)。这个例子中,人体骨架由15个关节点的坐标位置表示。 注意力模型(Attention Model)在过去这两年里成了机器学习界的“网红”,其想法就是模拟人类对事物的认知,将更多的注意力放在信息量更大的部分。我们也将注意力模型引入了行为识别的任务,下面就来看一下注意力模型是如何在行为识别中大显身手的。 (责任编辑:本港台直播) |