一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于骨骼信息的分组混淆图卷积动作识别方法与流程

2021-10-24 04:47:00 来源:中国专利 TAG:卷积 分组 信息 骨骼 多个


1.本发明是一种基于骨骼信息的分组混淆图卷积动作识别模型(gs

gcn)。分组的引入是为了获得多个动态图结构,以此来获取一些原本图结构无法表示的活动,比如鼓掌、刷牙、跑步等,使用多个动态图可以提取更加丰富的信息,同时还可以减小参数和计算量。我们使用图卷积来提取空间上的信息,骨骼信息本身作为一个图结构是很适合用图网络来操作的。在时序模块上引入了深度可分离卷积,深度可分离卷积可以在减小参数和计算量的同时而保持很高的性能。由于我们在空间和时序上都是采用分组的形式,所以需要对分组进行融合,以达到信息的流通。最后我们通过网络来对人体行为进行识别。本发明采用端到端训练的模式,在基于骨骼信息的动作识别领域有着很好的效果。


背景技术:

2.人体动作识别具有广泛的应用场景,例如人机交互和视频检索。近年来,基于骨骼的动作识别得到了越来越广泛的关注。骨骼信息是一种结构良好的数据,其中人体的每个关节是一个三维坐标。使用骨骼信息进行动作识别有几个优点,首先,骨骼是人体的高级表示,抽象了人体的姿势和动作。从生物学上讲,即使没有外观信息,人类也只能通过观察关节的运动来识别动作类别。其次,随着深度相机技术的发展和姿态估计技术的进步使骨骼的获取变得更加容易。第三,与rgb视频相比,骨骼信息对视点和外观的变化更加具有鲁棒性。此外,基于骨骼信息的动作识别也可以补充基于rgb的动作识别。
3.对于基于骨骼的动作识别,深度学习被广泛用于建模骨骼序列的时空演化。已经开发出各种网络结构,例如递归神经网络(rnn),卷积神经网络(cnn)和图卷积网络(gcn)。在早期,rnn/lstm是用于短期和长期时间动态的很受欢迎的网络。近来,由于其优越的性能,已经有使用前馈(即非循环)卷积神经网络来对语音、语言和骨架中的序列进行建模的趋势。大多数基于骨骼信息的方法将关节的坐标映射到2d当中,并将其大小调整为适合cnn输入的大小(例如224
×
224)。其行与列对应于关节和框架索引的不同类型。在这些方法中,长期的依赖关系和语义信息有望被深度网络的大感受域获取。但是这样的操作往往会导致复杂的计算量。
4.基于递归神经网络。例如lstm和gru使用递归神经网络来建模骨架序列的时间动态。帧中所有关节的3d坐标以某种顺序连接起来,成为一个时隙的输入向量。他们没有明确告诉网络哪个维度属于哪个关节。其他一些基于rnn的工作倾向于在rnn中设计特殊的结构,以使其了解空间结构信息。有些工作将lstm的单元格划分为五个子单元格,分别对应于五个身体部位,即躯干,两条手臂和两条腿。还有的人提出了一种时空lstm模型,以利用时域和空间域中关节的上下文相关性,在每个步骤中关节都提供不同类型的关节。在某种程度上,它们区分了不同的关节。
5.基于卷积神经网络。近年来,在语音、语言序列建模,卷积神经网络领域证明了它们在准确性和并行性方面的优越性,基于骨骼信息的动作识别也是如此。这些基于cnn的工作将骨骼序列转换为目标大小的骨架图,然后使用诸如resnet之类的流行网络探索时空动
态。一些工作通过将三维坐标(x,y,z)视为像素的rgb通道,将骨架序列转换为图像。有的工作将骨骼序列转换为四个2d数组,这些数组由四个选定参考关节(即左、右肩,左、右髋)和其他关节之间的相对位置表示。但是,cnn的卷积核具有平移不变性,因此无法直接从此输入骨架图中感知语义信息。期望cnn通过深度网络的大型感受野来意识到这种语义,这不是很有效。
6.基于图卷积网络。已经证明对处理结构化数据有效的图卷积网络也已用于对结构化骨骼数据进行建模。有些工作提出了一个时空图卷积网络,他们将每个关节视为图的节点,关节之间的联系是由人类根据先验知识预先定义的。为了增强图的表达能力,有人使用attention操作来对骨骼节点进行全局操作,然后生成一个动态图结构,以此来表示多样化的动作类型。有的工作为了增强时序上的表达能力,会对相邻帧之间的节点建立联系。从最近几年的工作来看,图卷积网络的性能是高于递归神经网络和卷积神经网络的。
7.无论是采用什么方法来对骨骼结构的数据进行建模,这些方法都会产生两个问题:
8.(1)目前基于动态图的方法过于单一,很多方法是初始化一个动态图矩阵,然后在训练的过程中进行更新。还有的方法是采用attention的方法来生成动态图结构,有了全局信息的动态图效果是要好于单纯初始化一个动态图的。但是上面两种方式都只是采用了单一的图结构,无法处理多样化的行为活动。所以如何设计更加多样的图结构来获取丰富的行为信息变成了一个问题。
9.(2)目前的方法参数量和计算量都很大。为了保持较高的性能,很多工作都是采用模块堆叠的形式,一般都是堆叠10个模块,这就导致最后的参数量较高,这对于实际应用来说是不利的。一些移动设备由于算力不足无法运行较大的模型。所以如何减小模型参数,使其变得轻量也是一个很重要的问题。


