APP下载

基于双向循环神经网络的跌倒行为识别

2020-07-20佃松宜雒瑞森

计算机工程与设计 2020年7期
关键词:关键点双向神经网络

佃松宜,程 鹏,王 凯,雒瑞森

(四川大学 电气工程学院,四川 成都 610065)

0 引 言

跌倒行为识别的方法通常基于由传感器或相机捕获的信息,可以分为基本两类:基于可穿戴传感器和基于视觉[1]。基于可穿戴传感器的方法主要基于各种力、位置、速度和加速度传感器,可穿戴传感器可以精确和实时地测量人体的物理属性,然而,该类传感器必须与人进行物理连接,对他们的日常生活活动造成了阻碍性干预。

计算机视觉技术实现了对人体运动的非阻碍测量,最常见的基于视觉识别跌倒行为的方法是提取人体动作的特征点,该方法提供了更丰富的几何信息,简化了背景干扰的预处理[2]。文献[3]基于特征点的正则化马氏距离度量,使用隐马尔可夫模型对姿态序列动作进行分类。文献[4]定义了一个包含双脚及之间面积的动态支撑区域,提出了一种基于修正的零力矩点准则的跌倒行为识别算法。然而,上述算法均针对于RGB-D深度相机Kinects采集的三维人体特征点,并不能直接应用在大多数的视频设备(普通RGB相机)上面,实际使用时需要安装新的视频设备Kinects。

针对以上的问题,本文提出了一种基于神经网络的跌倒行为识别算法。首先,使用开源的计算机视觉库对普通RGB相机采集的动作视频进行二维人体特征点的提取,然后利用双向循环神经网络对特征序列进行识别。在新的跌倒识别数据集上的实验结果表明了该算法的有效性,优于其基准算法。

1 模型与方法

本文提出的整个算法流程如图1所示。首先,一段人体动作视频按照帧频抽帧得到输入图像(图1(a))。其次,通过开源的人体关键点识别库识别并提取人体关键点(图1(b)、图1(c))。最后,将多帧图像处理得到的关键点作为特征序列输入到双向循环神经网络中进行训练和测试(图1(d))。

图1 算法流程

1.1 人体关键点的识别和提取

OpenPose[5]是第一个在单张图像上联合检测人体躯干、手部和面部关键点(总共135个关键点)的实时系统。图2是一个OpenPose检测人体关键点的例子。常见的二维人体关键点检测库,例如Mask R-CNN[6]和Alpha-Pose[7]需要使用者自己完成大量工作——如何读取帧(视频、图像或者相机流)、可视化检测结果、结果输出文件的生成(JSON或者XML文件)等等。此外,上述库并没有包含面部和手部的关键点检测功能。OpenPose解决了上述存在的这些问题,它可以运行在不同的平台上,包括Ubuntu,Windows,Mac OSX,以及嵌入式系统(比如Nvidia Tegra TX2)。它也提供对例如CUDA GPUs,OpenCL GPUs和CPU设备等不同种类硬件的支持。使用者可以选择图像,视频,网络摄像机和IP相机流等输入,也可以选择是否显示结果或者将结果保存在硬盘上,甚至是选择只检测人体的某一个或者多个部位(躯干,面部和手部)。OpenPose由3部分组成:躯干关键点检测、手部关键点检测、面部关键点检测。躯干的关键点检测是部分的核心,基于躯干关键点的检测,可以从一些躯干部位,特别是耳朵、眼睛、鼻子和颈部粗略估计面部边界框。同样地,手部边界框由躯干的手臂关键点估计生成。

图2 OpenPose检测人体关键点

OpenPose的运行时间优于当前的其它二维关键点检测方法,同时保持着高质的性能。在一台装有Nvidia GTX 1080Ti的计算机上,帧频达到22FPS。

基于以上OpenPose的优势,本文选用该开源的计算机视觉库来识别并提取二维关键点。在人体跌倒过程中,主要是躯干的形体变化,面部和手部的形体变化较小,因此本文只使用了躯干关键点,一共25个,如图3所示。

图3 人体躯干关键点

1.2 双向循环神经网络对特征序列的识别

1.2.1 双向循环神经网络

人体动作可以看成一段连贯序列,其中时序起着重要的作用。循环神经网络[8,9]是一种处理时序相关问题能力很强的网络。为了强化循环神经网络模型对特征序列的学习能力,我们使用双向循环神经网络[10]对人体动作特征序列进行识别。双向循环神经网络是将两个独立的循环神经网络放在一起,序列以正方向输入给一个循环神经网络,而以反方向输入给另一个循环神经网络,两个循环神经网络的输出以串联的形式连接。这种双向的结构使得网络能够同时具有序列的正向和反向信息,增强了网络对顺序起重要作用的序列的学习能力。图4是普通循环神经网络(图4(a))和双向循环神经网络(图4(b))的结构图。

图4 两种循环神经网络结构

