1. 引言
老年人跌倒是一个重大的公共卫生问题,因为它不仅会导致许多致残性骨折,严重时还会威胁生命安全。跌倒同时会给老人造成严重的心理创伤,降低生活独立性。研究表明,有将近30%的老年人每年至少跌倒一次,其中40%至60%的跌倒会导致较严重的身体创伤 [1] 。因此,监测老年人的异常行为是很有必要的。目前检测跌倒的方式可以分为三种:简单的非接触式传感器、可佩戴式传感器 [2] [3] 、计算机视觉系统 [4] 。非接触传感器提供的数据相对粗糙,难以解读;可佩戴传感器是通过陀螺仪或者加速度计检测跌倒,侵入性强,需随身佩戴;计算机视觉系统是提取运动视频中的重要特征来检测跌倒,设备操作安装简单、侵入性弱,也是目前最普遍的检测方法。
在本文中介绍了一种基于计算机视觉的人体形状拟合的跌倒检测方法。本文第2部分简要的回顾了现有的基于计算机视觉和人体形状拟合的检测方法,第3部分介绍本文的模型,第4部分介绍了实验的配置与结果分析,最后在第5节得出结论并提出了未来的一些工作方向。
2. 相关工作
视觉传感器可以提供更多关于人的运动、位置和活动的信息,许多研究人员利用计算机视觉的方式来检测跌倒。Liu等人 [5] 利用Kinect开发了一种新型跌倒识别算法,能快速有效地识别人体跌倒。Kong等人 [6] 通过canny滤波器和深度摄像头得到了二值图像的轮廓,然后输出的轮廓图像被用于跌倒检测。但Kinect传感器受距离限制,并且铺设成本高。相较来说,单目摄像机更适合对于室内的监控。利用单目摄像机跌倒检测中经典的方法就是通过几何的特征来判断。Tripathi [7] 等人利用长宽不一样的矩形框去框住图像中的人体部分,利用矩形宽高比的变化来判断跌倒行为。Liu和Zuo [8] 在之前研究的基础上新融合了形态比,有效面积比和中心变化率判定摔倒。Feng等 [9] 使用椭圆拟合来代表行人的形状,分别提取出了长短轴之比、方向角、速度和一个积分归一化运动能量图,然后通过SVM进行分类并判断。椭圆形相比矩形来说更加圆润,能更好解决矩形在识别人体时表现出的不稳定性。
尽管近年来在这一领域取得了相当大的成就,但仍然有一些挑战需要克服:
· 目前大多数方法 [7] [8] [9] 都直接对整个人体轮廓进行形状拟合,受到不稳定性和角度的影响,容易出现误判,检测率降低。
· 现有的系统直接将人体与背景分离时,可能出现像素不均、细节处理不到位等问题,导致算法不仅较复杂还易遗漏关键运动特征。
为了解决上述问题,本文提出一个基于骨骼点改进的局部椭圆形拟合跌倒检测模型。先使用OpenPose算法提取人体关键骨骼点,利用骨骼点的信息替代传统图像分割前景信息;然后只对人体局部进行椭圆拟合,细化动作检测目标,有效的降低算法的复杂程度;最后通过椭圆形长短轴之比、方向角和人体质心垂直方向速度作为判定的运动特征,检测跌倒行为。
3. 人体骨骼点局部椭圆拟合模型
本文所提出的人体骨骼点局部椭圆拟合模型的整体框架如下图1所示。将原始图像输入,提取图像中人体骨骼点位置信息;利用上半身筛选出的骨骼点位置坐标进行局部椭圆的拟合,改变了以往只对人体轮廓进行前景提取和分离的方法,更加注重细节特征;然后提取了椭圆形状特征和人体下落时中心点在竖直方向上的速度特征,将其组成一个基于时间序列的运动特征,最后通过一个浅层CNN网络进行训练判断,分类一些相似性的活动。
![](//html.hanspub.org/file/95-2571628x7_hanspub.png?20240531085947225)
Figure 1. Local elliptic fitting model of human skeleton points
图1. 人体骨骼点局部椭圆拟合模型
3.1. 骨骼点特征提取
在骨骼点提取部分采用了OpenPose算法 [10] ,将视频序列的每帧图像中的人体形态用骨骼点连线表示出来。首先,输入一帧图像,经过VGG19卷积网络提取特征,得到一组特征图,然后分成两个岔路Branch1&2,分别使用CNN网络提取置信度和关联度信息;得到这两个信息后,使用图论中的偶匹配求出部分关联度,将同一个人的关节点连接起来,由于PAF自身的矢量性,使得生成的偶匹配很正确,最终输出一个人的整体骨架。
OpenPose算法输出了18个关键骨骼点的位置坐标,但经过研究后,为了降低算法的复杂程度,本文去掉了头部上的四个关键点,只保留了鼻子部分。因为在跌倒的过程中,这四个点几乎没有任何区别性作用,最终的人体骨骼点如下图2所示。
![](//html.hanspub.org/file/95-2571628x8_hanspub.png?20240531085947225)
Figure 2. Key skeletal points of the human body
图2. 人体关键骨骼点
3.2. 局部椭圆拟合
获得人体14个关键骨骼点后,利用骨骼点的位置坐标对人体进行椭圆拟合。首先对这14个骨骼点进行再次筛选,由于人体上半身相较下半身离地更远,在发生跌倒行为时,上半身的动作幅度更大,变化趋势更明显,并且下半身会出现遮挡或其他情况,干扰因素更多,因此我们只对人体的上半身进行局部的椭圆拟合。
而对于上半身来说,手腕部分还是存在干扰因素,为了最大程度保持椭圆稳定性,最终只选取上半身0、2、5、3、6、8、11这7个骨骼点。下图3表示选择拟合的骨骼点。
然后对椭圆方程的构建,采用最小二乘法进行拟合 [11] 。对于二维坐标来说,椭圆的表达式如公式(1)所示:
(1)
将7个骨骼点坐标带入公式中,即求得目标函数
的最小值。利用极值原理,令
,得到线性方程组,满足约束条件,可求得每个参数的值。
一个椭圆由方向角θ、长半轴a、短半轴b和椭圆中心点
这四个要素决定。上述公式计算得出椭圆对应参数后,椭圆中心点坐标为:
(2)
根据中心点,可计算出椭圆的方向角θ为:
(3)
且依次可计算出椭圆长半轴a和短半轴b,计算公式为:
(4)
(5)
![](//html.hanspub.org/file/95-2571628x17_hanspub.png?20240531085947225)
Figure 3. Schematic diagram of elliptical fitting of human skeletal points
图3.人体骨骼点椭圆拟合示意图
3.3. 运动特征提取
本文根据上述得到的椭圆轮廓特征,提取了跌倒时的人体运动特征。在发生跌倒情况时,如果人是面向摄像机的光轴方向跌落,则椭圆长短轴之比
会随之发生明显变化但方向角
基本不会发生改变。反之,如果是垂直于光轴方向跌落,则方向角
的值会发生明显变化,而
基本不会改变。因此
和
的值可以作为椭圆轮廓运动特征来进行判断。
在跌倒时人体会在竖直方向上进行快速的运动,无论人体朝哪个方向跌倒,最终都是向地面靠近,所以竖直方向上的速度
也可作为判断的运动特征。本文先将连续两帧之间中心点距离和时间作比值,然后再与方向角的正弦值做乘积,得到人体竖直方向上的速度公式:
(6)
其中
为第
帧的中心点坐标,
为第
帧的中心点坐标,
为视频的帧数,
为方向角的正弦值。
图4中表示了以上特征在数学几何上的表示。水平方向为X轴,竖直方向为Y轴,a和b分别为椭圆的长半轴和短半轴,
为椭圆方向角,
是竖直方向下落的速度。
![](//html.hanspub.org/file/95-2571628x34_hanspub.png?20240531085947225)
Figure 4. Geometric schematic diagram of motion features
图4. 运动特征几何示意图
然后将上述三个运动特征组成了一个基于时间序列的运动特征,如图5所示。在50帧的图像序列中,将三个特征折线图组成一个运动特征,经过CNN网络的训练和学习,用于区分跌倒行为。
![](//html.hanspub.org/file/95-2571628x35_hanspub.png?20240531085947225)
Figure 5. Schematic diagram of motion feature time series
图5. 运动特征时间序列示意图
3.4. 基于CNN跌倒检测
本文利用一个CNN网络进行判断。CNN是一种前馈神经网络,经典的CNN网络中包含卷积层(convolutional layer)、池化层(pooling layer)和全连接层(fully connected)本文所用的是一个浅层的CNN网络,结构如下图6。
在卷积层使用196个1 × 12的过滤器,分别学习三个运动特征。然后利用ReLU激活函数对196个特征图进行处理,通过1 × 4的最大池化层将其缩小为原来的4倍。由池化层输出的特征图加上统计特征,输入到全连接层中,最后经过soft-max函数分类计算。
该模型被训练为最小化交叉熵损失函数,与CNN权值的l2范数正规化相结合。利用反向传播算法对梯度进行计算,利用随机梯度下降的修正方法对网络参数进行优化。
![](//html.hanspub.org/file/95-2571628x36_hanspub.png?20240531085947225)
Figure 6. CNN network architecture for fall detection based on multi feature fusion
图6. 多特征融合的跌倒检测CNN网络架构
4. 实验结果与分析
本文算法的实验主要用到两个软件:Visual Studio和MATLAB。为了测试算法性能,本文选择用公共数据集UR跌倒检测数据集 [12] 来进行训练和测试。UR数据集中记录了30个摔倒视频序列和40个日常活动视频序列,包括摔倒、弯腰、坐下、下蹲、走路等。本文排除了ADL序列中12个黑夜场景,并且只选取RGB拍摄的图像作为实验数据,详细见表1。
![](Images/Table_Tmp.jpg)
Table 1. Experimental data explanation table
表1. 实验数据说明表
图7为局部椭圆拟合在UR上的效果,可以明显看出,局部的椭圆拟合表现的还是非常稳定的。(a)和(d)子图显示的是正常活动下的拟合效果;(b)和(e)子图显示的是即将跌倒的前序动作拟合效果,由于排除了手部骨骼点,因此椭圆稳定性并没有受到手部的干扰,表明显现出了局部拟合的优势;(c)和(f)子图显示的是人体跌倒后的拟合效果,椭圆依旧表现稳定并能看出长轴指向。
图8分别显示了5个人体活动的3个特征在50帧中的变化,5个活动包括下蹲、趴下、摔倒、坐下和跑。
为验证本文方法的性能,将不同活动的三个特征都组成如图3的基于时间的运动特征,在CNN网络中学习训练,得出的结果分别与现有的方法做了比较,如表2所示。
![](//html.hanspub.org/file/95-2571628x37_hanspub.png?20240531085947225)
Figure 7. The effect of local ellipse fitting on the dataset
图7. 局部椭圆拟合在数据集上的效果图
![](//html.hanspub.org/file/95-2571628x38_hanspub.png?20240531085947225)
Figure 8. 5 human activity characteristics
图8. 5个人体活动特征图
![](Images/Table_Tmp.jpg)
Table 2. Comparison of experimental results using different methods
表2. 不同方法的实验结果比较
由表2可知,本文的方法实现了95.6%的准确率和3.7%的误判率。比现有的基于几何轮廓形状的跌倒检测方法准确率高了许多,同时误判率也降低了。
但本文方法也存在几次将跌倒行为判定为正常,可能的原因是提取骨骼点位置坐标时还是出现一定的误差,这和OpenPose算法本身的精度有关;本文的模型为了降低算法复杂程度,只取了7个骨骼点作为依据,在一些特殊角度或噪声较大的场景下,拟合的椭圆发生偏差,导致没有检测到跌倒行为,图9展示了本文模型在跌倒检测结果上的误差示例。
![](//html.hanspub.org/file/95-2571628x39_hanspub.png?20240531085947225)
Figure 9. Example of incorrect fall detection results on the dataset
图9. 数据集上跌倒检测结果错误示例
5. 总结
本文提出一个基于骨骼点改进的局部椭圆形拟合跌倒检测方法。该方法使用OpenPose算法提取人体关键骨骼点坐标,通过筛选得出7个可以进行局部椭圆拟合的骨骼点;提取椭圆和人体下落的三个特征组成一个基于时间序列的运动特征,最后通过一个浅层CNN网络进行训练判断。通过实验证明,本文方法检测准确率高达95.6%,相比于整体几何形状拟合来说,局部椭圆拟合更加稳定且精确,检测准确率更高。
但本文方法也出现了一些误判情况,可能由于OpenPose算法本身精确度有待提升,还有本文只用了7个骨骼点,对噪声还是较为敏感,后期也可通过多视角或深度数据进行进一步的改进研究。未来的工作可以包含多位老人的行为监测,该功能能够监控场景中多个人物,还可以处理一些遮挡问题。使用其他技术也是未来工作中需要探索的主题。