技术实现要素:

10.本发明是一种基于骨骼信息的分组混淆图卷积动作识别方法,采用这种方法可以解决目前的两个问题:
11.1.目前的网络结构一般都是一个静态图结构加上一个动态图结构,静态图表示原来的骨骼结构,是不会改变的,而动态图则是用来生成原来不存在的一些连接,比如手跟头之间、手跟手之间的联系。随着模型的训练,动态图结构会不断变化,训练完成,动态图的结构才会固定。但是一般的方法都只是有一个动态图,这样提取的信息过于单一,所以我们提出对动态图进行分组的形式,这样对于不同组的输入特征采用不同的图结构,提取的信息就会不同,相当于增加了多尺度信息。
12.2.我们经过实验发现,网络模型的参数量三分之二以上都是时序模块占用的,所以要降低参数量,必须对时序模块进行改进。我们于是采用了深度可分离卷积的形式,在图像领域,深度可分离卷积在设计轻量级模型方面是常用的方法,所以我们将其引入到时序领域。在采用深度可分离卷积后,再加上一个卷积层来融合各个通道的信息。结果证明我们的方法可以大幅减小参数量,同时还保持的很高的性能。
13.3.我们在空间上和时序上都采用了分组的形式。采用分组的形式可以大幅度减小参数量,如果分组的个数为n,那么参数量就会变为原来的1/n。为了融合不同分组的信息,
我们对不同分组的特征进行混淆,达到信息的流通。一般的方法参数量都过于大,在模型训练速度方面会花更多的时间。由于我们的模型很小,所以收敛的速度会更快一点。
14.一种基于骨骼信息的分组混淆图卷积动作识别方法,包括以下步骤:
15.步骤(1)、数据预处理,提取多个输入特征;
16.输入特征为骨骼点即节点的坐标信息,节点的坐标表示为(x,y,z),每个人的节点个数都是固定的,时序上每个人都取300帧;除了节点信息外,还需要计算关节的信息,即边的信息,其值为同一帧内相邻节点的差值。在用图像作为输入特征的时候,需要计算相邻图像帧之间的光流(计算相邻帧之间的差值)作为另外的特征,计算节点和边相邻图像帧之间的光流,即相邻帧之间的差值,作为第三、四个输入特征。将节点表示为joint,边表示为bone,节点的光流表示为joint motion,边的光流表示为bone motion。
17.步骤(2)、构建基于骨骼信息的分组混淆图卷积网络(gs

gcn);
18.所述的基于骨骼信息的分组混淆图卷积网络采用多个分组混淆图卷积模块堆叠形式。在空间上,由于输入特征是一个图结构的形式,所以使用图网络来提取节点之间的信息。人体固有的骨骼结构比如像手肘和肩膀之间有连接,脖子和头之间有连接,在基于人体固有的骨骼结构的基础上增加分组结构,每个分组用来生成不同的图结构,以此来表示丰富的动作行为。在时序上,采用深度可分离卷积来降低参数和计算量,同时获得更大的时序依赖。由于在空间上进行图卷积和时序上进行深度可分离卷积都采用分组,所以最后需要对分组进行混淆,将不同分组的信息进行融合,以达到信息的流通。
19.步骤(3)、基于骨骼信息的分组混淆图卷积网络训练过程:
20.在训练时,首先输入特征,然后采用反向传播算法来更新模型的参数,最后采用交叉熵函数作为损失函数。由于有四个不同的输入特征,因此需要训练四个网络。
21.步骤(4)、测试模型性能
22.在测试数据上对基于骨骼信息的分组混淆图卷积网络进行测试。对于四个输入特征,首先得到每个输入特征的分类结果,然后将这4个分类结果相加得到最终的分类结果。
23.步骤(1)描述的数据预处理的过程具体如下:
24.输入的为节点的三维坐标(x,y,z),即j
t
∈r3×
n
,一共有300帧,采用来表示节点信息,将这个特征作为一个stream(流)。用来表示边的信息,每一条边都是一个向量节点指向另一个向量节点,则边的特征即为目标节点与起始节点的差值,也将这个也作为一个stream。为了获取时序上的信息,需要得到节点的光流joint motion,通过计算得到,表示节点之间的时序移动;通过计算得到边的光流bone motion。
25.步骤(2)所述的分组混淆图卷积模块具体如下:
26.将骨骼看成一个图的结构,假设一个图g={v,e}由v个节点和e条边组成,采用a∈r
v
×
v
来表示节点之间的关系。f∈r
c
×
t
×
v
为输入到图网络中的特征,其中t是时序维度,c是通道数,则图卷积操作能够表示为:
[0027][0028]
其中k为根据st

