APP下载

基于二维骨架运动特征向量的行为识别∗

2020-11-02肖利雪冀敏杰

计算机与数字工程 2020年9期
关键词:关节点特征向量骨架

肖利雪 冀敏杰

(西安邮电大学计算机学院 西安 710121)

1 引言

随着监控摄的普及,社会治安越来越依靠监控视频[1],因此计算机视觉成为大数据时代下的一个备受关注领域。其中人体行为识别已经成为计算机视觉领域中的热点问题[2]。人体行为广泛应用于行为监控[3]、体育比赛、老年人监护[4]以及健康状况评估。其中,行为监控是一种典型的应用,常见的行为识别方法只要有两种类:基于图像分析[5~7]和基于可穿戴的传感器设备[8~10],由于后者对硬件的依赖性较高,成本开销较大,本文采用了后者。

目前大量研究都是围绕提高人体行为的识别率而展开的。为了取得较高的行为识别率,Oua⁃nane A 等[11]提出对视频图像的每一帧进行外观形状的特征提取形成一个特征袋,将特征袋与骨架特征相结合进行K-means特征融合,获得攻击性特征编码序列,通过编码序列对攻击性行为识别。Pei Xiaomin等[12]提出时空特征融合深度学习网络人体行为识别方法,采用多视角信息建立人体骨架几何不变性特征,结合CNN(Convolutional Neural Net⁃work)[13]学习到的局部空域特征进行LSTM(Long Short Term Memory)网络学习骨架空域节点之间的相关性特征,作用于时域的LSTM[14]网络学习骨架序列时空关联性特征,实现人体行为识别。M.Eichner 等[15]基于对Ramanan 图形结构模型的扩展,采用图像的边缘信息和区域信息对人体上半身姿势进行识别,准确地对人体运动姿势进行描述。基于计算机视觉行为识别分析的特征提取最初主要采用的人体轮廓作为姿势特征表达,而人体轮廓的提取主要描述了目标人物的整体运动特征,忽略了人体各个部位的细节变化所发生的行为动作,因而轮廓特征不能表达人体行为中各式各样的行为动作。在进行人体行为识别分类时,采用统计学习理论基本上不涉及概率测度的定义及大数定律。它避免了人工神经网络[16~17]等方法的网络结构选择、过学习和欠学习以及局部极小等问题。基于该理论发展的XGBoost[18~19]作为一种支持并行化的有监督模型算法已经被应用于各种数据的分类中[14~17],其根本是逻辑回归树的集合,将所有树的结果集合在一起作为最终的预测值,然而在数据采集中常常无法准确的控制视频的帧长。因此在构建特征向量时会产生训练样本不平衡问题。因此采用w-XGboost 对人体行为进行识别。在人体行为识别中由于体形之间的差异相同动作骨架信息依然存在较大的差异,因此对人体骨架信息进行特征向量的构建实现人体行为的分类和识别。

越来越多的技术能够实现从二维图像中识别出执行人的骨架,2017 年卡耐基梅隆大学的研究人员公开了OpenPose[20]的人体骨架识别系统的原代码,实现对监控视频下的目标人物的实时跟踪,它可以在RGB 视频中捕捉到COCO 类型的人体骨架信息,同时可以提供场景中人体关节点(Joints)信息。本文充分利用了OpenPose 提供的二维人体骨架信息来提取有效人体运动特征构建运动特征向量。同时,采用改进后的w-XGBoost算法对人体行为进行分类识别。本文的主要贡献:

1)提出一种基于二维骨架的运动行为识别算法,该算法在构建特征向量工程时只采用OpenPose输出的人体骨架信息,而不需要采用硬件传感器进行行为识别信息采集的辅助工具。

2)提出在创建运动特征向量时,引入伐里农算法[21]将人体运动变化程度进行向量特征的构建,还包括人体变化角速度和距离差,通过特征向量实现对人体行为的识别。

3)改进了w-XGBoost算法,通过对训练样本数量进行特征加权实现样本的类别平衡,从而提高人体行为识别的准确性。

2 人体运动行为识别

2.1 COCO骨架模型

在OpenPose骨架提取中,采用COCO模式对视频流进行2D 骨架进行提取,获取人体关节点信息。人体骨架由18 个关节点,17 个肢体向量构成人体骨架图如图1所示。

图1 OpenPose骨架信息图像

让S=(V,E)表示两个人体骨架信息,其中V={v0,v1,…,v17}表示的是关节点的位置集合,E={e0,e1,…,e17}表示刚性肢体向量的集合。

