徐寅鹏 臧严 李秋洁

摘要:借助MSRC-12人体动作数据集中的动作样本数据,选取80个不同人体的相同动作序列作为训练数据,构建动作模板,选取除上述80个样本外的400个动作序列作为测试数据,分别提取两者骨骼向量的角度特征,运用动态时间规整算法(DTW)进行模板匹配,从而识别出人体典型动作。实验结果表明,不同人体执行的同一动作的多个样本作为训练模板时能够有效识别人体动作,但是在输入的动作序列与模板在时间上有一定差距时、次要部位的角度特征的变化占主要地位时会影响识别效果。

关键词:关节数据;动作识别;特征提取;DTW

中图分类号:TP3        文献标识码:A

文章编号:1009-3044(2019)27-0200-04

1 引言

人体行为识别是一个多学科交叉的研究方向,涉及图像处理、计算机视觉、模式识别、机器学习和人工智能等多个学科, 是计算机视觉领域的重要研究课题之一。随着数字图像处理和智能硬件制造技术的飞速发展, 人体行为识别在智能视频监控、自然人机交互、智能家居和虚拟现实等领域具有广泛的应用前景[1]。

手势识别主要包括静态手势识别和动态手势识别。静态手势是指静止不动的手的状态,其识别方法主要包括模板匹配等。模板匹配是通过计算待识别的手势和手势模板库中的手势模板的相似度进行识别的,当相似度达到设定值时,则认为待识别手势就是该模板手势。Hernandez等人采用模板匹配的方法,采集了176个手语词汇集,对美国手语进行动作识别。动态手势是由一帧一帧的手势序列组成的,主要的识别算法有动态时间规整(DTW)、隐马尔科夫模型(HMM)、支持向量机(SVM)、AdaBoost算法、人工神经网络(ANNs)等。王兵等人采用基于像素分类的指尖检测算法找到指尖的个数,对人手的运动轨迹进行分析,并针对运动轨迹中运动方向的变化,提取了动态手势的运动方向变化角度作为特征,采用隐马尔科夫模型进行训练和识别各个手势[2]。

本课题主要研究基于关节数据的人体动作识别,提取多个具有典型区分度的角度特征,运用动态时间规整算法(DTW)进行模板匹配识别典型人体动作。

2 人体关节数据集

2.1 MSRC-12动作数据集

本课题采用的是MSRC-12(Microsoft Research Cambridge-12)人体动作数据集。MSRC-12动作数据集由人体各个部位的骨骼数据序列组成,是由微软研究院剑桥大学计算机实验室制作的,是由Kohli[3]等通过Kinect体感设备训练采集的。

Kinect是一款融合了许多先进视觉技术的新一代体感交互设备,它的硬件集合了声、电、光以及机械学等多个领域的先进技术,其主要的零部件有将近上百个,是目前电子产品中工艺极为复杂的一款[4]。

2.2 数据集内容

MSRC-12动作数据集是由30个人执行12类动作而采集的人体坐标数据。在不同的引导机制下,不同的人执行同一个动作,每个动作重复了多次,包括594个动作序列,总计6244个动作实例。数据集的每一帧数据都是由Kinect采集的人体20个骨骼关节点的坐标组成的,动作实例就是由这20个骨骼关节点的坐标随时间变化的序列组成[5]。20个骨骼关节点如图1所示。

MSRC-12动作数据集包含594个动作序列(存储在594个csv文件中)和594个动作标签文件(存储在594个tagstream文件中)。其中csv和tagstream文件的命名方式统一为:P[1]_[2]_[3]_P[4].[csv][tagstream],其中[1]和[2]表示存储的动作序列的引导机制,[3]表示存储的动作序列的类别,[4]表示执行动作的人的编号。

2.3 典型動作介绍

数据集总共有12类动作,本课题的实验就是基于其中4个动作的样本数据进行模板匹配,从而识别出人体典型动作的。定义的典型动作分别为蹲下、投掷、举起并伸展双臂和弯腰,如图2所示。

3 基于关节数据的人体动作识别

3.1 基本流程

