APP下载

基于轻量级OpenPose模型的跌倒检测算法*

2021-11-24伏娜娜刘大铭程晓婷景云云张馨芳

传感器与微系统 2021年11期
关键词:关节点网络结构卷积

伏娜娜, 刘大铭, 程晓婷, 景云云, 张馨芳

(宁夏大学 物理与电子电气工程学院,宁夏 银川 750021)

0 引 言

随着老年人口数量的增多,如何对独居老年人进行自动摔倒监测是亟待解决的问题。目前,在室内摔倒监测领域中,基于可穿戴设备和基于环境传感器等主流监测方法面临着设备复杂、成本较高等问题[1,2]。为此,引入人体姿态估计,提出了一种基于2D视频的摔倒监测算法。Fang H S等人[3]提出了区域多人姿态检测(regional multiperson pose estimation,RMPE)框架,主要使用沙漏网络进行姿态估计。Newel A等人[4]提出了一种Stacked Hourglass网络模型,利用人体16个骨骼关节点进行姿态估计。Zhe C等人[5]提出了OpenPose模型,提出了部分亲和力字段(part affinity fields,PAFs)方法,可以将预测得到的多个关节点匹配到不同人的姿态中,有效解决了多人肢干连接的问题,但OpenPose 模型仍存在很多的不足,例如模型较大,网络参数较多等。随后相继提出了很多轻量化的网络,较为经典的有MobileNets[6],ShuffleNet[7]等,这些轻量化网络以损失很小的精度为代价来大大减少网络的计算量和参数数量。

根据上述分析,为了提高姿态识别过程中的运算速度和跌倒检测的准确率,提出了一种基于轻量级OpenPose模型的跌倒检测算法。

1 算法设计

1.1 Yolov5s目标检测模型

Yolov5目标检测有部署简单、速度快等优点。本文选择Yolov5系列中深度最小,特征图宽度最小的Yolov5s网络。Yolov5s网络主要由Input,Backbone,Neck,Output四个部分组成,网络结构如图1所示。输入端采用了Mosaic数据增强的方式。Backbone结构包含Focus结构和跨阶段局部网络(cross stage partial network,CSPNet)。Focus结构包含切片操作和卷积操作,将原始608×608×3的图像输入Focus结构,采用切片和卷积操作,变为304×304×12的特征图,再经过一次32个卷积核的卷积操作,最终变为304×304×32的特征图[8]。Yolov5s设计了两种不同的CSPNet,即CSP1_X结构和CSP2_X结构。CSP1_X应用于Backbone主干网络;CSP2_X应用于Neck中,其中,X表示使用残差组件的个数。CSPNet通过不同层间的特征信息来获得更加丰富的特征图。Neck结构在FPN结构的基础上添加了路径聚合网络(path aggregation network,PAN)结构,并采用借鉴CSPNet设计的CSP2结构,加强网络特征融合的能力。输出端使用了GIOU_Loss作为损失函数,增加了相交尺度的衡量,缓解了IOU_Loss无法优化两个框不相交的问题。

图1 Yolov5s网络结构

1.2 轻量级OpenPose模型

姿态估计的可靠性直接影响到后面跌倒检测的性能和稳定性,本文选择基于PAFs的OpenPose[5]姿态估计来提取人体的骨骼关节点[9],根据实时获取的骨骼关节点信息进行后续的人体跌倒动作检测工作。OpenPose模型的网络结构如图2所示。

图2 OpenPose网络结构

OpenPose网络结构中的卷积块C(由3个连续的3×3卷积核组成的网络)代替了原始方法中的7×7卷积核。图像经过VGG19网络前10层后得到特征图F(feature maps),然后特征图F作为后面卷积神经网络的输入。人体姿态估计有多个阶段双分支的卷积神经网络,在每个阶段,上支线均用来预测关节热度图St,下支线均用来预测关节亲和域Lt,在每个阶段的后面,两个分支的预测输出融合前端的F输入到下个阶段进行预测,最终得到整个网络的关节热度图和关节亲和域。

