1. 引言
脑卒中又被称为中风,是脑组织和脑细胞坏死的一种疾病,此病主要是由于大脑中的血管突然破裂或因血管阻塞从而导致血液不能流入大脑进而引发的脑组织损伤,引起临床症状超过24小时将有可能致死,此病具有明显的季节性特征,在寒冷季节发病率更高。循证医学证实,在脑卒中存活的患者中,进行积极的康复治疗,可使90%的存活患者能重新恢复步行和生活自理能力,可使30%的存活患者能恢复一些较轻的工作。相反,不进行康复治疗,上述两方面恢复的百分率相应只有6%和5%。大量临床康复实践表明 [1] [2] [3] [4],早期有效的康复训练有助于改善脑卒中患者受损的功能(如感觉、运动、语言、认知和心理等),减轻残疾的程度,预防脑卒中后可能发生的并发症(如压疮、坠积性或吸入性肺炎、泌尿系感染、深静脉血栓形成等),提高患者的日常生活活动能力和适应社会生活的能力,提高其生活质量。现阶段在康复训练领域对脑卒中患者进行早期有效的康复训练有两种解决方案,第一部分是依靠康复器械 [5] [6],如上肢康复机器人、下肢康复机器人、肢体康复治疗仪等,康复器械主要依赖进口,价格较高,并且现有的康复器械只能覆盖部分的康复训练,具有一定的局部性,其中肢体康复治疗仪对脑卒中急性期生命体片有危险倾向者不适用。另一个解决方案是康复机构包括公立康复医院和私立康复医院,我国公立康复专科医院数量严重不足,同时民营康复医院水平参差不齐,且同样存在治疗费用较高的情况,为了解决以上问题,让脑卒中患者不需要去支付昂贵的治疗费用购买昂贵的器械,居家就可以实现早期简单的康复训练,系统提出的解决方法是通过摄像头获取患者康复训练过程图像,利用计算机视觉技术,结合OpenPose和MoveNet姿态检测库提取患者训练过程的实时动作骨架坐标序列,构建用户肢体运动评价模型,对康复训练者的训练过程进行评价,得出训练者的康复训练质量,并通过语音的方式提醒用户不达标的动作以及改正方式,指导和引导患者逐步达到康复训练的标准。
本文主要实验并比较了OpenPose和MoveNet两种姿态识别的算法,采用了在移动端效果更好的MoveNet神经网络算法进行设计。
2. 系统设计
系统实验环境为机械革命X8Ti Plus笔记本电脑,CPU为Inter i7-8750H,Windows 10 64位操作系统,内存为16 G,显卡为NVIDIA GEFORCE 2060,软件平台为Visual Studio Code。系统安装简单,所需要的设备数量少,成本低。系统流程图如图1所示。
由于成像设备和外部环境等因素会在图像运输和转换的过程中造成影响,图片的大小在不同时段色彩具有差异,这些因素会干扰结果的正确性,为了最大程度减少环境因素对图像的影响,则需要先对图像的数据进行宽高固定化,将图片等比例缩放到一样的大小,再对图片进行灰度化 [7] 处理。灰度化处理就是将彩色图片转化为灰色图像,由于彩色图像的所含信息量太多,会对后续工作造成影响,所以选择使用图像灰度化处理从而达到提高运算速度的目的。经过测试,预处理操作对结果有一定的积极作用。如图2所示。
3. 姿态估计
3.1. 基于OpenPose的人体关键点检测
OpenPose算法分析
OpenPose [8] 人体姿态识别项目是依赖于卷积神经网络和监督学习并以Caffe为框架开发的开源库。它支持在单人或多人情况下对人的面部表情和肢体动作进行估计。它的主要优点是适用于单人或多人,以及具有良好的鲁棒性,可以说是世界上第一个基于深度学习的实时2D姿态估计。OpenPose采用的是自下向上的方式,即先将所有关节点整合出来,再通过仿射场将其划分到个人。OpenPose的网络结构如图3所示。
在该模型中输入了一幅图像,并通过VGG19 [9] 卷积网络提取特征,得到了一组特征图之后将其分成两个岔路Branch 1 & 2,分别使用CNN网络提取Part Confidence Maps(置信度)和Part Affinity Fields (关联度) [10],使用图论中的Bipartite Matching (偶匹配)求出Part Association [11],并且连接同一个人的关节点,由于PAF自身的矢量性,使得生成的偶匹配正确,最终合并为一个完整的人体骨架;最后基于PAFs求Multi-Person Parsing→把Multi-Person Parsing问题转变为graphs问题→Hungarian Algorithm (匈牙利算法)。

