留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

人体动作数据编码与CNN精确识别

胡青松 张亮 丁娟 李世银

胡青松, 张亮, 丁娟, 李世银. 人体动作数据编码与CNN精确识别[J]. 电子科技大学学报, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108
引用本文: 胡青松, 张亮, 丁娟, 李世银. 人体动作数据编码与CNN精确识别[J]. 电子科技大学学报, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108
HU Qing-song, ZHANG Liang, DING Juan, LI Shi-yin. Data Encoding and CNN Accurate Recognition of Human Body Motion[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108
Citation: HU Qing-song, ZHANG Liang, DING Juan, LI Shi-yin. Data Encoding and CNN Accurate Recognition of Human Body Motion[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108

人体动作数据编码与CNN精确识别

doi: 10.12178/1001-0548.2019108
基金项目: 国家自然科学基金 (51874299, 61771474);江苏省科技成果转化专项资金(BA2016016)
详细信息
    作者简介:

    胡青松(1978-),男,副教授,主要从事物联网、移动目标定位、救灾通信等方面的研究. E-mail:hqsong722@163.com

  • 中图分类号: TP391.1

Data Encoding and CNN Accurate Recognition of Human Body Motion

图(14)
计量
  • 文章访问数:  7049
  • HTML全文浏览量:  2453
  • PDF下载量:  89
  • 被引次数: 0
出版历程
  • 收稿日期:  2019-04-22
  • 修回日期:  2019-11-26
  • 网络出版日期:  2020-05-28
  • 刊出日期:  2020-05-01

人体动作数据编码与CNN精确识别

doi: 10.12178/1001-0548.2019108
    基金项目:  国家自然科学基金 (51874299, 61771474);江苏省科技成果转化专项资金(BA2016016)
    作者简介:

    胡青松(1978-),男,副教授,主要从事物联网、移动目标定位、救灾通信等方面的研究. E-mail:hqsong722@163.com

  • 中图分类号: TP391.1

摘要: 人体动作的精确识别面临多方面的挑战,特别是动作采集易受光照强度的影响、动作特征描述不清楚和易物理变形。为了降低这些不利因素的影响,提高动作的识别精确度,该文从3个步骤展开研究:首先,对Kinect提取的人体关节数据进行预处理,从而克服光照问题;随后,使用针对性编码方法对人体动作数据进行编码,进而利用卷积神经网络(convolutional neural network,CNN)自动提取人体动作特征,解决动作特征描述的难题;最后,使用SoftMax完成复杂动作的识别。实验表明,该文算法具有较高的识别准确率和泛化能力,其F1值普遍在0.8以上;在单一属性测试中,复合属性数据比被复合的单一属性数据更有优势,F1值可达0.916;混合属性测试的F1值相比单一属性测试有所下降,下降幅度最高可达约25%。

English Abstract

胡青松, 张亮, 丁娟, 李世银. 人体动作数据编码与CNN精确识别[J]. 电子科技大学学报, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108
引用本文: 胡青松, 张亮, 丁娟, 李世银. 人体动作数据编码与CNN精确识别[J]. 电子科技大学学报, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108
HU Qing-song, ZHANG Liang, DING Juan, LI Shi-yin. Data Encoding and CNN Accurate Recognition of Human Body Motion[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108
Citation: HU Qing-song, ZHANG Liang, DING Juan, LI Shi-yin. Data Encoding and CNN Accurate Recognition of Human Body Motion[J]. Journal of University of Electronic Science and Technology of China, 2020, 49(3): 473-480. doi: 10.12178/1001-0548.2019108
  • 人体动作识别[1]旨在通过在线或离线的方式,从传感器所采集的数据中自动识别出人体正在执行的动作,它是计算机视觉[2]、机器学习[3]、模式识别[4]和人工智能[5]等技术交叉融合发展的结果,在新型人机交互、虚拟现实、增强现实和辅助培训等领域具有广阔的应用前景。

    人体动作识别算法主要有模板匹配和机器学习两大类。模板匹配算法将动作实例与模板库中的动作进行对比,模板库中与动作实例相似度最高的动作即为识别结果;文献[6]提出的时间自相似和动态规整的识别算法即属此类。模板匹配识别算法的缺点是随着模板库的增加,模板比对的开销会越来越大。机器学习算法是用一系列动作实例训练一个分类器,此分类器能够区分不同动作的共性与差异,进而利用分类器进行动作分类;文献[7]提出的方法即属此类,它结合时空特征与3D-SIFT描述子提取人体特征,使用SVM(support vector machine)算法识别人体动作。与基于模板匹配的识别算法类似,基于机器学习的识别算法也要求手动提取动作特征,因此操作繁琐,难以通用。

    与普通的机器学习不同,深度学习算法[8-10]能够自动提取目标特征,其中CNN在深度学习中应用得尤为广泛[11],在很多情况下都表现出优秀的性能,适合处理人体动作识别等复杂任务。为此,本文提出基于CNN的精确人体动作识别算法,对人体骨骼数据进行编码处理,进而构建深度学习框架,从而准确识别数据所包含的人体动作。

    • 本文采用可开放获取的MSRC-12(the Microsoft research Cambridge-12)人体动作数据集。该数据集由微软剑桥联合实验室使用Kinect设备采集[12],共包含594个人体动作序列,719 359帧,播放完毕约需6小时40分钟。由于Kinect通过发射红外光获取人体骨骼和关节的位置坐标,而不是采用可见光获取图像或视频,因此克服了光照强度对人体动作识别的影响。

      为了增强数据集的代表性和说服力,MSRC-12共采集了30名不同志愿者的动作。志愿者特征如下:1)年龄特征:22~65岁,平均31岁;2)身高特征:1.52~2米,平均1.76米;3)男女比例:3∶2;4)左、右撇子比例:1∶14。

      志愿者分别表演图1中的12种动作,共采集到6 244个动作实例。在这12种动作中,奇数动作是隐喻动作,意为把动作名称与隐含的寓意相关联;偶数动作是标准动作,动作名称直接描述了动作本身的含义。从图1可以看出,Kinect记录的是点和线组成的人体骨骼数据,其中的点代表人体关节,关节点的不同位置组合便可表达不同的人体动作。

      图  1  MSRC-12数据集的动作实例

      数据采集方式不同,测试者的动作也会受到一定影响。为了体现采集方式的影响,MSRC-12不但包括单一属性数据,也包括复合属性数据。单一属性数据包括:1)描述分解动作的文本,简称文本(Text);2)个体动作的有序静态图像集合,简称图像(Images);3)个体动作的视频,简称视频(Video)。复合属性数据包括:1)文本和图像的复合(Text+Images);2)文本和视频的复合(Text+Video)。

      MSRC-12数据集中,每一个测试者的相同动作存储在一个.csv文件中,它记录了三维骨骼数据和该数据的记录时间。此外,每个动作还有一个.tagstream伴生文件,它记录了每一个动作的中心时间戳。把相同属性的数据追加到一个文件中,最终得到提取后的数据文件和相应的标签文件。

      最后,将提取的数据进行归一化处理。归一化的目的有两点:一是保证所绘图形不失真;二是便于后续的深度学习处理。因为归一化使得数据无量纲化,从而加快了优化过程,并能提高模型精度。本文把$x,y,z$轴分开处理,用${{M}}$表示text_x.mat,${{Mx}}$${{My}}$${{Mz}}$分别表示$x,y,z$轴上的数据。归一化处理之前,首先利用式(1)消除$x$轴的负值,接着利用式(2)对$x$轴数据进行归一化。$y,z$轴数据采用同样方法处理,不再赘述。

      $${{Mx}} = {{Mx}} - \min ({{Mx}})$$ (1)
      $${{Mx}} = \frac{{{{Mx}} - \min ({{Mx}})}}{{\max ({{Mx}}) - \min({{Mx}})}}$$ (2)
    • 本文提出的基于CNN的动作识别所处理的对象是图像,因此在进行识别前需要对预处理完毕后的动作数据进行编码,将代表动作的人体关节数据转化为图像形式。

      采用何种方式将动作数据转化成图像,对CNN的性能具有较大影响。本文共提出3种编码方式,每种编码方式均可构建灰度图像或彩色图像,因此共有6种编码组合。灰度图像的构建方法如图2a所示,选取一个关节点的数据,将其$x,y,z$三轴分量依次放入同一个方阵中,每个分量填充一个像素点。按照相同的方法将其他关节点的数据填入方阵,所得到的方阵即是一个灰度图像方阵。彩色图像的构建方法与灰度图像类似,所不同的是将关节点的三轴分量分别放入3个不同的方阵中,如图2b所示。将所得的3个方阵作为彩色图像的rgb分量,组成的图像即是一张彩色图像。

      图3所示,3种编码方法分别称为平铺编码、回旋编码和“之”字形编码。平铺编码指的是将数据按照从左到右来回扫描进行平铺排列,如图3a;回旋编码指的是将数据按照从外到内进行“回旋”排列,如图3b;“之”字形编码则是将数据排列成类似“之”字的编码方式,如图3c

      图  2  动作数据的灰度与彩色图像编码

      图  3  动作数据的编码方法

      MSRC-12数据集的一个动作实例由连续的35帧构成。如果采用灰色图像编码,容纳一帧动作的数据需要一个46×46的方阵,不能填满的方阵元素用“0”填充。图4为同一个动作的6种编码图案,第一行从左到右依次为采用平铺编码、回旋编码、“之”字型编码得到的灰色图像;第二行从左到右分别为采用平铺编码、回旋编码、“之”字型编码得到的彩色图像。这些编码方式的动作识别能力将在第3节通过仿真的方式进行对比研究。

      图  4  动作数据的6种编码实例

    • CNN是一种高效的深度学习方法,通常包括输入层、卷积层、池化层、全连接层和分类器,如图5所示。它通过局部卷积来提取图像区域特征,并通过共享卷积权值和池化操作来降低数据维度,最终再通过传统机器学习方法完成样本分类。

      在一个基于CNN的学习实例中,可以根据需要设置多个卷积层和池化层,在全连接层将得到的特征图片进行全连接,所得的特征向量经由分类器输出,即可得到识别结果。相比其他算法,图像从输入层输入之后,CNN能够自动提取图像特征,识别准确率很高。

      图  5  CNN学习框架

      为了提高识别能力,本文构造的CNN学习框架包括7层结构,如图6所示。下面以单通道灰色图像为例对各层予以说明:

      第一层(输入层):输入图像,其尺寸为46×46。

      第二层(卷积层1):设置6幅3×3的卷积核,并将卷积步长设定为1(若无特殊说明,下文的卷积步长都设定为1),分别与输入图像卷积,得到6幅44×44的特征图。

      第三层(池化层1):对卷积层1得到的特征图进行均匀池化,得到6幅22×22的特征图。

      图  6  7层结构的动作识别CNN框架

      第四层(卷积层2):其处理方式与卷积层1相同,但是卷积核不同,这里设置了12个3×3的卷积核,得到12幅20×20的特征图。

      第五层(池化层2):对卷积层2输出的特征图进行与池化层1相同的处理,得到10×10的特征图。

      第六层(全连接层):将池化层2输出的特征图展开成一维向量。

      第七层(分类器):采用深度学习中广泛使用的Softmax函数[13]对人体动作进行分类,得到动作识别结果。

      为了进行性能对比,彩色图像编码的人体动作数据采用相同的识别框架,每一层的卷积核数目和卷积步长等参数均保持不变。对CNN进行训练时,对网络参数利用梯度下降算法进行优化。学习速率不同,训练结果具有较大差异,本文根据反复实验将学习速率确定为α=0.3。

    • 评价深度学习网络模型的指标很多,其中准确率(accuracy)因其直观性而得到了广泛使用[14],它表示被正确分类的样本数据比例。与此相反,错误率则表示被错误分类的样本数据比例。显然,错误率=1−准确率,是网络对样本拟合程度的间接表示。由于样本数据中一般都存在噪声,因此拟合程度不宜设置得过高,否则将导致噪声也被拟合,最终导致网络过拟合。用$C$表示样本数量,可用式(3)计算准确率:

      $${\rm {accuracy}} = \frac{{{\rm {TP}} + {\rm {TN}}}}{C}$$ (3)

      式中,TP即true positive,表示被分类为正又确实为正例的样本数量;TN即true negative,表示被分类为负又确实为负例的样本数量。

      另外一个常用的评价指标是精确率(precision),表示被分类为正又确实为正例的样本占所有正例的比例,采用式(4)计算:

      $${\rm {precision}} = \frac{\rm {TP}}{\rm {TP + FP}}$$ (4)

      式中,FP (false positive,假正)表示分类为正的负例。

      与精确率相关的一个指标是召回率(recall),表示真正的样本被分类为正例的比例,其计算式为:

      $${\rm {recall}} = \frac{\rm {TP}}{\rm {TP + FN}}$$ (5)

      式中,FN (false negative,假负)表示分类为负的正例。精确率和召回率比准确率更适合评判深度学习网络的性能。

      另一个常用的深度学习网络性能评价指标是${F_1}$参数,其计算方法如下:

      $$\frac{2}{{{F_1}}} = \frac{1}{\rm {precision}} + \frac{1}{\rm {recall}}$$ (6)

      由于${F_1}$参数综合了精确率和召回率的优势,本文主要采用${F_1}$参数作为动作识别性能的评价指标。

    • 对每种编码方法,采用如下步骤迭代500次测试其性能:1)选取数据:从整个数据集随机选取约1/10的样本作为测试数据,其他数据作为训练数据;2)训练网络:对CNN进行训练,每训练25次使用测试数据测试一次;3)得到结果:重复执行步骤1)和2) 10次,取其均值。

      图7给出了Text属性数据在不同编码方案下的错误率。Text属性数据集的动作总数为1 304组,从中随机选取154组作为测试数据,剩下的作为训练数据。图7a为采用灰度图像编码的结果,可以看出,“之”字型编码和回旋编码的识别错误率相近,而平铺编码的识别错误率较高,其原因是平铺编码所成图像十分相似,而回旋编码和“之”字型编码却差异明显。图7b为采用彩色图像编码的结果,可以看出,3种编码的识别错误率从低到高分别为“之”字编码、回旋编码和平铺编码。从图7a图7b可知,各种编码方式的识别错误率都随着迭代次数的增加而逐渐减小,最后趋于稳定;灰色图像编码的识别性能优于彩色图像编码。

      图  7  Text属性数据不同编码方案的错误率

      图8为Images属性数据集的实验结果。Images属性数据集的动作总数为1 249组,从中随机选取149组作为测试数据,剩下的作为训练数据。从图8可以得到与图7类似的结论;对比图8图7可知,Images属性数据的识别错误率比Text属性数据稍低。

      图9给出了Images+Text属性数据集的实验结果。Images+Text属性数据集的动作总数为1 248组,从中随机选取148组作为测试数据,剩下的作为训练数据。从总体趋势看,采用不同编码方式的Images+Text属性数据的错误率及其变化趋势与Text属性数据类似。Video属性数据以及Video+Text属性数据得到的结果与此类似,此处不再赘述。

      综上,灰色图像编码的性能优于彩色图像编码;在灰色图像编码方式中,回旋编码的识别错误率最低,收敛速度最快。因此,本文采用回旋灰色图像编码测试动作识别模型的性能。

      图  8  采用不同编码方案的Images属性数据错误率

      图  9  采用不同编码方案的Images+Text属性数据错误率

    • 采用十折交叉验证法测试模型性能,步骤如下:1)预处理:将数据集等分为10份;2)选取数据:选取其中1份作为测试集,其他的作为训练集;3)得到结果:记录实验结果,然后重复步骤2)、3) 10次,取10次结果的均值。

      采用两种实验方案测试动作识别模型的性能,一种方案称为单一属性测试,其训练集和测试集都选择相同属性的数据,比如都采用Text属性数据;另一种方案称为混合属性测试,其训练集和测试集分别选择不同属性的数据,比如训练集使用Text属性数据,测试集使用Images属性数据。

      单一属性测试:使用${F_1}$作为评判标准,5种属性的数据各得到一个${F_1}$值,如图10所示。其中,Metaphoric表示6个隐喻动作,Iconic表示6个标准动作,All则表示所有动作(隐喻动作+标准动作)。如前所述,每个${F_1}$值都是重复测试10次得到的均值。

      图10可知,在单一属性测试中,Video属性数据拥有最好的性能,Images属性数据紧随其后,Text属性数据的性能最差;复合属性数据比被复合的单一属性数据好,Video+Text属性数据的${F_1}$值最高。

      图  10  所有属性数据测试10次平均${F_1}$

      混合属性测试:针对所有动作、隐喻动作和标准动作,分别测试训练集属性和测试集属性的所有可能组合,其结果见图11图13

      图11给出了全部动作数据的混合测试结果。从图11可以看出,相比单一属性测试,混合属性测试的${F_1}$值有所下降,这与文献[11]的结论相吻合。但是,如果训练集采用的是复合属性数据,并选择复合属性的任一成员属性作为测试集,其${F_1}$值与使用相同属性数据测试的${F_1}$值相当甚至更高,反之,则并不理想。

      图  11  全部动作数据混合测试10次平均${F_1}$

      图  12  隐喻动作数据混合测试10次平均${F_1}$

      图  13  标准动作数据混合测试10次平均${F_1}$

      图12给出了隐喻动作数据的混合测试结果,其${F_1}$值的整体走势与图11类似。不过,相对于全部动作,隐喻动作的${F_1}$值普遍偏小,意味着隐喻动作识别难度更大。

      图13给出了标准动作数据的混合测试结果,其结论与图11相同。不过,相对于全部动作,标准动作的${F_1}$值整体偏大,意味着标准动作更易识别。

      图14显示了本文算法与文献[12]、文献[15]的性能对比。公平起见,各算法均采用相同属性的数据。文献[12]采用随机森林法进行训练和识别,其特征向量包括35个关节角度、35个关节角速度和20个关节点,共$35 + 35 + 20 \times 3 = 130$维。由于一组动作需用35帧描述,因而特征向量共130 × 35 = 4 550维。文献[15]旨在建立标准的人体动作模板,它先建立人体模板字典,再提取人体关节特征,最后利用稀疏字典编码建立人体动作模板,进而利用模板匹配的方式识别人体动作。从图14可以看出,本文算法的${F_1}$值普遍大于0.8,遥遥领先于文献[12],相比文献[15]也有较大优势。

      图  14  本文算法与文献[12]和文献[15]的识别性能对比

      除了利用MSRC-12数据集进行性能测试之外,本文还在MSR Action3D数据集上进行了性能测试,以验证算法对不同数据集的普适性。本文算法在MSR Action3D数据集(由567组动作组成)上的平均识别准确为76.6%,高于文献[16]提出的Bag of 3D points算法,其平均识别准确率为74.7%。另外,本文还利用Kinect 2.0自采了图1中的12个动作各10组,本文算法在自采数据集上的测试结果达到了100%的平均识别准确率。这些结果充分说明,本文算法具有较强的场景适应能力。

    • 人体动作识别在新型人机交互等众多领域具有广阔的应用前景。本文提出了一种基于卷积神经网络的精确人体动作识别算法,用以对Kinect等传感器采集的动作数据集进行训练和识别。为了使用CNN框架处理动作数据,本文设计了平铺编码、回形编码以及“之”字形编码,这些编码方法可将动作数据编码成灰度图像或彩色图像。实验表明,本文所提出的人体动作识别方法具有较高的识别率和较强的泛化能力。接下来,将把本文算法应用于工程领域,用以判断特殊岗位的工作人员(比如煤矿井下的检修工人或矸石挑选工人)是否执行了违规操作,从而降低生产事故的发生率。

参考文献 (16)

目录

    /

    返回文章
    返回