其中,ρ1和φ1为第一阶段用于推理的卷积网络,分别对图像特征F进行处理,生成关节热度图S1=ρ1(F)和关节亲和域L1=φ1(F)。ρ1,ρt,φ1和φt均由5个卷积块和2个1×1的卷积组成。每个阶段的输入为图像特征F和前一阶段的预测结果,然后使用本阶段的卷积网络分别预测出本阶段的关节热度图和关节亲和域,如式(1)、式(2)

St=ρt(F,St-1,Lt-1),∀t≥2

(1)

Lt=φt(F,St-1,Lt-1)

(2)

为了使跌倒检测可以达到实时效果,本文使用了MobileNets[6]中深度可分离卷积的思想,将原OpenPose模型中特征提取网络VGG19中的常规卷积结构替换为深度可分离卷积结构。与标准卷积相比,这种卷积结构可以极大地减少网络模型参数。轻量级OpenPose网络的特征提取网络不再是VGG19网络的前10层,而是在MobileNetv1[6]网络结构上进行调整后得到的12层网络,如表1所示。

表1 调整后的特征提取网络结构

其中,第一层是一个传统卷积(Conv),其他11层均建立在深度可分离卷积(Conv dw)上。Conv dw_7层中的深度卷积扩张系数(dilation)设置为2,填充(padding)参数也为2,其他层的扩张系数均为1,不填充,所有卷积核的大小为3×3,并且卷积核的数量随着层数的加深而增多。

通过使用轻量级OpenPose模型,大大减少了计算量,可以有效加快运算速度,能够保证检测过程的实时性。

1.3 跌倒检测算法

轻量级OpenPose模型对人体目标检测模型输出的每一帧图片进行姿态估计,实时获取包含鼻子、肩膀、膝盖等18个关节点的人体骨架图,骨架图如图3所示。

图3 人体骨架图

计算18个骨骼关键点在图像中的坐标(xj,yj),下标j表示第j个关节点。本文选取关节点2(右肩)、关节点5(左肩)、关节点8(右胯)和关节点11(左胯)这4个点,计算这4个关节点坐标的平均值作为人体中心点的坐标值。由于人体在运动过程中,关节点的位置在不断变化,所以,根据不同帧之间人体关节点坐标的变化情况,每10帧计算一次人体中心点纵坐标的移动速度vy,vy的表达式为式(3)

式中yj10和yj1分别为第j个关节点在第十帧和第一帧时的纵坐标值;(t10-t1)为这10帧之间的时间差。vy的变化快慢可以反映人体运动的剧烈情况,跌倒属于剧烈运动,而且跌倒的过程是瞬态的,因此,根据vy的变化快慢、动作的属性以及结合人体的宽高比(aspect ratio,AR)可进行跌倒判断。

跌倒检测算法的主要步骤如下:

1)每10帧计算一次人体中心点纵坐标的移动速度vy,如果连续的vy值在小范围内波动,表示当前人体运动不剧烈,例如人站立时,人体不移动,vy不发生变化。而跌倒行为是突发的动作状态,发生过程快速剧烈,vy变化较大,因此,当连续的vy值在小范围内波动时可以排除跌倒行为。

2)如果移动速度vy大幅度变化,且vy大于一定的阈值vth时,表示当前人体运动剧烈。由于同一个跌倒行为不会重复发生,而很多其他运动(跑步、跳跃等)是可重复发生或持续发生的,所以在检测到移动速度vy周期性或持续性的变化很大时,可以排除跌倒行为。进行了多次缓慢的跌倒实验,每次跌倒需要3~4 s,每秒采集25帧图片,每10帧计算一次中心点的移动速度vy,所以在4 s内,若连续检测到10次以上vy≥vth,并且接下来的时间内仍然检测到vy≥vth时,就判断vy为持续性变化很大。在4 s内,若检测到vy≥vth和vy

3)当vy大幅度变化但不是周期性或持续性变化时,在4 s内,若连续检测到7~10次vy≥vth之后,持续检测到vy

2 实验结果分析与评估

2.1 数据集和实验环境

本文选用公共数据集MSCOCO 2017中的人体关键点检测进行人体姿态估计训练,对人体的18个骨骼关键点进行检测。用train2017进行训练,用val2017进行验证。