Figure 3. Network structure of OpenPose
图3. OpenPose的网络结构
3.2. 基于MoveNet的人体姿态检测
MoveNet是由google公司2021年推出的人体姿态检测,MoveNet是自下而上的估计模型如图4,能够检测出身体的17个关键点,利用热图来精确定位人体的关键点。该架构是由两个部分组成:一个特征提取器和一组预测头。预测方案大致遵循CenterNet,但是相较该架构而言,它大幅度提升了速度和准确性。所有模型均使用TensorFlow对象检测API进行训练。
MoveNet中的特征提取器是MobileNetV2 [12],带有附加的特征金字塔网络(FPN),能够实现高分辨率(输出步长为4)且语义丰富的特征图输出。特征提取器上附带了四个预测头,负责密集预测:人体中心热图是用来预测人体实例的几何中心;关键点回归场是用来预测人体的完整关键点集,用于将关键点分组到实例中;人体关键点热图是用来预测所有关键点的位置,使其不依赖人体实例。每个关键点的二维偏移场是用来预测从每个输出特征图像素到每个关键点的精确子像素位置的局部偏移量。其步骤如下:
第1步:人体中心热图用于识别框架中所有个人的中心,定义为属于个人的所有关键点的算术平均值。选择得分最高的位置(通过与框架中心的反距离加权)。
第2步:通过对象中心对应的像素分割关键点回归输出来生成该人体的初始关键点集。由于这是中心向外的预测(必须在不同的尺度上操作),所以回归关键点的质量不会特别准确。
第3步:关键点热图中的每个像素都乘以一个权重,这个权重与对应的回归关键点的距离成反比。这可以确保我们不接受来自背景人物的关键点,因为他们通常不会靠近回归的关键点,因此得分较低。
第4步:通过获得的每个关键点通道中热图值的最大坐标来选择关键点预测的最终集合,然后将局部2D偏移量预测添加到这些坐标以给出精确的估计。关于这四个步骤的详细信息,请参见下图5。
为了将MoveNet打造成高质量的检测器,官方团队选择在架构设计、后处理逻辑和数据上投入了大量精力。同时,团队也很重视推理速度。选择了将MobileNetV2的瓶颈层用于FPN横向连接。其次,为了加快输出特征图的执行速度,选择大幅减少每个预测头中的卷积滤波器数量。除MobileNetV2第一层外,整个网络都使用了深度可分离卷积 [13]。
1) 优化
对 MoveNet进行了反复的分析,比较慢的操作被找到并且删除。例如,将tf.math.top_k替换为tf.math.argmax,因为其执行速度明显更快,而且适用于单人设置。
为了确保能够使用TensorFlow.js实现快速执行,所有模型的输出都将打包到一个输出张量中,因此从GPU到CPU的下载只有一次。或许,最显著的提速是针对模型使用192 × 192的图像输入(对于Thunder,则为256 × 256)。为抵消低分辨率,基于前一帧的检测结果应用了智能裁剪 [14]。这使得模型能够把注意力和资源投入到主体上,而不是背景上。
2) 时间滤波
在高FPS摄像头视频流上操作能够从容地对关键点估计应用平滑处理。Lightning和Thunder都对传入的关键点预测流应用了强大的非线性滤波器 [15]。团队对该滤波器进行了调整,以同时抑制模型中的高频噪声(即抖动)和离群值,同时还可以在快速运动期间维持高带宽吞吐量。这使得在各种情况下都能以最小的延迟实现流畅的关键点可视化。
3) MoveNet浏览器性能
为了量化MoveNet的推理速度,官方团队在多个设备上对该模型进行了基准测试如图6。模型延迟时间(以FPS表示)在使用WebGL的GPU和WebAssembly (WASM)上进行测量,后者是使用低端GPU或无GPU的设备的典型后端。

Figure 6. Inference speed of MoveNet across different devices and TF.js backends
图6. MoveNet在不同设备和TF.js后端之间的推理速度
3.3. 算法比较
由于OpenPose主要是针对于多人运动进行姿态估计 [16],并且需要计算的数据量很大,为了能够达到实时的目的,使用了高并行的策略。基于cuda加速,需要很高的显存,相较而言,MoveNet是一个快速并且轻量的模型,更加适用于本系统中。
4. 角度计算
关节和骨骼之间的角度可以清晰地反映一个人的整体位置和移动方向,人与人之间存在的差异(身高、肤色、体型等)对计算机判断的结果没有影响。系统设定的骨骼点中有头(包括眼睛、鼻子和耳朵,但不会被分配权重)、脊柱中心、左右手等。如图6所示,将全部的关节分到主体躯干和四肢两个大组中,分组为:1) 主体躯干:0,1,2,5,8,11。2) 四肢:2,3,4,8,9,10 (左);5,6,7,11,12,13 (右)。
从一个关节到另一个关节之间的距离可用公式(1)表示
(1)
式中
为关节与关节之间的距离,
,
,
为关键点的坐标,因为图像中每个人的关节点被OpenPose生成为2D位置作为输出,所以将式(1)修改为式(2),
,
,为二维像素坐标系上的关键点坐标。
(2)
通过这个公式,我们可以先计算出一组里面两个关节之间的距离,然后再计算出关节与关节之间的角度。角度计算如图7。
图8中d1,d2是一个组里面相邻的两个关节点之间的距离。对于主体躯干,还需要计算它们和竖直方向之间的偏移角φ(˚)。
(3)
(4)
式中θ为一组中任意一个关节点与编号相邻的两个关节点连线之间的夹角,d1,d2,d3分别为三个关节点之间的距离,φ为主干与垂线之间的偏移角(˚)。式(5)可用于计算实际动作与标准动作之间角度偏差的百分比P
(5)
式中θN为患者所做动作的实际角度,θstandrd为标准角度。式(6)能够计算出Ptotal人体动作的总体拟合百分比。
(6)
5. 效果
采用了广东工伤康复医院的居家康复训练指导动作进行测试如图9,与实际做的动作进行比对,系统可以完整的检测到人体姿态,并给出提示,可以完成整个动作的无人式指导。
6. 结论
基于OpenPose的脑卒中康复训练评估辅助系统可以较准确地识别出人体动作并进行比较提示,其稳定性好。本系统在现有技术和方法的基础上进行了分析研究,针对于现在康复领域所存在的设备器材及康复医院价格昂贵等特点,提出了第三种解决方案:在线康复训练,完成了康复训练动作的居家动作指导,系统设置了语音提示、采用得分制的方式对训练进行指导,使得整个训练过程更富有趣味。实验结果表明:该系统判断的结果与人眼识别的结果一致,并且安装简单,需要的设备较少,互动性较强,设备成本较低,涉及的数据较少。
基金项目
国家级大学生科技创新项目202111551007。