定义1关节位置(Joint positions-JP),在第t帧视频中第j 个关节点的位置可以定义为vj(t)=(xtj,ytj),关节点的位置定义为vi(t)=(xti,yti),其中j,i∈{0,1,…,17}。直接将关节位置随着时间的变化作为行为的一种描述子。

定义2关节向量(Joint Vector-JV),对肢体的有效部分进行肢体向量提取,表示方式为eij(t),其中eij(t)=vj(t)-vi(t),其中j,i∈{0,1,…,17}。

2.2 数据预处理

由于环境复杂度回二维图像的影响和人体自遮挡会导致OpenPose 在提取获得的2D 人体骨架信息时产生数据缺失。因此在提取了人体骨架信息后需要对确实信息进行预测,本文采用三次数据预处理。

1)骨架信息数据清洗

针对复杂环境中出现人体骨架信息误测,会出现多余的骨架信息,主要是将视频流中多余的人或错误预测出的骨架进行清洗,获取易于特征提取的视频数据流。

2)攻击者的自遮挡导致数据缺失

为了保留人体整体姿态不变采用人体对称进行缺失值填充。

3)骨架信息缺失值预测

由于环境的复杂性导致关节点数据的丢失将会影响我们对攻击性行为的特征分析和提取。在人体骨架提取中,数据的缺失是随机的甚至会发生在相邻的几帧中,而且视频流中骨架信息特征值是波动性较大的连续性变化,因此采用K 最近邻(k-NearestNeighbor,kNN)算法进行缺失值预测,采用k=10作为最相近的临近样本预测数。

3 运动特征矢量的构建

通过OpenPose 获得的人体骨架关节点之间存在较大的相关性如图2,并且用关节点信息直接进行人体行为分类时由于身高、人与镜头的距离之间的不同会产生不同的特征向量,所以直接对关节点进行人体行为识别时需要对人体关节点进行归一化处理,但这个归一化的标准很难确定。

图2 人体骨架关节点之间相关关系

因此,本文提出人体运动特征向量主要由关节环节之间角度变化和重心运动速度作为人体行为识别的特征向量。特征向量元素之间的相关关系如图3所示。

3.1 人体重心计算

在视频流中将攻击者抽象成一个“质点”,而忽略攻击者自身的形态变化,通过计算这个“质点”在视频流中的位移变化信息来代表人的运动状态信息。根据人体运动学原理,人体重心的位置随人体的位移和姿态变化而发生改变。因此,在特征提取时我们用人体的重心来代表这个“质点”,将重心变化轨迹作为人体发不同运动时的运动特征点进行分析。根据人体重心变化和时序性运动轨迹特征,我们可以区分人体是在运动中还是处于静止状态。

图3 特征向量元素之间的相关关系

定义3人体全部环节所受到的重力的合力的作用点叫做人体的重心。

伐里农定理[21](varignon's theorem):物体各部分相对于某轴力矩的代数和就等于该物体总重量对该轴的力矩。即:

其中,(xn,yn)表示人体重心坐标,Pm表示人体第m环节的点总重心的概率和环节重心的坐标。

3.2 人体运动角度变换

在视频流中,攻击者在每一帧中的姿态变化可以看作是攻击者发出攻击行为时的原子动作,通过对原子动作的分析,获取攻击者在发出攻击时的变化特征。人体行为可以看作是几个典型的关键帧组成,而其他帧都可以看作是这几个关键帧的过渡。本文主要采用当前帧与过去的5 帧之间的骨架旋转角变化特征对攻击者进行攻击性特征提取。针对当前帧和该帧的之前5 帧之间攻击者的各个骨骼环节在时域和空域上的旋转角变化最为攻击性行为特征。人体运动时关节角度变化构建旋转角:目标人物大臂和小臂夹角的角速度变化、目标人物大腿和小腿夹角的角速度变化、目标人物臀部中心到头部的向量与竖直方向向量的夹角、身体与手腕呈现的角速度、身体与脚腕呈现的角速度。计算公式为式(3)、(4):

其中,v1(t+1)-v1(t)>0 表示以视频帧的右侧为正方向,而v1(t+1)-v1(t)<0 表示以视频帧的左侧为正方向。

4 w-XGBoost算法

在交互行为识别的过程中,通常会根据特征描述的数据特征点进行识别方法的判断与选择。在本文中,采用w-XGBoost 对特征向量进行分类训练。XGBoost算法是对XGBoost算法的加权平衡样本数量的改进算法,采用树形结构对构建的特征向量进行分类。在训练模型时由于在采集数据时视频中人的动作数据的时长无法限定,因此采集的样本存在样本不平衡的问题,对此问题采用样本加权对样本特征的平衡性进行修正。

Step1:获取视频流人体骨架信息关节点信息;

Step2:对骨架关节点信息进行攻击性行为特征向量的构建;

Step3:对于多分类样本种类数量不平衡问题进行种类加权,其中N 表示样本种类,nkind表示这类的样本数量,Mˉ表示样本平均数;α为经验值,一般为1.5。原理如式(5)~(7):

5 实验结果

为了验证特征向量的有效性,本文采用两个常用的视频行为分析数据集Weizmann和KTH。数据集Weizmann 包含数据库包含了10 个动作(bend,jack,jump,pjump,run,side,skip,walk,wave1,wave2),每个动作有9 个不同的样本。视频的视角是固定的,背景相对简单,每一帧中只有1 个人做动作。数据库中标定数据除了类别标记外还包括:前景的行为人剪影和用于背景抽取的背景序列。数据集KTH 数据库包括在4 个不同场景下25 个人完成的6 类动作(walking,jogging,running,boxing,hand waving and hand clapping)共计2391 个视频样本,是当时拍摄的最大的人体动作数据库,它使得采用同样的输入数据对不同算法的性能作系统的评估成为可能。数据库的视频样本中包含了尺度变化、衣着变化和光照变化,但其背景比较单一,相机也是固定的。图4 表示Weizmann 数据集上的骨架识别结果。图5 表示KTH 数据集上的骨架识别结果。

图4 Weizmann数据集上的骨架识别结果

图5 Weizmann数据集上的骨架识别结果

本次实验采用w-XGBoost 算法对人体行为特征进行识别,采取交叉验证算法对数据库进行测试是实验。实验所用计算机硬件配置为Intel(R)Core(TM)i7-6700HQ CPU @ 2.60GHz 2.59GHz,8 GB内存,软件环境为64 位Windows10 操作系统下使用Visual Studio 2015平台上完成。

5.1 评价指标

实验中,同时采用精确度(Precision)、召回率(Recall)和F 值(F-measure),支持数(support)4 个评价指标对所改进的算法进行了有效性评价。精确度表示算法对动作预测的准确比例,一般来说正确率越高,分类器越好。召回率表示覆盖面的度量,度量有多个正例被分为正例。F 值是一种综合评价指标,是精确度和召回率的加权调和平均值,F值越高说明实验方法越有效,支持数表示每种行为样本数量。如式(8)~(10)所示:

对于二分类问题来说,TP 对应于被分类模型正确预测的正样本数;FP 对应于被分类模型错误预测为正类的负样本;FN 为对应于被分类模型错误预测为负类的正样本数。这些公式可以推广得到多分类问题中。

表1 真实数据集信息

5.2 算法性能比较

为了验证构建的特征向量的有效性,本文选择XGBoost算法和w-XGBoost算法进行比较。对于每个数据集采用XGBoost 算法中自带的交叉验证算法,实验采用学习率为0.15,逻辑回归树的最大深度为12,采用60%数据集进行采样训练。注意在此过程中保持各个集合中的数据类别比例与原数据集相同,实验结果分别如表2所示。

由表2 可以看出将w-XGBoost 分类模型应用于人体行为识别,在Weizmann 数据集和KTH 数据集上F 值整体评估达到94%,同时准确率和召唤率也都较高,试验结果表明采用w-XGBoost分类模型方法在人体行为识别分类上具有很好的分类效果。相较于XGBoost 分类算法模型,本文提出的算法能够实现对视频样本特征向量的平衡,行为识别准确率达到94.以上。

6 结语

本文提出了基于二维骨架运动特征向量的行为识别。首先,采用传统的机器学习算法对人体骨架缺失信息进行预测填充获得完整的骨架信息。然后,对人体骨架信息进行特征向量的构建,主要分析人体运动时关节之间的角度变化和人体运动时重心的变化。最后,对于视频流中获取的特征向量个数进行平衡,采用改进的w-XGBoost分类模型实现对人体行为的分类。实验表明本文提出的运动特征向量和改进w-XGBoost 对能够有效地对人体行为进行识别。

表2 XGBoost和w-XGBoost算法在数据集Weizmann和KTH测试结果

猜你喜欢

关节点特征向量骨架
基于关节点数据关注RGB视频的双人交互行为识别
浅谈管状骨架喷涂方法
汽车用减震件过盈配合骨架装配模具及装配技术
克罗内克积的特征向量
高中数学特征值和特征向量解题策略
“超级大陆”发现新物种完整骨架
基于人体行为模型的跌倒行为检测方法①
三个高阶微分方程的解法研究
结构化:向儿童思维更深处漫溯
周博士考察拾零(六十六)日光温室前屋面开机具作业门处骨架的处理方法