gcn设置的空间卷积核的个数,f和y分别是输入和输出,w表示学
习的参数,a是邻接矩阵,λ是度矩阵,特别的,每个节点的度能够由λ=∑
j
a
ii
α计算得出,a
ij
代表邻接矩阵a中i个节点和第j节点的关系,而α是为了避免出现0值。
[0029]
所述的分组混淆图卷积模块包括分组图卷积(gsc)和深度可分离卷积(dsc)。
[0030]
所述的分组图卷积(gsc)具体如下:
[0031]
首先,将动态图g
dynamic
∈r
c
×
v
×
v
进行分组,即g
dynamic
=concat{g1,g2,...,g
g
},g
i
∈r
c
×
v
×
v
,i=1,2,...,g,其中c=c/g,g代表组数,同一组的所有动态图都是相同的。同时将输入的特征f∈r
c
×
t
×
v
进行分组,即f=concat{f1,f2,..,f
g
},其中f
i
∈r
c
×
t
×
v
,i=1,2,...,g,c=c/g。通过这样的形式,就能够对每个分组分别进行图卷积计算,即:
[0032]
y
i
=(g
i
g
static
)f
i
w
i
,i=1,2,...,g
[0033]
y=concat{y1,y2,...,y
g
}
[0034]
其中,g
static
为人体固有的骨骼结构图,w
i
是第i个分组的卷积核参数,不同分组的卷积核参数是不同的。
[0035]
由于图卷积运算是在每个分组上进行的,所以不同分组是相互隔离的,会导致信息流通不畅,因此,需要对不同分组的通道进行混淆shuffle。
[0036]
在进行分组混淆图卷积之后,将不同分组的通道进行shuffle,来达到信息的流通。假设有g个分组,每个分组有n个通道,则一共有g*n个通道,需要将每个分组的的通道进行划分,将其分为n/g个子分组,然后需要将每个分组的子分组shuffle到其他的分组当中,这样每个分组都会包含其他分组的信息,达到了信息的融合。
[0037]
在时序上采用深度可分离卷积dsc单独对每个通道进行卷积计算,以此来降低模型的参数量和计算量,为了融合所有通道的信息,还需要加上一个1*1的卷积层。
[0038]
在时序上采用的深度可分离卷积也是分组的,因此也要进行一次shuffle。
[0039]
步骤(3)分组混淆图卷积网络训练过程:
[0040]
整个分组混淆图卷积网络采用多个分组混淆图卷积模块堆叠形式,属于端到端的形式,损失函数采用交叉熵损失函数。由于有四个不同的输入特征,因此需要训练四个网络。训练过程中分为前向和反向两个阶段,前向就是输入特征,与模型参数进行计算,得到最后的分类结果,然后再进行反向计算,更新模型参数值,也就是反向传播算法(back

propagation,bp)。刚开始训练时设置大的学习率,然后随着训练次数的增加,将学习率减小,最后当精度变化趋于平稳的时候,停止训练,此时图卷积网络模型就已经达到了收敛。
[0041]
步骤(4)、测试模型性能
[0042]
对于四个输入特征,每个输入特征对应一个分类结果,分类结果为通过softmax函数来获取在所有类别上值最大所对应的类别,最终的分类结果由四个分类结果相加而成。计算最终的分类结果top1和top5的值,然后再计算模型的参数量和计算量。
[0043]
本发明有益效果如下:
[0044]
本发明提出了一种基于骨骼信息的分组混淆图卷积动作识别方法。以前的方法往往是将固定的图结构和一个动态的图结构加入模型来提取节点之间的信息,这样的方式太过单一,无法提取丰富的行为信息。有的方法采用non