本文自制了一个人体动作分类的数据集,包括7类动作,分别是行走、下蹲、坐在凳子上、弯腰、前倒、后倒和随机侧倒,各类动作对应的骨架图示例如图4。每个动作采集15个视频,每个视频900帧,一共采集了94 500帧图片,105段视频,对采集的每一帧图片获取人体的18个骨骼关键点坐标,获取的关键点坐标按8︰2的比例划分为训练集和测试集,其中,75 600帧图片用来训练,18 900帧图片用来测试。训练与测试所基于的软硬件平台如表2所示。

图4 各类动作相应骨架图示例

表2 软硬件实验平台

2.2 实验结果分析

本文用单目相机进行了测试实验,测试包括3种跌倒(fall)动作和4种正常(normal)动作,跌倒动作分别是:向前倒、向后倒和随机侧倒;正常动作分别是:下蹲、弯腰、行走和坐。实验测试中,如果检测到人体跌倒,则显示fall,否则显示normal。一共邀请了5名实验者(3个男生和2个女生),为了使实验具有更强的说服力,这里选择实验者身高体重差异较大,体重范围为40~75 kg,身高范围为1.4~1.9 m。每人分别对上述的7种动作各做20次,即测试实验共做了5×7×20次,其中跌倒有300次,正常动作400次,在家居环境进行模拟实验。

实验中,为了使拍摄角度能够尽可能覆盖人体的整个活动范围,将单目RGB摄像头固定在距地面1.6 m处,相机的俯视角设置为30°。图5是测试实验中成功检测到跌倒动作(a)和正常动作(b)的效果图。表3为测试实验的具体数据结果。

图5 实验结果

表3 实验数据结果

由以上的实验结果可知,当摄像头在固定位置处时,基于轻量级OpenPose模型的跌倒检测算法的检测准确率平均值达到95.43 %,运行速度最高达到25 fps,对人体各个关键点的识别效果较好,尤其对站立、行走等类型的动作识别效果好,跌倒、下蹲等动作的个别关键点因为遮挡不能很好识别,这也是需要待解决的问题。而在相同配置环境下,使用OpenPose模型的跌倒检测算法的运行速度为3.3 fps。轻量级OpenPose模型的文件大小为7.5 M,而OpenPose模型的文件大小为200 M。相比之下,轻量级网络大大减少了计算量,使用轻量级网络能够保证跌倒检测的实时性。

为了验证算法的有效性,用准确度Ac(accuracy)[10]、特异度Sp(specifity)[10]和灵敏度Se(sensitivity)[10]三种性能指标评估提出算法的性能,并与一些其他的跌倒检测算法性能进行了对比[11]。三种性能指标的计算方式为式(4)~式(6)

不同跌倒检测算法的对比如表4所示。

表4 不同跌倒检测算法结果对比 %

通过表4可知,本文算法有较高的特异度,表明检测的误报率低。虽然本文算法的灵敏度和准确率均低于文献[13],但是文献[13]提取人体背景使用帧差法,对环境要求较高,对噪声较为敏感,容易受到周围运动物体的影响。文献[14]中使用Kinect深度相机,成本比普通RGB相机贵,且体积也大。文献[10]以相对较多的计算开销为代价来提升算法性能。文献[12]容易受光照条件的影响,容易干扰背景建模和目标提取。本文方法不受周围环境的影响,使用常见的单目RGB摄像头作为传感器采集数据,相比于深度相机有较好的适用性。通过对成本、性能指标等的比较,本文方法有存在一定的优越性。

3 结 论

从大量的实验结果表明:本文算法的准确率达到了95.43 %,网络的运算速度达到了25 fps。使用Yolov5s人体目标检测网络提高了识别准确率,使用轻量化网络结构和传统的全卷积网络结构相比,有效减少了运算参数,加快了模型的运算速度。为了更好、更方便地对老年人日常活动进行实时监测,可以将模型部署在嵌入式NVIDIA Jetson Xavier nx上,再将嵌入式开发板安装在小车或者机器人上,通过路径规划和目标跟踪等实现移动端实时监测。

猜你喜欢

关节点网络结构卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
搞好新形势下军营美术活动需把握的关节点
RGBD人体行为识别中的自适应特征选择方法
基于互信息的贝叶斯网络结构学习
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用
沪港通下A+ H股票网络结构演化的实证分析