本文的网络架构如图4(b)所示。给定一个长度为T的输入序列X1∶T=(X1,X2,…,Xt,…,XT), 输出为一个类别y∈{1,…,C}。 将时刻t时网络的输入表示为Xt, 隐藏层状态表示为ht, 则时刻t时第l层的隐藏状态可以表示为

(1)

(2)

1.2.2 循环单元结构的选择

循环神经网络的参数可以通过随时间反向传播算法[11]进行学习,学习过程中的主要问题是长期依赖问题[12]。一种非常好的解决方案是引入门控机制,这一类网络可以称为基于门控的循环神经网络,两种代表分别是长短期记忆(LSTM)[9]网络和门控循环单元(GRU)网络。与LSTM相比,GRU性能相当但是更容易计算[13],因此对于本文双向循环神经网络架构中的循环神经单元结构我们选择门控循环单元GRU。图5给出了门控循环单元结构。

图5 GRU循环单元结构

(3)

其中,W*,U*,b*为可学习的网络参数。

1.2.3 双向循环神经网络的正则化

深度学习模型的关键是泛化问题。由于神经网络的拟合能力非常强,在训练集上的错误率往往可以降到非常低,从而导致过拟合,在数据量不是很大的情况下尤其如此。正则化是一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法。丢弃法Dropout[14-16]是一种常用于循环神经网络的正则化方法。

如图6所示,当在循环神经网络中应用丢弃法,不能直接对每个时刻的隐状态进行随机丢弃,这样会损害循环网络在时间维度上的记忆能力,而应当对非时间维度的连接(即非循环连接)进行随机丢弃[14,15]。然而根据贝叶斯学习的解释,丢弃法是一种对参数θ的采样[17]。每次采样的参数需要在每个时刻保持不变。因此,在对循环神经网络使用丢弃法时,需要对参数矩阵的每个元素进行随机丢弃,这种方法称为变分丢弃法[16]。图7给出了变分丢弃法的示例,虚线表示进行随机丢弃。

图6 GRU原始丢弃法

图7 GRU变分丢弃法

2 数据集与实验结果

本文方法基于标准公开数据集,并与该数据集的人体特征点识别基准算法进行了比较。

2.1 实验数据集

CMDFALL[18]跌倒行为数据集是专门针对跌倒动作制作的标准公开数据集。利用OpenPose提取了人体特征点之后,我们还需要对数据进行维度的预处理。本文网络的输入是特征点帧的连续序列,在每一帧中,特征点的x,y坐标展开成一个50维的向量(25×2),即对于长度为T的输入序列X1∶T=(X1,X2,…,Xt,…,XT),T为帧数,Xt维度为50。

2.2 实验硬件、软件及参数配置

表1、表2分别是实验环境的硬件和软件配置。

表1 实验硬件配置

表2 实验软件配置

表3是实验环境的参数配置。

表3 实验参数配置

本文算法使用框架采用Tensorflow[19],具体实现使用框架的Keras部分。双向循环神经网络对应于tf.keras.layers.Bidirectional,门控循环单元对应于tf.keras.layers.GRU,网络的正则化方法变分丢弃法对应于GRU参数中的dropout及recurrent_dropout。

2.3 实验结果

图8、图9分别是训练过程中训练集、验证集的损失和精度随迭代次数变化的曲线。由变化曲线可知,尽管 CMDFALL 数据集数据量并不大,但在使用了变分丢弃法来对网络进行正则化之后,模型的过拟合问题得到了较好的解决。

图8 loss-epoch曲线

图9 accuracy-epoch曲线

表4是本文方法与CMDFALL数据集基准算法的比较。

表4 算法比较

基准算法与本文算法的对象均是人体特征点,就精度而言,本文算法从数据集的基准算法ResTCN[20]的0.5843提高到了0.7986;同时,ResTCN的数据是来自于RGB-D深度相机Microsoft Kinects的三维特征点,本文算法直接利用开源计算机视觉库对普通RGB相机提取二维特征点进行识别,可以直接在已有的视频设备(基本为普通RGB相机)上进行开发,而不需要专门进行硬件设备的安装和更新,节省了成本。

3 结束语

本文提出了一种基于二维人体特征点视觉技术的跌倒行为识别算法。首先,使用计算机视觉库对RGB视频帧进行人体特征点的识别和提取。其次,构建双向循环神经网络对特征点构成的特征序列进行训练和识别。实验结果验证了双向循环神经网络在基于二维人体特征点识别跌倒行为的有效性。同时,与其它基于三维特征点的视觉技术需要专用的RGBD深度相机不同,本文提出的二维特征点序列识别算法可以直接应用在普通RGB相机上。

猜你喜欢

关键点双向神经网络
双向度的成长与自我实现
聚焦金属关键点
肉兔育肥抓好七个关键点
降低寄递成本需双向发力
用“双向宫排除法”解四宫数独
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
一种软开关的交错并联Buck/Boost双向DC/DC变换器
基于神经网络的拉矫机控制模型建立
机械能守恒定律应用的关键点