摘要:航天测发任务精度要求高、任务周期长,且长期暴露在阳光直射下。为了提高测发任务的成功率,在虚拟工作环境中进行无接触式动作标定与较正是一种高效的方式。针对航天工作人员动作的实时检测与追踪问题,提出了一种关键帧优化的动作识别算法。依据深度图像中的骨骼数据,提取骨骼特征,并使用特征阈值提取关键帧。将关键帧的特征数据输入双向长短期记忆神经网络(Bi-directional Long Short-Term Memory),优化整体动作识别的精确度。数据驱动的骨骼识别与动作追踪,能有效识别航天工作人员的动作,辅助其更高效、安全地完成测发任务。
本文源自任彬; 汪小雨, 系统仿真学报 发表时间:2021-06-30
关键词:航天测发任务;骨骼识别;关键帧;双向长短期记忆神经网络;动作追踪
引言
航天测发任务时间长、风险高、光照强度变化剧烈,且需要极高的作业精度。所以,对航天员的动作进行精确识别并加以标定成为了关键任务。 Kinect 是微软推出的一款 Xbox360 主机的体感外设,代表着动力学(Kinetics)与连接(connection)的组合,常用于三维重建和人机交互等应用中。作为一种使用红外摄像头的光学感知设备,Kinect 不受光照强度的影响,不需随身携带等优点[1-4],使其完全能够胜任检测航天工作人员动作的任务。 Kinect 的虚实交互手段能够非常直观地为航天工作人员展现一个虚拟工作环境[5-7],为精确判断真实环境及人员操作提供依据。在对航天测发任务的判定中,Kinect 需获取航天工作人员信息、标定航天工作人员位置,最终实现航天工作人员动作的检测与识别。
通过在三维空间中测量人体运动的动作数据,可将 Kinect 采集数据输入计算机处理,构建人体骨骼的运动模型,实现人体骨骼、动作、人脸、语音等识别[8-13]。Alexiadis Dimitrios S 等[14]将 Kinect 应用于评估人体动作,通过对比测量关节信息和标准动作关节信息判断动作的精确度。尚华强[15]通过 Kinect 获取人体骨骼信息,运用骨骼信息驱动虚拟人物,完成人体运动仿真。敖琳[16]使用 Kinect 确立静态姿势骨骼数据库,根据数据库提取人体各关节的三维骨骼信息,用于识别人体动作。国内外研究者将数据挖掘与深度学习算法引入 Kinect 应用,提升其图像的识别率。Zhu等[19]通过引入深度CNN 网络训练长方体模型,证明动作识别的有效性。 Donahue J 等[20]使用融合长时递归层和卷积层的长时 递 归 卷 积 网 络 ( Long-term recurrent convolutional,LRCN)实现人体动作识别。
本文针对航天测发任务中的动作安全性等问题,提出了关键帧优化的 Bi-LSTM 动作识别算法。依据航天工作人员相关动作的人体骨骼数据,获取骨骼特征。通过引入特征阈值,提取连贯动作中的关键帧,优化动作识别的效率与准确度。双向长短期 记 忆 人 工 神 经 网 络 (Bi-directional Long Short-Term Memory, Bi-LSTM) [21-23]可实现动作识别与优化,通过 Kinect 数据驱动 Unity3D 完成动作的模拟。此方法能够实时观测、模拟与评估特定环境中航天工作人员的特定动作。
1 骨骼识别与特征提取
1.1 人体骨骼特征提取
依据航天工作人员深度图像,实现骨骼识别,表示为: , I I I I u v f I x d x d x d x d x (1) 其中,x 为像素值,dI(x)为像素值处于图像中的深度值,参数 θ=(u,v),u 与 v 是一对偏移向量, 1/dI(x)是偏移正规化,用于人体尺寸缩放处理[24]。
选取 Kinect 获取的航天工作人员骨骼的 25 个关节点中对人体动作时影响较大的 8 个关节点:左肘、右肘、左腕、右腕、左膝、右膝、左脚踝、右脚踝。计算这 8 个关节点与脊柱底部(1)的距离组成特征。定义为:d1,i(i=6,7,10,11,14,15,18,19)。通过引入脊柱长度 d1,21,消除因身高不同而造成的特征差异,表示为:
身高特征 H、实时观测时头顶距离脚底的实时高度 h 也为人体重要评估数据,分别表示为: 1 4 1 3 1 5 1 7 1 9 1 + + 2 H d d d , , , (3) 4 , (1 9 ,1 5 ) m id h d (4) 其中,mid(19,15)为 19、15 的空间坐标中点。通过公式(3)、(4),消除特征差异,生成 τH、τh。
依据不同动作,提取对应角度特征,如图 2 所示。
根据右肩(图 2 中点 9)、右肘(图 2 中点 10)、右腕(图 2 中点 11)的坐标,可求出其关节向量: 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 n x y z x y z , , , , (5) 9 1 0 1 0 1 0 1 0 9 9 9 n x y z x y z , , , , (6) 依据关节向量,求得其角度特征: 9 1 1 1 0 1 0 9 1 1 1 0 1 0 a rc c o s R H n n n n (7)
依据骨骼数据共提取 9 个长度特征和8 个角度特征,如图 3 所示。
9 个长度特征和 8 个角度特征,加上身高特征 τH。共 10 个长度特征与 8 个角度特征。定义为: 1 , 6 1 ,1 9 , , , , , , , H h L B R X F (8)
1.2 人体动作的关键帧
关键帧是一个人在一个动作中体现肢体变化的帧。一个动作中,动作骨骼数据过于密集,前后帧之间变化过小,不利于动作识别。因此,通过提取关键帧的方法筛选关键数据,用于提升动作识别的准确度与效率。
第一步,将第一帧作为第一个关键帧索引值;第二步,重置角度误差累计值 Sum;第三步,计算前后两帧 αj=[αLBj,…,αRXj]、 αk=[αLBk,…,αRXk]的角度误差值 St,将 St累计至 Sum,表示为: 2 2 t L B k L B j R X k R X j S (9) t S u m S u m S (10)
第四步,逐帧累计至第 n 帧时,若 Sum 超过特征阈值 sum_s,则 n 为下一个关键帧的索引值,并将第 n+1 帧设为下一关键帧初始,返回第二步。
最后,依据索引位置提取出动作识别所需关键帧;使用关键帧的特征 F 实现动作识别。
2 Bi-LSTM 算法中的动作识别
人体动作的骨骼数据包含明显的时序特征。依据提取的关键帧骨骼数据的特征,搭建 Bi-LSTM 分类器,用于分类识别动作。
神经网络输入为某个动作的骨骼特征数据。每个动作的数据包含 7 到100 帧不等的关键帧对应数据。每个关键帧数据为对应帧的 18 维骨骼数据 F。输入网络之前需要删除无效数据。
将处理后数据输入 Bi-LSTM 分类器训练,用于动作识别,如图 4 所示。
本文采用基于时间序列的神经网络,并使用实际 Kinect 采集的数据,验证训练网络的准确性。
该数据集包含 60 种人类动作(40 类日常动作、 9 类健康动作、11 类双人动作)与 56880 个视频样本,比如:站立、坐下、挥手、跳跃等。该数据集通过三个角度采集志愿者的深度信息、骨骼信息等。本文采用数据集中的 3D 骨骼(身体节点,如图 1 所示)数据验证动作的准确性。
航天测发任务中,航天工作人员动作较为繁琐,且经常需要样本采集等工作。该动作中,工作人员从操控工位出发到获取采集样本的过程共经过站立→指向(样本)→单手挥手(挥手示意)→ 拾取(样本)→双手握持(样本)→双手并举(样本)→行走→坐下等过程。在该动作的整个流程中,由于缺失重力,行走等动作不具有代表性。选取其中具有代表性的 7 个动作进行识别,包括:站立、坐下、拾取、指向、单手挥手、双手握持、双手并举。
选取 NTU-RGB+D 数据集中 7 个航天测发任务相关动作数据,提取骨骼特征并识别关键帧,作为训练集输入 Bi-LSTM 模型。7 个动作共 2341 个时间段数据。训练模型中,设置学习率为 0.0001,隐藏单元为 100,以小批量 20 训练 100 次。
使用 Kinect 采集的实时数据作为测试集验证训练模型。
使用 Kinect 采集图像,用于获取人体骨骼数据,如图 6 所示。分别采集 5 个人的站立、坐下、拾取、指向、单手挥手、双手并举、双手握持等 7 个动作,标记为动作 1~7。每个动作均采集 100 组数据。
采集获取 7 种动作骨骼,如图 6 所示。通过对 700 组数据进行特征与关键帧提取,获得关键帧特征数据,用于验证算法模型对动作的识别准确率。
Kinect 采样频率为 90ms/次。设置阈值 sum_s 在 0.1~0.25 之间以 0.01 为梯度提取关键帧,每段时间的关键帧个数为 7 至 100 帧不等,如表 3 所示。
由表 3,分析可得如下结论:
(1)sum_s = 0,通过原始数据训练 Bi-LSTM 模型。由于相邻帧数据变化量过小,数据可辨别性缺失,在此学习率与训练批量下动作识别率为 0。应降低学习率或降低训练批量,用于提高训练次数,完成识别。但这会大幅度增加识别时间,与真实航天测发任务要求相违背;
(2)动作 1、动作 2、动作 3、动作 7 识别率稳定在 0.9 左右,识别率高,识别相对容易;
(3)sum_s 低于 0.13 或高于 0.16 时,动作 4 识别率过低,不适合。故阈值在 0.13~0.16 之间识别率达到最佳。
取 sum_s = 0.14 。 对相 同 训 练 参 数 下 的 LSTM[23]、双层 LSTM[25]、GRU[26]、双层 GRU[27]、 LRCN[20]训练模型进行对比验证。
表 4、表 5 分别为 6 种模型的动作识别率与综合识别率。图 7、图 8、图 9 分别为 LSTM、双层 LSTM、Bi-LSTM 三种模型的动作识别混淆矩阵。
分析得出如下结论:
(1)LRCN 是将 CNN 融入 LSTM,需对数据进行时间同步化处理:依据最短时间步长,对整体数据帧率进行分割。分割后,数据丢失率过高,算法不收敛;
(2)对于动作 1,识别率 Bi-LSTM > 双层 LSTM > LSTM > GRU > 双层 GRU;
(3)对于动作 2、动作 3,5 种网络模型的识别率均较高;
(4)对于动作 4,识别率 Bi-LSTM > 双层 LSTM > LSTM > 双层 GRU > GRU。依据图 7~图 9,LSTM 与双层 LSTM 较容易将动作 4 识别为动作 5 或动作 6,而在 Bi-LSTM 中,识别错误率明显减少;
(5)对于动作 5、动作 6,5 种模型识别率接近,在 0.65~0.81 之间;
(6)对于动作 7,识别率 Bi-LSTM > 双层 GRU ≈ LSTM > GRU ≈ 双层 LSTM。Bi-LSTM 识别率显著提高;
(7)综合识别率:Bi-LSTM > 双层 LSTM ≈ LSTM > GRU > 双层 GRU > LRCN。其中,LRCN 算法不适合数据驱动的动作识别,Bi-LSTM 在识别动作中达到最优。
针对航天工作人员,Kinect 数据驱动动作识别的算法中,Bi-LSTM 的综合识别率最高。7 种动作中,站立、坐下、拾取动作的识别率较高,在 0.9~1 之间;单手挥手、双手并举动作的识别率在 0.7~0.8 之间;对于指向与双手握持动作,Bi-LSTM 算法的识别率明显优于其他算法,且在关键帧提取特征阈值 sum_s = 0.13~0.16 时收敛。
3 数据驱动的 Kinect 动作追踪
移动 Kinect 设备,使人体在其视野中位于最佳位置,以 Kinect 数据驱动 Unity3D 人体模型实现动作追踪。通过在 Unity 中建立一个虚拟人物模型与控制器脚本,将 Kinect 实时测得的人体数据与 Unity3D 中的环境变量绑定,实现虚拟人物模型对于实验者动作的实时模拟。
Kinect 的视野呈锥形,对人体的识别有一个最佳识别区(距离 Kinect 0.8m 到 4m 的距离,横向左右各为 2.5m,高度上下各 2m)。如图 10 所示,调节 Kinect 离地高度为 0.9m,距离人体距离为 2.4m,使人体刚好位于视野正中央。
图 11(a)为普通相机采集的动作数据,通过 Kinect 获取图 11(b)所示深度数据与图 11(c)所示骨骼数据。依据骨骼数据与算法,识别动作为坐下;最终利用数据在 Unity3D 中实现动作模拟,如图 11(d)所示。
通过 Kinect 数据驱动 Unity3D 人体模型,不仅能对航天工作人员的当前行为进行判断,而且能对特殊环境中工作人员的动作进行模拟规划,避免危险事故的发生。
4 结论
针对航天测发任务中的动作安全性等问题,提出了关键帧优化的 Bi-LSTM 动作识别算法。并借由 Unity3D 平台,实现了对动作的模拟。具体包括:
(1)确定航天测发任务,通过人体骨骼数据特征,实现关键帧提取;
(2)针对原始数据辨别性差、训练时间长的问题,使用关键帧数据实现对航天工作人员的动作识别;
(3)针对人体动作识别精度不高的问题,使用 Bi-LSTM 神经网络分类器,提高航天工作人员常规 7 个动作的识别精确度。
在航天测发任务中,需要及时判断工作人员的动作是否安全、是否符合标准,也需要在特殊环境中对工作人员进行动作规划,辅助其更高效、安全地完成相关作业。本文提出的动作识别与追踪方法,为检测航天工作人员动作、标定航天工作人员位置、获取航天工作人员信息,提供了一种解决思路。