动作识别的基本思路为借助MSRC-12动作数据集中的样本数据,采用DTW算法将样本训练集提取的角度特征和测试集中的角度特征进行模板匹配,从而识别出人体动作,具体流程见下图3。

3.2 特征提取

人体身高、胖瘦、形体各不相同,如果以选取的特征与上述特征有关,必然会使匹配率降低,所以选取的特征应与上述特征无关。当不同的人执行同一个动作时,需要通过相似的特征来解析出这个动作。

以“蹲下”这个动作为例,不同的人做出的动作都具有一定的差异性,骨骼与骨骼之间位置、长度、姿态等不尽相同,但是都表达了同一个动作,如图4所示,所以必须找到一个共同的表达方式来表达同一个动作。

由此可以用骨骼间的夹角来代替骨骼的变化即动作的变化,从而识别出动作。动作数据集中的20个关节点数据并不是全部都用得到,所以可以通过筛选剔除不需要的关节点,实现数据的降维处理,使数据更具可靠性和普适性[6]。

利用人体的四肢及其与脊椎的夹角就可以基本确定人体的动作。本课题采用了15个关节点,如图1所示,将WristRight简记为WR,所以15个关节点分别为WR、ER、SR、SC、SL、EL、WL、S、HC、HR、KR、AR、HL、KL、AL,这些关节点组成了13根骨骼,以右腕、右肘和右肩组成的夹角为例,记为WR-ER-SR,有WR-ER-SR,ER-SR-SC,SC-SL-EL,SL-EL-HL,HC-HR-KR,HR-KR-AR,HC-HL-KL,HL-KL-AL这8个夹角,还有SR-SC、SL-SC、HR-HC和HL-HC与S-HC组成的4个夹角。

本课题的模板训练集使用了MSRC-12数据集,其中不同的动作序列簡化了样本采集过程。训练集中的关节点坐标数据是三维坐标,先利用坐标数据得出骨骼向量,由于骨骼向量是矢量,骨骼长度和方向也可得出;再通过空间向量夹角公式计算出骨骼间的夹角,见式(1)。

3.3 动作识别算法

本课题主要通过提取人体动作的关节角度特征并运用动态时间规整算法(DTW)识别出人体典型动作。该算法最初应用在语音识别领域,它通过动态规划思想去解决发音长短不同的两条音频曲线的语义识别。DTW算法就是使用warping扭曲的方式对时间轴进行拉伸或收缩,从而计算两条曲线的相似性。假设有两个时间序列A和B,分别为模板序列和测试序列,他们的长度分别用m和n来表示,序列中每个时间点对应一个特征值,见式(2)和(3)。

其中,A为样本空间模板,B为测试模板。具体方法是把短的曲线序列延伸到和长的曲线相同长度进行计算,或者把长的时间轴收缩到和短的曲线相同长度。所以,使用[DTW]算法匹配两条曲线的最短距离总和前,需要先构造一个[n×m]的矩阵,如图6所示。

其中,元素[(i,j)]表示其中一条曲线上的点Ai到另一条曲线上的点Ai的距离d(Ai,Bj),一般使用欧氏距离进行计算,计算公式为[dAi,Bj=(Ai-Bj)2],表示矩阵中路线途经的点。W的第k个元素定义为[Wk=(i,j)k],表示A和B两条时间序列的映射关系。K表示规整路径的终点标号,其值应不小于测试序列与模板序列中的最大长度,不大于两者的序列长度和,数学公式可以表示为式(4)[8]。

矩阵中的每一个点只有三个方向可以选择,如图7所示。如果规整路径W已经经过(i,j)点,下一个方向只能是以下三种情况之一,分别是(i+1,j)、(i,j+1)、(i+1,j+1)。

定义累加距离D(i,j),从起点开始,每选择出两条序列(i,j)点之间的一条最短距离,就进行累加。累加距离D(i,j)表示当前格点的距离d(i,j),即Ai和Bj两点间的欧氏距离,与该点前一点的累加距离之和,见式(5)。

4 实验结果和结论

4.1 实验结果及分析

通过对骨骼关节点数据的特征提取,运用动态时间规整算法(DTW)将经过特征提取的两个集合进行模板匹配,实现对人体典型动作的识别。

