郑丽
(成都理工大学工程技术学院,四川乐山 614007)
人体运动姿态的准确分析与预测可以为运动训练提供有效的数据支撑。通过获取人体运动的相关数据,结合标准数据库数据矫正运动员动作的细节,能够达到提高运动员运动水平的作用。
随着计算机科技的不断进步,人工智能技术逐渐成熟。深度神经网络(DNN)可以自动学习数据特征,从而发现稀疏与分布式的大数据特征[1],但最新卷积技术仍不能直接应用于捕获人体运动数据。为了捕获人体运动数据,卷积滤波器需要覆盖人体关节的整个范围,以便卷积仅在时间方向上发生。文中提出了一个具有瓶颈的全连接网络,该网络可以在给定先前帧的情况下,学会预测未来的移动帧,并训练人类运动的时间编码器[2]。
为取得准确的人体运动数据,文中基于IMU 核心传感器、Arduino 嵌入式开发板为数据采集器,设计了一套人体运动数据采集系统。DMP 是IMU 设备独特的硬件功能,能够从传感器读数计算四元数数据。IMU 直接从辅助传感器获取数据,允许嵌入式处理器处理传感器融合数据,而无需系统应用处理器的干预[3]。
文中基于处理语言开发了MPU6050 IMU 监视程序。通过DMP 将加速度计与陀螺仪获得的原始数据相融合,随后从四元数表示中提取欧拉角信息以计算IMU 的偏航、俯仰、横滚运动[4]。该软件首先从XBee Pro 中获取方向值,再使用人体各个部位的长度和取向值计算IMU 的相对位置[5]。
文中测量人体关节运动状态的核心传感器为两组IMU 传感器[6]。由于来自IMU 的加速度原始数据包含大量未过滤的噪声,且在短时测量中容易因波动而出现显著误差。因此,关节运动数据并非直接来自于对IMU 加速度的积分,文中基于人体关节的形状,开发了基于人体运动分析的IMU 相对运动数据处理算法。
文中使用步进电机保证IMU 数据的准确性。其使用的步进电机NEMA 23 YH57BYGH56-401A 规格如下:步进角为1.8°,控制精度为±5%;额定电流为2.8 A;相电阻为0.9 Ω,控制精度为±10%;相电感为2.5 mH,控制精度为±10%;保持扭矩为1.2 N·m。
为了保持最小的轴径向和轴向游隙,将小于450 g 的转子盘连接到步进电机。在验证IMU 测量的角速度数据时,使用精度相对较高的步进电机进行的实验,更加可控且可靠性高。将IMU 安装在转子盘上进行测试,Arduino Uno R3 用于控制速度以及测试过程中步进器移动的步数。
人体运动分析设备被开发,用于分析人体关节运动,因此,需测试其在测量人体关节运动中的准确性。
将人体运动分析装置戴在肩膀上,两个IMU 分别放在大臂和小臂上。在测试期间,受试者被要求放下手并反复弯曲肘部5 次;然后,将手伸直到平面中的原始位置。在对象移动的同时,使用人体运动分析设备收集运动数据,采用GoPro Hero 3 设备在2D 平面上记录了有效照片分辨率为12 M、像素和帧速率为47 fps 的高分辨率视频;最后,对视频进行后期处理。
使用运动分析软件MaxTRAQ 2D 进行分析,以分析肘部的运动。MaxTRAQ 2D 是基于视频的运动跟踪软件,可用于从标准AVI 视频文件中提取运动学特性。通过手动与自动跟踪,用户可以逐帧查看角度、点之间的距离等。
借助开发的Arduino Uno R3 程序,计算机可以从两个IMU 接收偏航角、俯仰角和侧倾角值,使用获得的值实时模拟IMU 的方向,并设计软件实时显示[7]。在该软件中,长方体用于表示IMU,其中长方体的不同侧面具有不同的颜色,以便用户可以区分方向。表1 显示了与IMU 轴相对应的侧面颜色。
表1 颜色与IMU轴对应关系
该软件在程序中将IMU 表示为两个立方体,并使用人体的肢体结构显示人体关节的运动。左侧的长方体用于模拟第一个IMU 的方向,右侧的长方体用于模拟第二个IMU 的方向。偏航、俯仰和横滚的数值显示在软件的上部,以便准确跟踪IMU 的方向。
为实现以2D 方式显示IMU 与人体关节的运动,对该软件进行了改进,以更准确地表示人体各部位和关节在所有轴上的运动。使用两个IMU 的方向计算IMU 传感器之间的相对运动状况。
第一节中基于嵌入式系统获取准确的速度与角速度等信息,是为了准确识别运动数据的规律。该节建立基于时间编码的模型,以准确识别人体运动模式[8]。文中使用了识别模型的3 个变体:对称编码S-TE、时间尺度编码C-TE 和结构编码H-TE[9]。
选取笛卡尔空间中的Mocap 骨架,即在时间t处的帧由ft=[fx,i,t,fy,i,t,fz,i,t]i=1:Njoints,其中Njoints为关节数目。
为了标准化模型,将关节角度转换为标准化人体模型的笛卡尔坐标。关节位置以坐标系的原点为中心,在保留骨骼全局旋转的同时,忽略平移[10]。
在Δt个时间窗口内可确定连接到矩阵Ft:(t+Δt-1)=[ft,ft+1,…,ft+Δt-1]中的数据集。该数据集由每个时间步长t∈[Δt,(T-Δt-1)]的输入帧窗口F(t-Δt+1):t与输出帧窗口F(t+1):(t+Δt)组成,其中T是采样时间长度。
编码-解码框架用于计算高维输入数据到低维图形上的投影,并基于该投影预测输出数据[11]。给高维输入数据x∈ℝN经自动编码器进行优化,如式(1)所示。
其中,编码器y=g(x)将输入数据映射到低维空间y∈RM,N>M,而解码器x^=f(y)映射回输入空间x^ ∈RN,函数f和g用对称的多层感知器表示[12]。
该系统中使用了一种替代方法,以捕获人体运动数据的时间相关性,而不是人体姿势的静态表示。令x∈RN为时间t的观测值,时间编码器的优化函数如式(2)所示。
式中,编码器y=g(X(t-Δt+1):t)将输入数据映射到低维空间y∈RM,(N×Δt)>M,解码器=f(y)∈RN×Δt用于映射回数据空间[13]。
该应用中,输入和输出矩阵的尺寸为3×Njoints×Δt,编码器将输入数据映射到低维空间y∈RM,(3×Njoints×Δt)>M,解码器映射回数据空间。
文中使用了3 种不同的时间编码器结构:对称编码、时标编码和层次编码,如图1 所示。
图1 编码结构
对称结构如图1(a)所示,遵循自动编码器原则[14]。由于解码器是编码器的镜像版本,因此,可以将解码器视为编码器倒数的近似值,即对称时间编码器(S-TE)。
时间刻度编码如图1(b)所示。由于可以在不同的时间尺度上描述人体运动,因此,可以将该属性明确引入时间编码器[15]。对于给定的窗口大小Δtw,卷积滤波器的大小为3×Njoints×Δtw,其中3 表示笛卡尔空间x、y和z中的3 个维度。输入数据与不同大小的过滤器卷积,这些卷积层的输出通过编码器-解码器的方式使用octree 结构层级联,以便进一步处理。
层次结构编码如图1(c)所示。人体用树状结构图来表示,其中的节点由各个关节组成,分别与人体相应肢体的节点相连。树状结构由L层组成,其中每个层l∈[0,L-1] 由Nl个节点组成,每个父层l∈[1,L-1]连接到其子层k=l-1。第l层中的节点i和第k层中的节点j间链路为ξ{(l,i),(k,j)}。
将这些节点建模为单一前馈节点,底层中的每个节点均从单个关节接收输入[16],即N0=Njoints。随后这些节点由代表肢体的父级连接,若关节i属于肢体j,则ξ{(0,i),(1,j)}=1;否则,ξ{(0,i),(1,j)}=0,直到单个节点代表整个主体为止。单层用作临时编码器的输入,该临时编码器与树形图同时训练。
文中开发了用于Arduino的程序,以从InvenSense MPU 6050 IMU 的DMP 中获取信号,从而通过XBee Pro 无线串行通信将信号发送至计算机。嵌入式DMP 位于IMU 内,可从主机处理器分流运动处理算法的计算。DMP 从加速度计和陀螺仪获取数据,并提供集成的运动融合输出。为了显示、绘制XBee 接收到的数据,基于处理语言开发了一个计算机程序,以使用串行通信端口读取数据[17-18]。
将实验被测人员放置在4 个kinect 摄像头之间,使用定制软件记录被测人员的躯干运动。使用来自校准步骤的变换矩阵,将4 个摄像机的每帧图像拼接在一起,可以获得一组3D 点云信息,通过比较每帧处的点云,可以从中精确推演出被测人员的动作变化。为了推演人员动作变化,使用Geomagic Studio 2012 计算创建的集合宏数据。
综上所述,实验数据的记录与推演步骤如下:加载从定制软件导出的每个点云、构建3D 网格、填充网格、使用网格诊断工具对网格进行平滑处理。为保证对身体运动的准确分析,需对分析范围进行限制,即在初始图像周围放置一个边界框,将volume 计算限制在人体躯干领域内。
实验获取的数据库包含144个不同主体的2 235个记录,这些主体执行各种各样的复杂动作。由于众多记录的采样率为120 Hz,而其他记录则以60 Hz 采样,因此,将以前的试验采样降至60 Hz。为了进行评估,使用预处理过的H3.6M数据集,以100帧,1 660 ms的时间窗来训练当前模型。
图2 中给出了激发H-TE 中间层中多个单元的平均姿势。为了降低噪声,其仅在S 型单元的输出超过0.8 时才考虑姿势和网络活动。
图2 多个单元的平均姿势
文中将整个动作序列进行分类,而不是将单个运动序列进行分类。将3 种模型(S-TE、C-TE 和HTE)的预测能力与最近提出的ERD 分类预测算法进行比较,如表2 所示。
表2 分类误差比较
这些模型均经过了H3.6M 数据集的记录训练。将采样频率降低到25 Hz,并将关节角度转换为指数图。当时间窗口大约涵盖1 660 ms 时,循环网络将初始化为40 帧,相当于1 600 ms。对于每个动作,均使用单独的预训练递归模型。
尽管LSTM3L 在初始预测方面的表现优于文中的某些模型,但时间编码器C-TE 在160 ms 或更长时间的预测中表现出了更优的性能。因为人体动作是一个复杂的非平稳动作,所以循环网络难以做出短期预测,该模型却能够推断未来的预测框架。在大多数预测中,对称时间编码器S-TE 和卷积时间编码器CI-TE 优于分层时间编码器H-TE,这表明结构先验对运动预测是有益的。通过混合编码的方式减少了对特定动作微调的预测误差,且能对原始训练数据中未包含的动作进行有效的分类与预测。
文中在采集人体运动数据的基础上,提出了一种用于人类运动特征学习的时间编码器方案,既可以用作生成模型又可以用作特征提取;并提出了3 种解决此问题的方法。由于该结构可以直接在特征上进行动作分类而无需进行微调,提高了对人体运动特征分析的准确性和鲁棒性。
文中系统基于高性能的GPU 运算,如何将该系统移植到普通设备,并保证系统的稳定运行将是下一步的工作重点。