# 讲稿 # 开场 各位口试委员各位老师大家好,我是今天的讲者汤家懿。 在正式报告前我要再次向各位口委道歉,由于我的疏忽,thesis中很多图片都没有cite,在此说明一下,图片4-1,4-3,4-4,4-8到12,5-3,5-4都是我拍的和画的,那其他没有cite的图片是我忘记cite的图片。再次说声抱歉。 我今天要报告的主题是基於視覺之步態分析的跌倒預測機器人 Vision-based Gait Analysis Robot for Fall Prediction 我的指导教授是富力城博士 # Background 4 跌倒是老年人的主要健康问题,会带来严重的身心后果。跌倒对老年人的健康构成威胁,并且会严重限制他们独立生活的能力。 同时随着社会老龄化,跌倒老人的数量也日渐增多。 我们可以从这张图来看,以台湾社会为例子,台湾预计在2026年以后步入超高龄社会,到时候将会有数百万 65 岁及以上的成年人受跌倒问题困扰。跌倒会给老年人带来颠覆性的后果,例如髋部骨折和头部外伤,这反过来又会增加过早死亡的风险。 # motivation 5 1.目前市面上大多数有关跌倒的研究都是在做跌倒侦测,很少有跌倒预测的研究。同时跌倒侦测仅仅是在受试者已经受到伤害后才会发出警报,不论是从重要性还是从发展潜力来看跌倒预测都更为重要。 2.长时间佩戴穿戴式设备手机人体特征很容易造成受试者的不适,所以vision-base的sensor比如camera更适合应用于real world的日常生活。 3.目前大多数的研究都限制了老人的行为,老人必须做指定动作(比如朝着相机方向来回走固定距离)。但是在日常生活中老人不可能只按照规定的路线或动作生活,所以使用移动平台对老人在日常生活中的行走进行侦测更具有实际意义。 # challenge 6 挑战总共有3点 1.寻找有效的步态参数来识别异常步态模式仍在积极研究中。 2.老年人在自由行走时的步态参数仍然难以判断跌倒风险。 3.几乎没有任何研究使用机器人来无缝预测老年人行走时的跌倒风险。 # Objective 7 1.我们提出一组步态参数,并使用 OC-SVM(一分类-支持向量机)来有效预测行走中的老人的跌倒风险。 2.我们应用了vision-base的技术,通过移动摄像头提取步态参数,来允许行走的老年人可以自由走动而不是做特定动作。 3.我们开发了一个安装有摄像头的跟随机器人平台,以实现行走老人的无缝跌倒预测。 # 9 第一个doheny他们的做法是让受试者重复做四次FTSS(five time sit to stand)(5次坐立测试),采用安装在大腿外侧和胸部的三轴加速度计。检查了评估各部分加速度的均方根幅度、跳动和频谱边缘频率的均值和变化。采用逻辑回归法将受试者分类。 他们的实验必须在椅子做指定动作完成,而且穿戴式设备难以长时间佩戴。 第二个sabo他们用的是Kinect 3d相机,所以他们的输入也是video,3D的骨架数据被输入到STGCN中,并与老年痴呆的受试者预先测试过的UPDRS和SAS结果进行比较。他们将相机以监视器视角固定在墙壁上,只有当病人走过时才能进行侦测。他们同样没有限制受试者的动作,但是运用狭窄的走廊从物理意义上对受试者进行了限制。 第三个NG,他们用到的是RGB的camera,所以只有2d影像。2D影像可以测量时间步态变量(例如踏频或步数时间)和相对距离测量(例如步宽的左/右对称性)。所有像素距离均归一化为中外侧髋关节跨度,即左右髋关节关键点之间的像素距离。他们的摄像机视角与上一个类似,也是在狭窄走廊中。 (进行单变量线性回归分析以确定参与者的POMA-步态评分与其估计步态变量之间的相关性) 第四个 greene的数据仅从双腿上的传感器收集并要求受试者做TUG(time up tu go)测试,从椅子上站起来后行走3m再返回坐下。分类模型是regularized discriminant classifier 特征数量高达44个。无用或低影响的特征也被输入到分类器中,并且数据非常复杂。 # system overview 11 我们的input是robot观测到的画面流,之后通过我们的skeleton extraction module 得到joints,将joints的坐标输入进gait feature module我们就能够计算得到想要的步态特征(或者说步态参数),将步态特征喂到fall prediction module里,我们用到的是OC-svm,一类支持向量机,来将这些特征分类分为两类:高跌倒风险和低跌倒风险。若是高跌倒风险,机器人就会发出警报。 另一边,KCF tracking模块对受试者进行持续追踪,并发送goal点给ROS move base,从而完成机器人对老人的持续追踪。 # system flow 12 1) Find human 2) Proceed skeleton extraction 3) Proceed gait feature extraction 4) Tracking 5) Proceed fall prediction 6) Check if fall risk is high 7) Warning or return # Skeleton Extraction 14 我们使用了ZED2 camera去抓取骨架,同时使用ZED OPENPOSE module得到18个joints点, 当我们提取joints时,我们主要focus on在下肢,所以只有8 9 10 11 12 13 18是我们要的。那其他点我们不做计算。 # Definition of walking period 15 步态周期是步态参数的基础,所以我们要先了解什么是步态周期。 以髋骨角度为例子,当右腿迈出到达最大值时,髋骨角度达到最大,随后左脚也往前迈,两腿并排时髋角度达到最小,随着左腿迈到最前方,髋骨角度达到第二次最大角度,随后右脚往前迈,再经历一次髋骨角度达到最小和最大,人体姿态返回最初的样子,这就是一个步态周期。 图中画斜线的部分指的是对应的腿呈支撑状态,白色部分指腿部呈悬空状态。 # Gait Parameter Extraction: Spatiotemporal 16 之后我们就要提取步态参数,或者说步态特征 我们将步态参数划分为时空参数和动力学参数。 先介绍时空参数。 据相关的研究表明,包括stride ;stride speed以及cadence在内的时空参数对跌倒风险的影响最大。所以我们也会选用这几个参数。 首先介绍stride, stride指的就是一只脚接触到地面后同一只脚再次接触到地面时的长度。一个stride是step的两倍,公式如下: x10和y10指右脚的坐标,x,y,z坐标基于zed camera,x轴朝着camera方向,y轴朝着camera左边,z轴朝着camera上面。 # 17 stride speed就是步幅速度,它同样十分重要。有研究表明stride speed小于等于0.7m/s的老人跌倒风险要比正常速度(0.7-1)要高的多。 公式为stride除以tf减去ts # 18 cadence 被定义为单位时间内走了多少个steps。 m是一个样本中走的步数, n表示一个样本跑了多少帧 ;1/u表示两帧之间花费了多少秒。 # Kinematics 19 那除了时空参数,运动学参数是反映行走过程中下肢运动和平衡能力的指标。 我们选择左右膝关节角度和两条腿之间的角度来进行判断。 以左腿膝盖角度作为例子,L11,12如图所示是左大腿,L12,13是左小腿,L11,13是髋骨与脚的连线, 构成一个三角形,使用arccos函数就能求得膝盖角度。右侧膝盖也是同理。 # 20 两腿之间的夹角也可以间接反映行走的平衡能力。 因此,选取腿间夹角运动学参数𝜃_𝐿𝐴,计算表达式如下: # 21 统计学中,方差这一概念用于表示样本中的变量与总体均值间的差异。为了能进一步表示受试者的平衡能力变化的稳定性,将每一步幅范围内的关节角度θ取方差,得到特征值var(θ),计算公式为, 其中θi为关节角度序列中的分量值,θbar为样本角度均值,N为样本总分量数。 # 22 在大多数情况下,老年人跌倒是由多种因素造成的,因此也应适当考虑受试者自身的因素。 以性别因素为例,老年女性的跌倒率总是明显高于老年男性,但男性跌倒的死亡率要远高于女性,不过这是题外话了。 同时跌倒史被认为与跌倒风险增加密切相关。 综上所述,我们选择跌倒史和性别作为两个个人特征。 # 23 总结一下,我们选取并计算了6个步态参数以及2个个性化参数作为我们的特征 # 24 对于分类算法,我们选择一类支持向量机(OC-SVM)作为分类模型,以步态和oersonal feature作为学习样本,使用训练好的模型参数对测试数据进行预测。 那么为什么要选择使用OC-SVM呢,那是因为我们做的是异常侦测,使用的数据集也是不平衡数据集,如果使用正常的SVM分类器很容易就导致错误。 其原理基本上是将点映射到高维的feature space,再将所有的数据点与零点在特征空间 F 分离开,并且最大化分离超平面到零点的距离。实现的思路是找到一个超平面将所有样本都放在一侧,同时让这个平面距离原点的距离更远,在测试数据时,在平面远离原点一侧的数据我们认为是同类数据,反之出现在靠近原点一侧的数据则认为是异常数据。 # 25 该模块的输入是深度相机的视频流。通过使用HOG(Histogram of oriented gradient)方向梯度直方图特征检测提取目标对象的特征信息,将其转换为特征向量并发送到KCF(Kernelized Correlation Filters)模块,以实现目标识别和跟踪,并获得相对于相机坐标系的目标深度信息。然后,将base_link坐标转换为ROS的全局地图坐标的TF坐标转换为地图坐标系,将目标位置设置为目标,并调用move_base包执行导航任务,从而使机器人能够移动到目标位置点并执行视觉跟踪功能。 KCF算法:输入HOG后,利用二维高斯函数生成和样本MxN大小一致的训练标签矩阵y,利用论文中推出的核回归模型,针对输入的HOG特征图,训练出一个非线性回归器。在一下帧中,在之前帧的目标位置框选出MxN大小的图片,也是进行余弦加权,然后求新HOG特征图。然后计算响应矩阵f(Z)。在矩阵f(Z)中找到最大的响应位置,若响应值超过余弦给定阈值,则该位置为当前帧中的目标位置;若最大的响应值仍小于阈值,则采取不久措施(比如用全图搜索匹配的方法)重新选择一个目标区域,然后重复到步骤1重新开始。然后是更新模型,以新找到的目标位置选取样本,重复上述步骤。 # 28 TP:高风险且预测高风险 FP:低风险却被检测为高风险 TN:低风险检测为低风险 FN:高风险检测为低风险 # 29 Sensitivity是发生了跌倒时的敏感性,是成功预测跌倒在所有发生跌倒情况里的预测成功率 Specificity是特异性,是没有发生跌倒情况下的非误报率 Accuracy是所有情况下针对有无跌倒的预测成功率 # 30 我们使用的数据集是TOAGA,Toronto Older Adults Gait Archive 总共由28个video组成,每个视频为30fps和1080p的分辨率,总共14位老人参加了数据收集,包括3名男性和11名女性。 # 31 我们可以看到总共有14位受试者,年龄分布在75-99岁,其中13号和14号在过去的6个月中发生过1次跌倒,并对每一位受试者的跌倒风险进行label, Label的依据是根据POMA,BBS和TUG综合评判。总共有4个高风险样本和10个低风险样本。 POMA= Tinetti Performance Oriented Mobility Assessment BBS = Berg balance test POMA和BBS都是由专业人士提供一系列指定动作要求受试者去完成,并都每一项动作进行打分。 TUG = Timed-Up-and-Go 从坐着的状态起立再行走3m再回来坐下的所花费的时间,一般小于12s算正常 # 32 由于数据集中的样本很少,我们要进行样本的扩充。 我们使用了sliding window mechanism滑动窗口算法,将单个行走样本划分为n个stride从而扩充样本。 这种数据扩充方法的优点在于它在数据中引入了个体对象的变化,这有助于提高机器学习分类器的泛化性能;改方法允许频繁和实时的推断,这对跌倒风险预测中的及时干预十分重要。 最后我们生成了429个low fall risk和243个high fall risk样本 ***提问再解释:*** 怎么做的? 首先对样本进行处理,将joints序列用之前介绍的方法,计算两脚之间的直线距离,达到三次最大则符合条件。滑动窗口的右指针一直右移,直到符合3个峰值条件,左指针向右移动,如此往复,直到滑动到底我们就能得到样本中的所有stride。 # 34 那之前的介绍其实都有点抽象,那么我们先直接来看视频。 首先是第一部分,我们模拟老人从起床到去客厅,在路上被纸滑了一脚,滑了一脚后感到有些头晕所以有左右失衡的动作,然后再到客厅喝水,喝完后去拿拐杖模拟腿部肌无力,然后找张椅子坐下。 # 35 我们的所有特征都是基于骨架提取,所以要验证骨架提取的准确性。 我们使用PCK(Percent Correct Keypoint)来判断keypoints的精准度,主要算法为任意选取一帧画面,用opencv将keypoint坐标标注出来,再进行人工标注,计算两者直接的像素距离并判断有无超过阈值 阈值的设定一般为PCKH0.5。也就是取头的直径的一半 我们看到右边的表格,这一帧画面中受试者的头部直径一半为15.50,所以Left Hip超过了阈值。 # 36 由于我们主要focus on在下肢,所以我们要对下肢单独做整合, 同样随机抽取一帧来进行计算。 # 37 当将提取的骨骼特征与手动注释键进行比较时,我们计算出所有关键点、臀部、膝盖和脚踝的 PCKh@0.5 分数分别为 93.75%、87.50%、83.33% 和 91.67%。 # 38 多赫尼等人。 应用五次坐到站测试,通过连接在大腿外侧的加速度计获得加速度数据,以识别每个坐到站到坐阶段以及坐到站和站到 - 坐过程。 另一个加速度计连接到胸骨以捕捉躯干加速度。 参与者为 39 名老年人,包括 16 名男性和 23 名女性,年龄从 61 岁到 88 岁。总共有 70 个加速度计导出的特征,即均方根振幅、加速度和频谱边缘频率 (SEF) 的平均值和变化 每次评估期间的加速。 基于每个特征的重测可靠性,最终选择了四个特征进行输入进逻辑回归模型。 他们模型的准确率为 74.4%,特异性为 80.0%,灵敏度为 68.7%。 在他们的工作中,受试者的数量非常少,因此结果可能会过度拟合。而且逻辑回归很难处理数据不平衡问题,同时准确率不高,因为他是非常类似线性模型。 Buisseret 等人该模型基于57名参与者的原始加速度数据进行训练 老人的年龄在65-90岁之间,其余16名参与者的测试准确率为75%。,他们的加速度计安装在腰部,并采用6分钟自由行走的测试方式,收集到的相对来说较少。 Marschollek 等人。在使用腰部安装的加速度计进行评估后,对 50 名老年参与者进行了为期 1 年的随访。 在那项研究中,根据使用分类树分类的加速度计派生参数,报告了 80% 的最佳分类准确度、58% 的灵敏度和 96% 的特异性。 那classification tree对有时间顺序的数据,需要很多预处理的工作,这部分工作做的不好很容易影响结果。同时在在处理特征关联性比较强的数据时表现得不是太好。 格林等人。 [29] 应用惯性传感器提取从安装在每条腿上的三轴陀螺仪传感器获得的角速度信号导出的特征。 有 226 名受试者(平均年龄 71.5±6.7 岁,164 名女性)参加了他们的工作。 使用正则化判别分类器模型(RDA),平均分类准确率为 79.69%,灵敏度为 73.41%,特异性为 82.59%。 他们的数据只从两条腿上的传感器采集,特征数量高达44个。无用或影响不大的特征也被输入到分类器中,数据非常复杂。 正如我们所看到的,我们的方法在灵敏度、特异性和准确性方面比其他工作有明显的优势。 Marschollek 等人的特异性似乎比我们的好,因为他们的实验数据跨度很长,而且数据更丰富。 为了验证引入个性化特征在预测跌倒风险中的作用,我们还进行了个性化特征的消融实验。 我们放弃所有个人参数,只保留步态参数。 实验数据表明模型的性能有一定程度的退化,验证了个性化特征的有效性。 实验结果表明,我们的步态数据的跌倒风险预测在中小型数据集上具有良好的性能。 同时证明3D骨骼数据具有预测老年人跌倒风险的潜力。 # 39 与静止的camera不同的是,我们的机器人会在移动时进行观察。当机器人在运动时,我们需要将/base_link坐标转换为/map坐标进行计算,这意味着基于AMCL定位算法的定位非常重要。 我们设计了如图的路线,让机器人绕着客厅走50次,每次回到原点时都记录一次AMCL的定位情况,以此判断机器人的重定位性能,从而判断移动对我们的model会有多大影响。 # 40 由于篇幅的限制,我们截取了最后4次测试的结果,可以看到整体的效果非常不错,经过了长时间长距离的测试,amcl也没有什么明显的drift。 # 41 为了验证步态参数在机器人移动时也不会有较大的差别,我们设计里另一个实验,我们让同一个人分别在机器人停止时和机器人移动时按照相同的路线和状态行走,比较得到的步态参数的差异。那从收集到的数据来看,整体的差距非常的小。 # 42 最后我们在自己的实验环境中进行测试,总共有三个受试者,由于实验室内都是年轻人,我们只能模拟老人的行走情况。 每个人表现出25次高跌倒风险动作,如腿部受伤和行走不平衡,以及25次正常行走。受试者#1有点驼背,可以熟练地模仿老年人的走路姿势,这使得模型很容易判断。因此,他的TP(真阳性)非常高,没有FN(假阴性)。然而,FP(假阳性)也相对较高,因为受试者正常行走时的身体姿势存在问题。第二个受试者穿过家具的角落和其他容易出现遮挡问题的区域,因此TP和FP较高。受试者#3的TP和TN也很高,这是因为他使用不平衡的姿势来模拟老年人的行走,这使得模型很容易判断。我们最终获得了敏感性84.00%、特异性78.67%和准确性81.33%。 # 44 由于老年人跌倒问题日益严重,相关研究难以应用到日常生活中,我们设计了一个能够持续监测老年人行走情况的跌倒风险预测系统。 我们使用 OC-SVM 对跌倒风险进行分类,并设计了基于 KCF 算法的跟踪模块。 在真实世界的移动观察条件下,我们的模型准确率为81.33%,特异度为78.67%,灵敏度为84.00%。 目前,我们只判断受试者的行走。 未来可能更好的加入HAR对老年人的ADL进行持续分析。 # 数据集划分 我们把数据集中80%的low fall risk扔进训练集,总共343笔,将剩余的86笔扔进测试集,同时按照总体数据集的比例,48笔high fall risk被扔进测试集。