在不同动作序列条件下,随着帧数的增加,角度特征具有明显差异,以蹲下和举起双臂这两个动作为例,所提取的角度特征如图8所示;在同一人执行相同动作序列条件下,随着帧数的增加,所提取的角度特征具有相似性,以举起双臂这个动作为例,所提取的角度特征如图9所示;在不同人执行相同动作序列条件下,随着帧数的增加,所提取的角度特征虽然有所差别,但是也具有一定的相似性,以举起双臂这个动作为例,所提取的角度特征如图10所示。

选取左臂和左腿上共4个角度特征,其中红色实线表示左臂的两个角度特征,蓝色实线表示左腿的两个角度特征。

经过上述对提取角度特征的分析,下面进行同一动作的识别。每个动作样本实际上是由同一个人重复多次组成的,所以单个数据文件中就有多个样本。先选取动作数据集中的80个样本作为模板,然后选取除上述样本外的400个相同动作序列作为输入数据,设置累计欧式距离的阈值为20,动作识别率如表1所示。

通过模板匹配,举起双臂和投掷这两个动作的识别率很高,而蹲下和弯腰这两个动作的识别率较高。以蹲下这个动作为例,匹配的主要部位在腿部,没有大幅度的变化,如图10所示。而手臂部位的角度随着帧数的增加出现毛刺现象,两者完成的时间长度有较大差距,在DTW进行帧数的匹配时差距就会放大,累计欧式距离变大,致使识别失败。

4.2 总结与展望

基于MSRC-12数据集的关节点数据,选取多个样本作为模板,输入测试数据,提取能够表征基本动作的角度特征进行模板匹配,从而识别出人体动作。

由于MSRC-12动作数据集中样本较多,所以进行模板匹配时更易找出相似度最高的动作序列。仍然存在的问题是如果输入的动作序列与模板在时间上有一定差距时,会影响识别效果;当次要部位的角度特征的变化占主要地位时也会影响识别效果。这与算法本身、特征提取的方式等有关。所用数据集是由Kinect采集的,其中也包含一些不属于动作序列的帧数据,例如人体静止时的数据。所以我们将会从这些方面继续改进。

参考文献:

[1] 朱红蕾,朱昶胜,徐志刚.人体行为识别数据集研究进展[J].自动化学报,2018,44(06):978-1004.

[2] 王健.基于Kinect的手势识别及人机互动[D].南京邮电大学,2018.

[3] S.Fothergill, H.M.Mentis, P.Kohli, and S.Nowozin.  Instructing people for training gestural interactive systems[J]. In ACM annual conference on Human Factors in Computing System(CHI), 2012:1737-1746.

[4] 姜延丰.基于Kinect的动作评价方法研究[D].沈阳工业大学,2017.

[5] 刁俊方.基于Kinect的人体动作识别技术研究[D].重庆大学,2015.

[6] 胡青松,张亮.人体行为序列化识别算法研究[J].电子技术应用,2018,44(04):122-125+129.

[7] 顾军华,李硕,刘洪普,等.基于骨骼向量夹角的人体动作识别算法[J].传感器与微系统,2018,37(02):120-123.

[8] 邢志飞.基于Kinect的人体姿态检测与动作识别技术的研究[D].沈阳工业大学,2015.

【通联编辑:代影】

