本发明涉及计算机视觉与深度学习领域,具体是一种用于识别视频中人物动作的方法。
背景技术:
视频学习是计算机视觉领域中一个基本且富有挑战性的方向,其目标是学习视频每一帧中的内容特征。目前的视频学习方向基本分为目标追踪、目标检测、时序动作定位、动作识别、异常检测几个领域。其中,动作识别主要是对视频中出现的人物进行特征提取,然后进行识别。但是视频中存在大量连续且冗余的时间和空间信息,如何设计一个网络模型对视频的时间维度和空间维度的特征进行细粒度的学习,是当前研究的热点。
在深度学习领域,对动作识别方法的研究主要分为以下三类:
基于无监督学习的动作识别(主要以自编码网络及其变体为代表),该识别方法主要通过独立子空间分析(isa)的叠加,但是需要提前训练好isa网络然后用较大的数据与其进行卷积的操作;
基于深度卷积神经网络的动作识别,该识别方法的使用范围比较广,总体上是在三维卷积的基础上添加时间维度;
基于时序神经网络及其扩展模型的动作识别,该识别方法是利用卷积神经网络先提取特征然后经过若干层长短时记忆网络,其中长短时记忆网络是一种特殊的递归神经网络,即能解决时间序列问题的预测。
目前,部分网络模块是以参数规模大的代价来提高网络性能,比较区域型3维卷积网络(c3d)大量使用三维卷积网络,而且卷积核的增大也使特征的维度大大增加。目前,尚未见有在网络模型在减少网络参数规模的基础上提高模型的性能的报道。
技术实现要素:
本发明的目的是针对目前人物动作识别网络中参数规模大、性能低的问题,而提供一种用于识别视频中人物动作的方法。
一种用于识别视频中人物动作的方法,包括如下步骤:
(1)局部梯度空间特征学习:使用一种空间卷积网络和时间卷积网络分别提取短视频中每一帧的空间特征和时间特征,然后对空间特征进行初步学习;
(2)细粒度空间特征学习:利用运算模块对空间特征进行细粒度学习,对步骤(1)生成的空间特征通过高斯函数进行学习,然后使用注意力机制选择空间特征中权重较大的特征向量生成注意力分数,最后用逐元素乘法生成的结果作为注意力特征向量;
(3)块内注意力网络:利用局部功能注意力模块,以步骤(2)生成的结果作为空间特征微量,并与步骤(1)的时间特征作为输入,利用注意力模块继续选择空间特征中权重较大的特征向量,与时间特征做逐元素乘法,得到注意力特征向量。
步骤(1)所述局部梯度空间特征学习的方法步骤如下:
1)使用空间卷积spatial提取特征,经过sigmoid函数后将特征分成2组空间特征b1,b2,然后用时间卷积temporal提取时间特征t:
b1=b2=sigmoid(spatial(x))在空间维度提取特征并分为b1,b2;
t=temporal(x)在时间维度提取特征t;
2组空间特征同时经过最大池化操作fmax,其中1组通过全连接运算fc对空间特征进行学习:
b11=fc(fmax(b1))使用最大池化和全连接运算处理空间特征;
2)将空间特征b11与原始空间特征x同时作为损失函数
lossspatial=losscross(ψ(w,b11),x)//空间特征损失函数;
3)从空间特征损失函数lossspatial的梯度
b1final=linear(w1new*b11 bias)//线性层学习空间特征;
此时另1组空间特征经过最大池化fmax的空间特征b2,通过全连接运算fc进行学习,得到这组空间特征b2final:
b2final=fc(fmax(b2))//使用最大池化和全连接运算处理特征;
4)由上下2组生成的特征向量做逐元素加法的运算,生成的结果作为卷积核为3的空间卷积的输入,增加空间特征的感受野以此来学习更大范围的局部信息,经过空间卷积后,分成2组同时使用非线性操作relu:
x1=x2=relu(spatial(feature))//空间卷积和激活函数学习特征。
步骤(2)所述的细粒度空间特征学习方法步骤如下:
1)由步骤(1)生成的两个分支的特征向量x1,x2作为输入,首先用两个高斯函数g,h进行空间特征学习,同时为了防止高斯函数过饱和,即在接近0的位置,导数变化大,远离0的位置,函数值趋近于0或1,导数几乎不变;所以在这个范围内变量变化无法引起导数的有效改变,设置
2)定义函数mat做矩阵乘法操作:
对于注意力,使用softmax进行归一化得到的结果作为注意力分数score:
score=softmax(φ(g(x1),h(x2)))//softmax归一化;
3)生成的注意力分数score经过神经网络函数f,以此生成注意力特征向量featurevec:
featurevec=f(∑score·x)//通过神经网络函数f得到注意力特征向量。
步骤(3)所述块内注意力网络的方法步骤如下:
1)将步骤(2)最后生成的注意力特征向量作为输入值,首先特征向量x的通道数用c表示,x被分为两组,每组的通道数c经过fscale操作分为c/2:
b1=b2=fscale(x)//对特征向量进行通道变换操作;
2)每组特征向量经过最大池化fmax选取特征图感受野每个区域的最大值,然后经过全连接运算fc进行空间特征的学习,最后经过fscale操作将其通道数恢复至开始时的特征向量:
b1final=b2final=fscale(fc(fmax(b1)))//表示对特征向量进行最大池化、全连接、通道变换操作;
由fscale操作生成的特征向量b1final,b2final和步骤(1)的时间特征t作为注意力网络的输入;首先由特征向量b1final,b2final做矩阵乘法,
3)注意力分数与时间特征t做逐元素乘法,得到的结果作为注意力特征向量:
本发明的有益效果是:该方法在hmdb51数据集中进行了训练,测试及验证试验,hmdb51数据集有51个动作类别,7000多种短视频。该方法全部使用卷积核为1的空间和时间卷积,以减少参数规模,实现降维,然后使用两阶段注意力进行细粒度的空间特征学习,提高网络性能。与以往的c3d,r3d,r2plus1d网络相比,具有较高的准确率。
附图说明
图1为本发明的总体网络架构图。
图2为本发明第1阶段,局部梯度空间特征学习流程图。
图3为本发明第2阶段,细粒度空间特征学习流程图。
图4,图5分别为本发明第3阶段的局部功能块注意力网络的总体结构和块内注意力具体结构图。
具体实施方式
本发明提供了1种短视频人物动作识别模型。下面详细描述使用本发明方法做短视频人物动作识别的详细过程。
设向量x={x1,x2...,xn}为原始特征,spatial1x1,spatial3x3,temporal1x1分别表示卷积核为1和3的空间卷积和时间卷积,sigmoid,relu表示激活函数,fc,fmax分别表示全连接运算,最大池化操作,b1,b2表示两个分支的空间特征,losscross,ψ,w,b11分别表示损失函数、神经网络函数、权重矩阵和分支一的空间特征,
第一步:局部梯度空间特征学习:
第二步:细粒度空间特征学习:
第三步:块内注意力网络:
1b1=b2=reshape(featurevec)//对特征向量进行通道变换
2b1final=b2final=reshape(fc(fmax(b1)))//对特征向量进行最大池化,全连接,通道变换
3
表1为基线网络和本文网络结构对比
表1网络结构图对比
表1中的网络从左至右依次按照参数规模进行排序。四个网络都使用resnet作为骨干网络,层数为4、6、6、3。其中c3d,r2plus1d,r3d是基线模型,区域型3维卷积网络(c3d)和空间时间卷积(r2plus1d)网络使用的参数步长为2,卷积核为3x3。r3d使用7x7的卷积,步长为2,然后经过最大池化。本发明的模型首先使用1x1的卷积核,sigmoid函数做预处理。表1block-intransformer列中的注意力网络解释为三阶段计算流程,分别是:局部梯度空间特征学习,细粒度空间特征学习,块内注意力网络。最后,所有的模型都通过全局平均池化和全连接层,然后进行分类。
下面结合真实数据集详细描述试验结果。
试验数据集为hmdb51。其中hmdb51数据集包含51个动作类别,7000多个短视频。表2给出了各个网络模型的骨干网络,参数量以及精确度。从表中可以看出,本发明模型(block-intransformer)在参数量上少于基线模型,在精确度上高于基线模型:
表2基线模型与本发明模型在hmdb51数据集下的对比试验
对每个试验数据集,把它拆分为训练集train,测试集test,验证集val。首先,分别应用三种不同的基线(baseline)模型分别在训练集上进行训练,三种网络模型分别为:区域型3维卷积网络(c3d),空间时间卷积(r2plus1d),3维卷积网络(r3d)、本发明的block-intransformer注意力网络。其中,设置训练周期epoch为100,学习率lr对于4中不同的网络有不同的设定:c3d网络当学习率lr设定为0.1时会出现lossnan,故设定为0.0001,r2plus1d和r3d的lr设定0.001,发明的block-intransformer注意力网络lr设定0.01。每个50个epoch进行保存,骨干网络(backbone)使用resnet-51。
1.一种用于识别视频中人物动作的方法,其特征是:包括如下步骤:
(1)局部梯度空间特征学习:使用一种空间卷积网络和时间卷积网络分别提取短视频中每一帧的空间特征和时间特征,然后对空间特征进行初步学习;
(2)细粒度空间特征学习:利用运算模块对空间特征进行细粒度学习,对步骤(1)生成的空间特征通过高斯函数进行学习,然后使用注意力机制选择空间特征中权重较大的特征向量生成注意力分数,最后用逐元素乘法生成的结果作为注意力特征向量;
(3)块内注意力网络:利用局部功能注意力模块,以步骤(2)生成的结果作为空间特征微量,并与步骤(1)的时间特征作为输入,利用注意力模块继续选择空间特征中权重较大的特征向量,与时间特征做逐元素乘法,得到注意力特征向量。
2.根据权利要求1所述的用于识别视频中人物动作的方法,其特征是:步骤(1)所述局部梯度空间特征学习的方法步骤如下:
1)使用空间卷积spatial提取特征,经过sigmoid函数后将特征分成2组空间特征b1,b2,然后用时间卷积temporal提取时间特征t:
b1=b2=sigmoid(spatial(x))在空间维度提取特征并分为b1,b2;
t=temporal(x)在时间维度提取特征t;
2组空间特征同时经过最大池化操作fmax,其中1组通过全连接运算fc对空间特征进行学习:
b11=fc(fmax(b1))使用最大池化和全连接运算处理空间特征;
2)将空间特征b11与原始空间特征x同时作为损失函数
lossspatial=losscross(ψ(w,b11),x)//空间特征损失函数;
3)从空间特征损失函数lossspatial的梯度
b1final=linear(w1new*b11 bias)//线性层学习空间特征;
此时另1组空间特征经过最大池化fmax的空间特征b2,通过全连接运算fc进行学习,得到这组空间特征b2final:
b2final=fc(fmax(b2))//使用最大池化和全连接运算处理特征;
4)由上下2组生成的特征向量做逐元素加法的运算,生成的结果作为卷积核为3的空间卷积的输入,增加空间特征的感受野以此来学习更大范围的局部信息,经过空间卷积后,分成2组同时使用非线性操作relu:
x1=x2=relu(spatial(feature))//空间卷积和激活函数学习特征。
3.根据权利要求1所述的用于识别视频中人物动作的方法,其特征是:步骤(2)所述的细粒度空间特征学习方法步骤如下:
1)由步骤(1)生成的两个分支的特征向量x1,x2作为输入,首先用两个高斯函数g,h进行空间特征学习,同时为了防止高斯函数过饱和,即在接近0的位置,导数变化大,远离0的位置,函数值趋近于0或1,导数几乎不变;所以在这个范围内变量变化无法引起导数的有效改变,设置
2)定义函数mat做矩阵乘法操作:
对于注意力,使用softmax进行归一化得到的结果作为注意力分数score:
score=softmax(φ(g(x1),h(x2)))//softmax归一化;
3)生成的注意力分数score经过神经网络函数f,以此生成注意力特征向量featurevec:
featurevec=f(σscore·x)//通过神经网络函数f得到注意力特征向量。
4.根据权利要求1所述的用于识别视频中人物动作的方法,其特征是:步骤(3)所述块内注意力网络的方法步骤如下:
1)将步骤(2)最后生成的注意力特征向量作为输入值,首先特征向量x的通道数用c表示,x被分为两组,每组的通道数c经过fscale操作分为c/2:
b1=b2=fscale(x)//对特征向量进行通道变换操作;
2)每组特征向量经过最大池化fmax选取特征图感受野每个区域的最大值,然后经过全连接运算fc进行空间特征的学习,最后经过fscale操作将其通道数恢复至开始时的特征向量:
b1final=b2final=fscale(fc(fmax(b1)))//表示对特征向量进行最大池化、全连接、通道变换操作;
由fscale操作生成的特征向量b1final,b2final和步骤(1)的时间特征t作为注意力网络的输入;首先由特征向量b1final,b2final做矩阵乘法,
3)注意力分数与时间特征t做逐元素乘法,得到的结果作为注意力特征向量:
