基于卷积神经网络和XGBoost的摔倒检测 下载: 1066次
1 引言
2019年国家统计局发布的“新中国成立70周年经济社会发展成就系列报告”[1]显示:中国开始步入老龄化社会。如今年轻人工作繁忙,使得家中老人得不到应有的照顾。如果老人跌倒后第一时间就得到警报和处理,能有效地降低摔倒所造成的伤害。
研究人员提出了多种摔倒检测的方法,概括如下:1)采用佩戴传感器(加速度传感器、陀螺仪等)的方式[2-5];2)基于多传感器融合的方法[6-8];3)基于视频的检测方法[9-12]。第三种方法目前比较流行,也是本文主要关注的方法,它的核心技术在于算法,主要包括:基于高斯混合模型的摔倒检测算法;使用全卷积网络对图像进行人体分割,利用人体长宽比和CNN (convolutional neural network)分类器对摔倒状况进行判定的算法;基于Kinect骨架追踪的摔倒检测算法。
本文提出一种基于卷积神经网络结合XGBoost[13]的摔倒检测算法,其优点是不受穿戴设备的限制,且准确率高,鲁棒性强,具有实时性。
2 算法描述
本文算法主要步骤如下:首先利用优化的YOLO算法检测出人体区域,利用区域多人姿态估计(RMPE)[14-16]网络提取出人体关节点(头部、髋部、膝盖、脚等)的坐标,据此计算出关节的角度等信息,通过计算提取出特征向量;最后将所得特征向量输入到XGBoost模型进行训练,实现人体的摔倒检测。算法总体的流程如
2.1 优化的YOLO-v3
为了提高人体区域检测的稳定性,本文在原有的YOLO-v3[17-18]模型基础上添加了squeeze-and-excitation(SE)模块[19],建立了不同特征通道之间的相互依赖关系,其核心思想是为每个特征通道学习一个权重值。
SE模块主要由三个部分组成:squeeze、excitation和scale。squeeze是为每个通道计算一个全局特征值,实现原理为全局平均池化,具体计算式为
式中:uc代表c个特征通道,每个特征通道的尺寸为H×W;Fsq为squeeze函数;zc为c个特征通道生成的全局信息。excitation是通过神经网络来学习网络通道的依赖性,具体计算式为
式中:g代表全连接层结构函数;σ和δ代表两个激活函数,分别是Sigmoid函数和ReLU函数;W为权重系数;W1、W2代表两个全连接层的参数;Fex表示excitation函数;s表示各特征通道的权重。经过excitation之后得到了维度为1×1×c的s,这个s也就是SE的核心,它刻划了不同特征通道之间的联系,代表每一个通道的权重。最后一步scale则是将上一步计算得到的s乘到对应的特征通道上,具体计算式为
式中:sc为经过(2)式得到的s的第c个维度的值;Fscale表示scale函数;
2.2 区域多人姿态估计
文献[
14-15]采用对称空间变换器网络(SSTN)对检测区域人体进行关节特征点的定位计算,使用空间反变换器网络(SDTN)把人体关节特征点重新映射回原始图像坐标系中,为了提升训练的质量,又加入了并行单人检测(parallel SPPE)和姿态引导区域建议生成器(PGPG)。人体姿态估计的结构图如
SDTN在自动选择感兴趣区域方面表现出了良好的性能,它用来提取高质量的人体区域。从数学角度看,SDTN其实是起了一个二维放射变换的作用。首先,空间变换网络(STN)可以表示为
式中:θ1,θ2和θ3是构成空间变换投影矩阵的子向量;
式中:γ1、γ2、γ3是构成空间反变换投影矩阵的子向量。由于SDTN是STN的逆过程,于是可以得到
损失函数J的SDTN反向传播公式
和
式中:
Parallel SPPE分支和SPPE是并行的,训练时这个分支的网络权重是固定的,其作用是当输出的姿态与ground truth之间产生比较大的误差时,通过返回较大的loss来辅助STN进行正确的变换。PGPG起到了数据增强的作用,提高了网络性能。网络最后使用了参数化的非极大值抑制,所使用的姿态距离度量公式为
式中:Pa和Pb分别是预测出的姿态和参考姿态,其中预测姿态Pa由关节坐标和置信度决定;η为阈值;d(·)为姿态距离度量函数;Λ为函数d(·)的一个参数集合;Γ[d(·)]用来判断d(·)是否满足阈值η,如果d(·)小于η,那么Γ[d(·)]的结果就等于1。
2.3 XGBoost模型与损失函数
XGBoost[16]属于Boosting算法的一种,是一种提升树模型,即基分类器为树模型,其模型表达式为
式中:fk表示第k个基学习器(树模型);K为基学习器总数;
式中:l为损失函数,体现了预测值与真实值之间的误差,其形式不是固定的,只要满足二阶可导即可;Ω为正则函数,具体形式为
式中:T代表叶子节点的数量; ω表示叶子权重矩阵;γ和λ为正则项系数。根据前面所述,新增加的树是为了拟合截至上一次预测的残差,因此,假设当前为第t棵树,
于是,在只考虑本轮的情况下,优化目标函数可写成
其目标是解出ft使得此轮的目标函数最小。对(15)式进行泰勒二阶展开可得
式中:go=
为了方便计算,本文通过遍历叶子节点的方法来替代遍历所有样本的方法,最终算出ω中最优解ω*以及目标函数的最小值:
式中:Lobj表示目标函数的最优值;Gz为∑gi;Hz为∑hi。
针对摔倒检测多分类任务,本文需要改进XGBoost的回归部分,即将每棵树的叶子节点设置为需要分类的个数(本文将人体姿态分为3类:摔倒、站立、坐),并且使用Softmax函数,最后经过所有基学习器(树)的累加即可得到最终的打分值,进而给出分类结果。
2.4 特征向量提取
经过人体姿态检测网络之后,可以得到人体的17个关节点坐标。在特征提取之前,建立以人体头部为原点的坐标系,得到关节点的坐标,首先计算人体的宽高比,然后通过计算得到大臂、小臂、大腿和小腿的向量表示,最后根据大臂和小臂计算出肘部关节的弯曲角度。同理,可以得到两个肘部角度和两个膝关节的角度共4个关节角度值。文献[ 10]主要使用了人的宽高比作为依据外加CNN分类,为了提高准确度,本文增加了关节的角度,这对于判别人体姿态是十分有帮助的。
人体上半身和下半身的相对位置也是判别人体姿态的一个重要指标,为了表示此相对位置,本文先计算了人体上半身的中心坐标以及下半身的中心坐标,然后计算这两个中心坐标的相对角度以及大小,通过这两个值来表示相对位置关系。
图 4. 部分特征值选取示意图。(a)部分关节点以及关节角度;(b)躯干相对位置向量
Fig. 4. Schematic diagram of partial eigenvalue selection. (a) Some joints and joint angles; (b) body relative position vector
综上,本文共选取了7个特征值组成人体的特征向量,其中包括4个关节角度,1个高宽比,以及躯干相对位置向量的角度和大小。
3 实验结果与分析
3.1 数据准备
本文使用的数据集为自建数据集。首先,设立三角支架和相机,模拟人的多种形态,其中主要包括站立行走、坐姿以及跌倒,即将训练样本分为三种姿态。本次实验共准备了3679张照片作为训练集,其中站立行走姿态样本1289张,坐姿931张以及跌倒姿态1459张,图像尺寸为960 pixel×544 pixel,部分样本如
3.2 实验结果
本次实验的测试集由750张照片组成,其中跌倒、坐姿以及站立姿态各250张。YOLO模型训练过程中学习速率设置为0.001,优化过程中的动量参数设为0.9,权重衰减正则项为0.0005,一批训练样本的样本数量为1,最大样本数量为500200,即训练次数达到500200次后停止训练。在YOLO中的前两层卷积层中加入了SE 模块,SE模块中的全连接层的隐含缩放参数设置为16。对于RMPE网络,训练的学习速率设为0.0025,优化方式采用RMSProp,训练次数epoch设为500。XGBoost模型的迭代次数设置为100,最大树的深度设为6,学习速率为0.1,正则项为L2正则,这样的设置是为了降低模型的复杂度,避免过拟合的情况发生。
图 5. 训样样本(站立)。(a)斜侧方向行走;(b)背向行走;(c)侧向行走;(d)正面站立
Fig. 5. Training samples (standing). (a) Walking in oblique direction; (b) backward walking; (c) lateral walking; (d) front standing
图 6. 训样样本(跌倒)。(a)正面半跌倒;(b)侧面半跌倒;(c)平躺;(d)俯卧
Fig. 6. Training sample (falling). (a) Front half fall; (b) side half fall; (c) lie; (d) prostration
图 7. 训样样本(坐)。(a)左侧坐姿;(b)右侧坐姿
Fig. 7. Training sample (sitting). (a) Sitting posture of left; (b) sitting posture of right
首先,将输入的图片经过YOLO模型和人体姿态估计后,得到图像中人体的骨架信息,如
在实际场景中,针对不同的摔倒姿态可以得到如
图 8. 姿态估计结果示例。(a)跌倒姿态骨骼检测;(b)坐姿骨骼检测;(c)站姿骨骼检测;(d)人体站姿17个关节点坐标分布
Fig. 8. Examples of pose estimation results. (a) Fall posture bone detection; (b) sitting posture bone detection; (c) standing posture bone detection; (d) coordinate distribution of 17 joints of standing posture of human body
在测试集上最终得到如
为了评判模型对于跌倒与非跌倒的检测性能,本文采用准确率、召回率和F1值作为评价参考。首先定义混淆矩阵,见
根据
图 10. 实际场景检测结果。(a)半跌倒;(b)侧卧跌倒
Fig. 10. Test results of actual scene. (a) Half fall; (b) fall on one side
表 1. 实验结果
Table 1. Experimental results
|
表 2. 混淆矩阵
Table 2. Confusion matrix
|
本文算法分类性能的评价指标如
表 3. 分类评价指标
Table 3. Classification evaluation indexes
|
图 11. 不同算法的对比。(a)相同姿态下本文的算法;(b)文献[ 10]检测不佳的姿态
Fig. 11. Comparison of different algorithms. (a) Algorithm in this paper under the same posture; (b) poor posture detected in Ref. [10]
与已有的算法相比,文献[
10]利用人体的宽高比进行基本的判断,对于利用人体宽高比无法判断的情况使用CNN进行判别,为了提升准确率,此算法需要大量的数据对神经网络进行训练,训练集为10000张样本(5000张正样本、5000张负样本)、测试集为1919张样本的情况下的结果对应
表 4. 结果对比
Table 4. Comparison of results%
|
4 结论
提出了一种基于卷积神经网络和XGBoost集成分类器的人体摔倒检测算法,该算法对YOLO-v3进行了改进,提高了网络的鲁棒性,根据人体特征点计算关节角度以及躯干的相对位置,组成特征向量,最后将特征向量输入XGBoost模型进行训练,实现人体摔倒检测。通过充分利用人体信息,本文算法能够识别出更多类别的跌倒姿态,实验结果表明本文算法相较于近年来常用的算法有着更高的准确性和更强的鲁棒性。
[1] 国家统计局. 人口总量平稳增长人口素质显著提升: 新中国成立70周年经济社会发展成就系列报告之二十[EB/OL]. ( 2019-08-22)[2020-03-13]. http:∥www.stats.gov.cn/ztjc/zthd/bwcxljsm/70znxc/201908/t20190822_1692901.html.
National bureau of statistics. Steady growth of total population and significant improvement of population quality: the 20th report series on the achievements of economic and social development in the 70th anniversary of the founding of new China[EB/OL]. ( 2019-08-22)[2020-03-13]. http:∥www.stats.gov.cn/ztjc/zthd/bwcxljsm/70znxc/201908/t20190822_1692901.html.
[2] Bianchi F, Redmond S J, Narayanan M R, et al. Barometric pressure and triaxial accelerometry-based Falls event detection[J]. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2010, 18(6): 619-627.
[4] Zhao G R, Mei Z Y, Liang D, et al. Exploration and implementation of a pre-impact fall recognition method based on an inertial body sensor network[J]. Sensors, 2012, 12(11): 15338-15355.
[5] Tamura T, Yoshimura T, Sekine M, et al. A wearable airbag to prevent fall injuries[J]. IEEE Transactions on Information Technology in Biomedicine, 2009, 13(6): 910-914.
[6] Suryadevara N K, Gaddam A, Rayudu R K, et al. Wireless sensors network based safe home to care elderly people: behaviour detection[J]. Sensors and Actuators A: Physical, 2012, 186: 277-283.
[8] Zigel Y, Litvak D, Gannot I. A method for automatic fall detection of elderly people using floor vibrations and sound: proof of concept on human mimicking doll Falls[J]. IEEE Transactions on Biomedical Engineering, 2009, 56(12): 2858-2867.
[9] 白云飞, 李璟, 何金龙. 基于嵌入式视频监控的摔倒检测系统的设计[J]. 电视技术, 2014, 38(15): 231-236.
Bai Y F, Li J, He J L. Rate-control algorithm of H. 264/AVC based human visual system[J]. Video Engineering, 2014, 38(15): 231-236.
[10] 赵斌, 鲍天龙, 朱明. 基于图像语义分割和CNN模型的老人跌倒检测[J]. 计算机系统应用, 2017, 26(10): 213-218.
Zhao B, Bao T L, Zhu M. Elderly falling detection based on image semantic segmentation and CNN model[J]. Computer Systems & Applications, 2017, 26(10): 213-218.
[11] 王君泽, 朱小龙, 瞿畅. 基于Kinect骨架追踪的人体摔倒自动检测[J]. 上海交通大学学报, 2015, 49(9): 1359-1365.
Wang J Z, Zhu X L, Qu C. Automatic fall detection using human skeleton tracking algorithm based on kinect sensor[J]. Journal of Shanghai Jiao Tong University, 2015, 49(9): 1359-1365.
[12] 吴沛佶, 梅雪, 何毅, 等. 基于深度网络模型的视频序列中异常行为的检测方法[J]. 激光与光电子学进展, 2019, 56(13): 131101.
[13] ChenT, Guestrin C. Xgboost: a scalable tree boosting system[EB/OL]. ( 2016-06-10) [2020-03-13]. https:∥arxiv.org/abs/1603. 02754 .
[14] Fang HS, Xie SQ, TaiY, et al. ( 2018-02-04) [2020-03-13]. https:∥arxiv.org/abs/1612. 00137.
[15] Xiu YL, Li JF, Wang HY, et al. ( 2018-07-02) [2020-03-13]. https:∥arxiv.org/abs/1802. 00977.
[16] 闫芬婷, 王鹏, 吕志刚, 等. 基于视频的实时多人姿态估计方法[J]. 激光与光电子学进展, 2020, 57(2): 021006.
[17] RedmonJ, Farhadi A. YOLOv3: an incremental improvement[EB/OL]. ( 2018-04-08) [2020-03-13]. https:∥arxiv.org/abs/1804. 02767.
[18] 鞠默然, 罗海波, 王仲博, 等. 改进的YOLO V3算法及其在小目标检测中的应用[J]. 光学学报, 2019, 39(7): 0715004.
[19] HuJ, ShenL, AlbanieS, et al. ( 2019-05-16)[2020-03-13]. org/abs/1709. 01507. https://arxiv.
[20] 陈玉阳. 监控视频事件检测算法研究[D]. 北京: 北京邮电大学, 2013.
Chen YY. Event detection algorithms for video surveillance[D]. Beijing: Beijing University of Posts and Telecommunications, 2013.
[21] 王鹏, 王慧, 孔凡宁, 等. 基于FPGA的视频监控摔倒检测报警系统[J]. 电机与控制学报, 2019, 23(8): 122-128.
Wang P, Wang H, Kong F N, et al. Video surveillance fall detection and alarm system in FPGA[J]. Electric Machines and Control, 2019, 23(8): 122-128.
Article Outline
赵心驰, 胡岸明, 何为. 基于卷积神经网络和XGBoost的摔倒检测[J]. 激光与光电子学进展, 2020, 57(16): 161024. Xinchi Zhao, Anming Hu, Wei He. Fall Detection Based on Convolutional Neural Network and XGBoost[J]. Laser & Optoelectronics Progress, 2020, 57(16): 161024.