本发明属于人体动作识别技术领域,特别是涉及一种基于卷积神经网络的人体动作识别方法。
背景技术:
目前,人体动作识别在智能监控、人机交互、视频检索、虚拟现实等方面已得到广泛的应用,因此其一直是计算机视觉领域一个活跃的研究方向。在以前的研究中,很多关于人体动作识别的研究方法都集中在传统的rgb彩色视频。近年来,微软kinect的发布为这一领域带来了新的机遇,kinect设备可以实时地采集深度图像,与传统彩色图像相比,深度图像具有许多优点,例如,深度图像序列实质上是四维空间,可以包含更丰富的动作信息,对光照条件的变化不敏感,可以更可靠地估计人体轮廓和骨骼等。目前,基于深度图像的人体动作识别的研究工作主要集中在寻求通过设计某种有效的特征表示方式,期望在动作的四维信息映射二维空间后,尽量将动作的重要特征在二维空间中得到表征,从而提高动作识别的准确率。然而,动作的深度信息被映射到二维空间表征后,动作在分类过程中很容易产生混淆,从而限制了该类方法的识别率上限。
技术实现要素:
为了克服上述问题,本发明的目的在于提供一种基于卷积神经网络的人体动作识别方法,能够实现对人体动作的识别,进行更精确的动作分类,具有动作识别率高和鲁棒性强的特点。
为了达到上述目的,本发明提供的基于卷积神经网络的人体动作识别方法包括按顺序进行的下列步骤:
(1)选取数据集中的部分深度图像作为训练样本,其余深度图像作为测试样本,然后采用空间结构动态深度图像技术,将数据集中深度图像的四维信息映射到二维空间,获得二维图像;
(2)构造卷积神经网络;
(3)使用训练样本中的二维图像对卷积神经网络进行训练;
(4)将测试样本中的二维图像输入到上述已训练完成的卷积神经网络中得到三组输出向量,然后进行组内融合,再进行组间融合,最后完成人体动作的识别。
在步骤(1)中,所述的采用空间结构动态深度图像技术,将数据集中深度图像的四维信息映射到二维空间,获得二维图像的方法是:采用空间结构动态深度图像技术将数据集中的每个深度图像转换为6张不同的二维图像,将这6张二维图像分成3组,组别分别是躯干、四肢和关节,每组由两张二维图像组成,分别是ddif,ddib。
在步骤(2)中,所述的构造卷积神经网络的方法是:该网络共有12层,这12层依次是卷积层conv1,池化层pool1,卷积层conv2,池化层pool2,卷积层conv3,卷积层conv4,卷积层conv5,池化层pool5,全连接层fc6,全连接层fc7,全连接层fc8以及分类层,其中分类层采用结合了交叉熵损失函数和中心损失函数作为联合代价函数,以增加动作样本特征空间与类中心的距离约束。
在步骤(3)中,所述的使用训练样本中的二维图像对卷积神经网络进行训练的方法是:将训练样本中深度图像转换后获得的3组二维图像分别输入到3个卷积神经网络中,利用该二维图像分别对3个卷积神经网络进行训练。
在步骤(4)中,所述的将测试样本中的二维图像输入到上述已训练完成的卷积神经网络中得到三组输出向量,然后进行组内融合,再进行组间融合,最后完成人体动作的识别的方法是:将测试样本中每一个深度图像转换后获得的3组共6个二维图像,分别输入到3个组对应的已训练完成的卷积神经网络中,则每个组将得到2个对应的向量,将上述每组的2个向量对应的维度求平均值,作为组内融合;然后将上述3个组内向量对应的维度求平均值,即组间融合,作为最终向量,该最终向量中的最大数值对应的维度序号,即为待识别的人体动作类别。
本发明提供的基于卷积神经网络的人体动作识别方法与现有技术相比的有益效果为:
本发明在网络训练过程中增加动作样本特征空间与类中心的距离约束,以兼顾动作特征的类内聚合与类间分离,指导卷积神经网络学习到更具分辨力的特征,使后续进行更精确的分类。多个数据集的实验结果表明,使用本发明方法,人体动作识别的准确率和鲁棒性得到了明显的提升。本发明方法可以作为模式识别和人工智能的基础,对人体动作识别具有重要意义。
附图说明
图1为本发明提供的基于卷积神经网络的人体动作识别方法流程图。
图2为卷积神经网络结构示意图。
具体实施方式
下面结合实施例对本发明做进一步详细说明。
如图1所示,本发明提供的基于卷积神经网络的人体动作识别方法包括按顺序进行的下列步骤:
(1)选取数据集中的部分深度图像作为训练样本,其余深度图像作为测试样本,然后采用空间结构动态深度图像技术,将数据集中的深度图像的四维信息映射到二维空间,获得二维图像,用于后续分类,由此将人体动作识别问题转化成图像分类问题;
采用ssddi技术能够将每个深度图像转换为6张不同的二维图像,将这6张二维图像分成3组,组别分别是躯干、四肢和关节,每组由两张二维图像组成,分别是ddif,ddib,如图1所示。
具体来说,ssddi技术依赖于顺序池化方法(rankpooling,rp),进一步将rp简要介绍如下,将k帧的深度图像表示成x=<x1,x2,...,xt,...,xk>,
s.t.wt·(vi-vj)≥1-εij,εij≥0(1)
εij是一个较小非负值,参数w*可以表征在νt刚开始但νt+1尚未进行之时图像序列的信息,其可作为深度图像的特征描述子,其是与输入图像等尺度的二维图像,包含整个动作正向过程时空变化的信息,故而称之为正向的动态深度图(forwarddynamicdepthimages,ddif),将深度图像时序倒序处理后,再进行rp操作,可得到反向的动态深度图(backwarddynamicdepthimages,ddib)。
ssddi即是分别从深度图像的躯干、四肢和关节3个层次对深度图像的局部区域进行rp操作,最后再将各层次的动态深度图重新组合起来。
(2)构造卷积神经网络;
如图2所示,所述的卷积神经网络有12层,这12层依次是卷积层conv1,池化层pool1,卷积层conv2,池化层pool2,卷积层conv3,卷积层conv4,卷积层conv5,池化层pool5,全连接层fc6,全连接层fc7,全连接层fc8以及分类层。
为指导卷积神经网络学习到更具分辨力的特征,使后续分类更加精确,分类层采用结合了交叉熵损失函数和中心损失函数作为联合代价函数,可使网络训练过程中增加动作样本特征空间与类中心的距离约束,以兼顾动作特征的类内聚合与类间分离。其中交叉熵损失函数表示为:
其中xi∈rd表示属于yi类的第i个深度特征,d是深度特征的维数,w∈rd×n是最后一个全连接层fc8的权值矩阵,b∈rn是偏置项,wj∈rd表示权值矩阵w的第j列,m和n分别是每批训练样本的数量以及相应的类别数;中心损失函数表示为:
式(3)中
则联合代价函数表示为:
λ是为了控制上述两个损失函数的比例而引入的超参数,当λ=0时,联合代价函数将退化成交叉熵损失函数。
(3)使用训练样本中的二维图像对卷积神经网络进行训练;
将训练样本中深度图像转换后获得的3组二维图像分别输入到3个卷积神经网络中,利用该二维图像分别对3个卷积神经网络进行训练。
(4)将测试样本中的二维图像输入到上述已训练完成的卷积神经网络中得到三组输出向量,然后进行组内融合,再进行组间融合,最后完成人体动作的识别。
进行测试时,分类层中的中心损失函数不起作用,即此时超参数λ=0。将测试样本中每一个深度图像转换后获得的3组共6个二维图像,分别输入3个组对应的已训练完成的卷积神经网络中,则每个组将得到2个对应的向量,将上述每组的2个向量对应的维度求平均值,作为组内融合。具体来说,将躯干组测试样本中对应的两张二维图像ddif和ddib分别输入卷积神经网络后会输出2个相对应的结果,其是多维向量的形式,需将这两个向量进行均值融合作为该组的输出向量,即组内融合,四肢和关节同理。然后将上述3个组内向量对应的维度求平均值,即组间融合,作为最终向量,该最终向量中的最大数值对应的维度序号,即为待识别的人体动作类别。