local的思想来生成节点之间的联系,类似一种attention操作,这种方式主要是一种全局思想,因为图卷积是一种局部操作,而全局的信息对于模型的性能很重要,所以很多工作都是围绕着如何提取全局信息。这些方法虽然都获得了很不错的结果,但是他们都有一个很大的问题,就是参数和计算量都很
大,导致模型训练慢,在应用方面无法部署在一些移动设备上。所以本发明采用了一种分组的思想,在进行空间操作的时候,我们对动态图进行分组来提取不同图结构的信息,获得丰富的行为信息。同时分组的形式还可以降低模型的参数量。然后在时序上进行操作的时候,我们采用深度可分离卷积的形式来降低参数和计算量。由于在空间和时序上都是采用分组的形式,所以需要对不同分组的信息进行融合,以达到信息的流通。结果显示本方法在保持高性能的情况下,参数量和计算量有着大幅的减小,证明了本方法有效性。
附图说明
[0045]
图1为本发明实施例流程图;
具体实施方式
[0046]
下面对本发明的详细参数做进一步具体说明
[0047]
如图1所示,一种基于骨骼信息的分组混淆图卷积动作识别方法,包括以下步骤:
[0048]
步骤(1)、数据预处理
[0049]
数据集采用ntu

rgb d和ntu

rgb d 120,这两个数据集都是人体骨骼的坐标信息,一共25个节点,包括膝盖、手肘、肩膀这些部位。使用一个邻接矩阵来表示这些节点的联系,形成一个骨架结构。由于数据是时序序列的,所以为了统一处理,将所有的样例都统一为为300帧的大小,即样例格式为f∈r3×
t
×
v
,其中t为时序维度即帧数,v为节点的个数。对于超过300的序列,去掉多余的部分,少于300帧的部分,采用边缘帧填充的方式。然后获取不同特征的信息,分别计算joint、joint motion、bone、bone motion。
[0050]
步骤(2)构建基于骨骼信息的分组混淆图卷积网络;
[0051]
分组混淆图卷积网络由多个分组混淆图卷积模块堆叠而成,分组混淆图卷积模块由分组图卷积(gsc)和深度可分离卷积(dsc)组成。将模块的个数设置成10,各层输出的通道数分别为64,64,64,64,128,128,128,256,256,256,第一层由于输入的通道是3,所以,这一层并没有使用动态分组图卷积。在第5层和第8层将stride设置成2,同时通道变为原来的2倍。为了使网络训练更加稳定,采用类似resnet的结构,对每一个模块添加bottleneck的结构。每个模块的分组大小设置为8。批处理规范化层被添加到开始位置以规范化输入数据。最后一个模块的提取特征被输入到到全局平均池化层,以将不同样本的特征池化为相同大小,通过softmax分类器生成最终预测。
[0052]
在空间上,在没有进行分组前,参数量为(c2 v2),c是通道数,v是节点数,计算复杂度为(c2tv v2c),t是帧数,在进行分组后,参数量减小为(c2/g v2g),g是分组的个数,计算复杂度为(c2tv/g v2c)。我们可以看到,在进行分组之后,无论是参数量还是计算复杂度都大幅减小,减小幅度直接跟分组的个数成正比,虽然动态图的参数量有所增加,但就对整体而言是微不足道的。
[0053]
在时序上,我们的输入特征维度为c
×
t
×
v,假如时序卷积核大小为9,那么参数量为(9*1*c*c 1*1*c*c),在采用深度可分离卷积之后,我们的参数量变为(9*1*c 1*1*c*c)。我们可以看出,参数量相比原来减小很多,这让我们的模型更加的小。
[0054]
步骤(3)模型训练
[0055]
gs

gcn由pytorch实现,使用rtx2080进行训练,以sg

gcn作为baseline。使用具
0.9nesterov动量的sgd进行优化。最初将学习率设置为0.1,然后在第35、50、60个epoch将学习率降低三次,系数为0.1,一共训练65个epoch。将输入特征通道和动态图都分为8组,动态图进行随机初始化。时序卷积核设为11。输入骨架序列调整为固定长度,在ntu

rgb d和ntu

rgb d 120上均为300帧。采用多流的机制,即joint、bone、joint motion、bone motion,四个stream分别训练,在测试时进行ensemble。为了与基于st

gcn的方法进行合理比较,将空间配置的数量设置为3。为减轻过度拟合,将重量衰减设置为0.0004。batch size设置为32,并采用交叉熵损失。
[0056]
步骤(4)模型测试
[0057]
我们在训练完成后,会得到对应4个不同输入特征的分类结果,我们需要将这4个分类结果相加得到最后的分类结果。然后计算top1和top5的值,top1是最终分类结果排第一的值,top5是分类结果在前5位中的值,再计算模型的参数量和计算量。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