骨骼的动作识别数据集_基于关节数据的人体动作识别相关推荐

  1. 骨骼的动作识别数据集_基于骨骼数据的人体行为识别

    基于骨骼数据的人体行为识别 摘要 人体动作姿态识别是计算机视觉研究领域中最具挑战的研究方向,是当前的研究热点. 对人体动作姿态进行自动识别将带来一种全新的交互方式, 通过身体语言即人体的姿态和动 作来 ...

  2. java人体识别_基于安卓Android的人体动作行为识别系统APP设计(Android studio)

    基于安卓Android的人体动作行为识别系统APP设计(Android studio)(论文12000字,程序代码) 摘要:Android手机已经成为我们大部分人日常生活中不可或缺的一部分,而且其功能 ...

  3. 用paddleocr识别汉字_基于Paddle的截图OCR文字识别的实现

    一款截图识别文字的OCR工具主要涉及2个环境:截图 OCR识别 前要 OCR的应用场景 根据OCR的应用场景而言,我们可以大致分成识别特定场景下的专用OCR以及识别多种场景下的通用OCR.就前者而言, ...

  4. python人脸识别项目_基于Python与命令行人脸识别项目(系列二)

    在knowe_people文件夹中创建blur_faces_on_webcam.py文件并写入以下代码: import face_recognition import cv2 # This is a ...

  5. 数据推荐 | 人体行为识别数据集

    人体行为识别任务旨在通过对人体姿态进行分析,识别出人体的具体动作,为人体行为预测.突发事件处理.智能健身.智能看护等领域提供技术支持. 人体行为识别数据标注方式 人体行为数据通用的标注方式包括人体关键 ...

  6. 科研笔记-无线感知第1篇(基于WIFI CSI进行人体行为识别调查)

    基于WIFI CSI进行人体行为识别调查 目录 基于WIFI CSI进行人体行为识别调查 人体姿态识别研究现状: 无线感知相关知识点: WIFI系统的局限性: 基于 Wi-Fi CSI 的行为识别: ...

  7. 基于3D关节点的人体动作识别综述(转)

    原文:2016,Pattern Recognition: 3D skeleton-based human action classification: A survey 摘要 近年来,基于深度序列的人 ...

  8. 谷歌发布人类动作识别数据集AVA,精确标注多人动作

    选自Google Research 机器之心编译 参与:路雪 视频人类动作识别是计算机视觉领域中的一个基础问题,但也具备较大的挑战性.现有的数据集不包含多人不同动作的复杂场景标注数据,今日谷歌发布了精 ...

  9. 熊猫数据集_对熊猫数据框使用逻辑比较

    熊猫数据集 P (tPYTHON) Logical comparisons are used everywhere. 逻辑比较随处可见 . The Pandas library gives you a ...

  10. 熊猫数据集_熊猫迈向数据科学的第一步

    熊猫数据集 I started learning Data Science like everyone else by creating my first model using some machi ...

最新文章

  1. HDU 4635 Strongly connected(缩点、最多可加边数使得仍然非强连通)
  2. idle和python区别_Python的IDLE与命令lin的区别
  3. 【机器学习】--模型评估指标之混淆矩阵,ROC曲线和AUC面积
  4. java基础(参数传递)
  5. “知识图谱+”系列:知识图谱+强化学习
  6. Java快速提升_java快速复习 一 基础语法
  7. 5个步骤带你入门FPGA设计流程
  8. 服务器机械硬盘国产厂家,盘点服务器国产化呼声背后的优秀厂商
  9. 主流的分布式事务解决框架
  10. 电商设计师必备素材|快速组合自己想要的场景和落版文字
  11. JavaSE学习--集合02
  12. poj 3616 Milking Time
  13. 经纬度度分秒转换小数
  14. canvas[ymin_valid:ymax_valid + 1, xmin_valid:xmax_valid + 1] = np.fmax
  15. 华为计算机的隐藏应用程序,华为平板5怎么隐藏软件 荣耀5平板怎么隐藏应用程序?...
  16. 深入理解地址翻译 CSAPP
  17. 豆瓣电影评论爬取+情感分析+词云
  18. 实验:GNS3中创建PC机与连接交换机实现互联互通
  19. 论文推荐-计算机视觉
  20. Java~List-son

热门文章

  1. Docker部署程序员简历
  2. 区块链能够防伪?你彷佛有什么误解!
  3. Ubuntu18.04 打不开系统蓝牙适配器,也连接不上任何蓝牙设备Bug解决方案
  4. 手机内存清理软件,让你的手机更轻更快!
  5. 为什么保持代码整洁如此重要?
  6. 【PTA】日程安排(多重继承+重载)
  7. Java流(Stream)操作实例-筛选、映射、查找匹配
  8. Failed to load C:\SDK\android-sdk-windows\build-tools\27.0.2\lib\dx.jar
  9. GrapeCity Documents for PDF[GcPDF]
  10. openwrt运行n2n服务器,Windows下使用N2N搭建局域网,全球局域网(重写)