本发明属于计算机视觉、人机交互技术领域,具体是一种基于多模态训练单模态测试的动态手势识别方法。
背景技术:
手势作为人机交互的方式之一,能够提供一种自然直观的交互方式。手势识别旨在理解人体手部动作,在人机交互以及虚拟现实、增强现实等领域发挥着极其重要的作用。由于影响手势识别的因素有很多,比如光照条件的变化、背景环境的复杂性以及真实环境下的手势与标准手势不一致等,使得基于视频的有效手势识别极其困难。近年来,消费级深度传感器逐渐普及,深度图像不易受光照影响,并且易于分割背景,同时作为rgb图像的有效补充,可在一定程度上增强数据表达能力。但是多模态手势识别通常需要大量的、加标注的、在时间上对齐的rgb-d数据,这样的数据是很难获得的。本发明假设训练时可同时利用彩色和深度视频序列,而测试时只有其中一种模态的数据可提供。为此,本发明提出一种基于深度学习网络的、多模态训练单模态测试的动态手势识别方法。
技术实现要素:
为了解决上述问题,本发明提出一种改进的基于多模态训练、单模态测试的动态手势识别方法。本发明基于空间注意力和3d-ghost的单模态特征表示和改进的模态间知识迁移方法,最终提升了单模态手势识别精度,具体技术方案如下:
本方法利用rgb数据和深度数据训练整体网络,整体网络采用并行双通道协作学习的结构,旨在通过不同模态网络之间传递知识来改善学习过程,双通道网络结构相同,参数不共享,通道m用于通过rgb数据识别动态手势,通道n用于通过深度数据识别动态手势;训练完成后,将rgb数据输入通道m进行动态手势识别,或者将深度数据输入通道n进行动态手势识别;
其中通道采用i3d网络并对其进行改进,i3d网络依次包括第一3d卷积层、第一3d最大池化层、第二3d卷积层、第三3d卷积层、第二3d最大池化层、第一inception-v1子模块、第二inception-v1子模块、第三3d最大池化层、第三至七inception-v1子模块、第四3d最大池化层、第八、九inception-v1子模块、平均池化层以及第四3d卷积层,
改进之处在于:在第一和第三3d卷积层后分别增加了注意力模块,第二3d卷积层替换为3d-ghost模块,对所有inception-v1子模块进行改进;
其中,注意力模块工作过程如下:
将注意力模块之前的三维卷积层输出的c×t×w×h的特征图f分别进行一个通道维度的平均池化和最大池化,得到两个t×w×h×1的通道描述,并将这两个描述按照通道拼接在一起,然后再经过与该注意力模块前一层相同的三维卷积层和激活函数sigmoid,得到权重系数m(f);
其中σ是sigmod函数,fd×d×d表示注意力模块之前的三维卷积层,favg和fmax分别是平均池化和通道池化的通道描述,
最后将原特征图f和权重系数m(f)进行逐元素相乘,得到注意力加权的新特征f*;
所述对inception-v1子模块的改进具体如下:
inception-v1子模块包括四路并行支路,第一路为一个三维卷积层,第二、三路结构相同,为前后两个三维卷积层的串联结构,第四路为一个3d最大池化层和一个3d卷积层的串联结构,改进之处在于将第二、三路中前一个三维卷积层改为3d-ghost模块,在第二、三路中分别增加一个注意力模块,具体位于第二、三路中后一个三维卷积层之后,将第四路中的三维卷积层改为3d-ghost模块。
测试时只有一种模态数据可用,故在训练时,两个通道分别用各自的损失函数,为了共享优势模态的知识,在弱势模态的损失函数中增加时空语义对齐损失双通道整体训练,
当δl>0时,通道m和通道n的损失函数分别为:
当δl≤0时,通道m和通道n的损失函数分别为:
其中λ为折衷超参数,
基线方法通过约束两个模态的语义一致性实现知识从好的模态向另一模态的迁移,表示如下:
其中,corr(fm)和corr(fn)分别表示第m、n通道特征图的相关矩阵,fm和fn即为通道m和通道n的输出特征,基线网络baseline的焦点正则化参数ρm,n用于控制知识传递的方向,具体如下:
其中,
有益效果
本框架研究基于多模态数据训练的单模态手势识别,通过模态间知识的双向迁移,使多模态的知识嵌入到每个单模态网络中以提升每个单模态网络的性能,大大增加了框架的灵活性。而且本发明还针对分类网络进行了改进,使整个框架能实现高效的单模态手势识别。
附图说明
图1i3d网络结构示意图;
图2inception-v1子模块结构示意图;
图3改进后的单通道网络结构示意图;
图4改进后的inception-v1子模块结构示意图;
图5本发明整体框架图;
图6(a)传统的三维卷积;
图6(b)3d-ghost模块。
具体实施方式
本发明提出一种rgb-d数据训练而rgb彩色或深度单模态测试思想的动态手势识别方法,利用多模态数据的优势,研究基于多模态数据训练的单模态手势识别。本发明整体框架如图5所示,整个框架采用两个通道协作学习的结构,旨在通过不同模态网络之间传递知识来改善学习过程,其主要分为基于3d-ghost模块和空间注意力机制的分类网络模块和基于时空语义对齐(spatiotemporalsemanticalignment,ssa)损失判断的知识正迁移模块,其中的知识正迁移模块仅用于训练阶段,模块化的描述只是为了方便说明整体网络的训练损失计算过程。训练阶段,vm表示rgb模态手势视频数据,vn表示深度模态手势视频数据,这里视频长度为n,本发明中取值64。vm和vn分别是m模态和n模态的基于3d-ghost模块和空间注意力机制的i3d网络的输入,fm和fn即为两个模态网络的输出特征。鉴于彩色模态和深度模态在不同动作描述时优势不同,针对某些手势,彩色模态更有表现力,而针对另一些手势,深度模态更有判别力,因此m通道和n通道网络权重参数不共享。特别地,为了使它们能互相学习优点,在分类网络中引入了基于ssa损失的知识正迁移模块,即在弱势模态所在的分支网络增加ssa损失,从而强迫其学习优势模态的知识。ssa损失旨在最小化两个模态的语义距离,本发明将其形式化为两模态特征的相关矩阵的欧氏距离。参数ρm,n的作用是确保知识从优势模态网络即分类准确率高的网络向弱势模态网络即分类准确率低的网络传递,避免知识的负迁移,这里,ρm,n的定义也考虑了两个模态分类误差的大小,误差越大,ρm,n越大,从而强化弱势模态网络向优势模态网络学习的力度越大。
在测试阶段,每个基于3d-ghost模块和空间注意力机制的i3d网络独立运行。因此,一旦完成网络的训练,就相当于将多模态的知识嵌入到每个单模态的网络中,即可以使用单模态网络实现高精度的手势识别。
基础模型介绍
i3d网络是一种流行的三维卷积神经网络,本发明基于i3d网络提取手势视频的时空特征,并对其进行了改进,以下对本发明涉及的网络模块进行展开说明。
空间注意力模块
注意力机制和人类视觉的注意力类似,就是在众多信息中把注意力集中放在重要的部分,选出关键信息,而忽略其他不重要的信息,来提升模型的性能。传统的手势行为识别模型(如lstm等)在提取手势行为数据特征时,认为所有特征同等重要。而手势数据不仅包含行为信息,而且还包含大量噪声(如人、墙壁或其他静态物体的反射信号)。为了使三维卷积神经网络更多关注于手部和手臂特征,本发明将空间注意力机制融合到基于3d-ghost的i3d网络中,即对输入的rgb和深度视频序列,基于注意力模块提取关键特征。
注意力机制的核心是权重参数,首先学习特征图上每个元素所表示的语义信息的重要程度,然后按重要程度为特征图上每个元素分配权重,权重越大重要程度越高。对于给定的特征图
其中σ是sigmod函数,本实施例中fd×d×d分别对应d=7和d=3的三维卷积层,favg和fmax分别是平均池化和通道池化的通道描述。输入是一个c×t×w×h的特征图f,先分别进行一个通道维度的平均池化和最大池化得到两个t×w×h×1的通道描述,并将这两个描述按照通道拼接在一起。然后经过7×7×7或3×3×3的卷积层和激活函数sigmoid,得到权重系数m(f)。
然后通过公式(2)将原特征图f和权重系数m(f)进行逐元素相乘,得到注意力加权的新特征f*。
基于3d-ghost模块的分类网络模块
ghostnet是最新提出的简单有效的分类网络,其中的ghost模块基于如下观察和分析:
cnn的特征图往往含有冗余信息,即存在幻影现象,而这些冗余信息可能是网络表现好的关键并且可以通过更简单的线性计算得到。但ghost模块只应用于二维cnn中,本发明面向动态手势视频分类问题,提出3d-ghost模块并整合到i3d这一三维卷积神经网络中。3d-ghost模块可以通过廉价的线性运算来生成更多丰富的特征图,在一组固有特征图的基础上,采用一系列低成本的线性变换,生成了大量能够充分揭示固有特征信息的幻影特征图。这个3d-ghost模块作为一个即插即用的组件来升级现有的卷积神经网络。如图6(a)、(b)为传统的三维卷积操作和3d-ghost模块的对比,可以看到3d-ghost模块先通过一次卷积生成一部分固有特征图,再通过线性运算φ1、φ2……φk生成大量幻影特征图来增强特征并对齐输出的特征图的数量。
在实际应用中,给定输入数据x∈rc×t×h×w,其中c是输入通道的数目,t是输入视频的帧数,h和w分别是输入数据的高度和宽度,三维卷积层产生n个特征图的操作可以表示为:
y=x*f+b(3)
其中*是三维卷积运算符,b是偏置项,y∈rt′×h′×w′×n具有n个通道的输出特征图,f∈rc×k×k×k×n是该层中的三维卷积核,h′和w′分别是输出数据的高度和宽度,k×k×k是三维卷积核f的大小。
以上是常规的三维卷积操作,其输出的特征图相比二维卷积操作也包含更大的冗余,并且其中一些可能彼此相似。因此,我们认为没有必要用大量的flops核参数来生成这些冗余的三维特征图,所以采用3d-ghost模块来替代三维卷积操作。具体来说,先用一次卷积生成m个固有特征图y′∈rt′×h′×w′×m。
y′=x*f′(4)
其中f′∈rc×k×k×k×m是所使用的滤波器,m≤n,为简单起见省略了偏置项。超参数(例如滤波器大小,步幅,填充)与普通的三维卷积(公式3)中的相同,以保持输出特征图的时间和空间大小(即t′、h′和w′)一致。为了进一步获得所需的n个特征图,我们根据公式(5)对y′中的每个固有特征图应用一系列线性运算,以生成s个ghost幻影特征图。
其中y′i是y′中的第i个固有特征图,φi,j表示第j个(除了最后一个)线性运算,即用于生成第j个幻影特征图yij。也就是说,y′i可以具有一个或多个幻影特征图
总体来讲,3d-ghost模块的工作机制就是先用一次三维卷积生成固有特征图,再对固有特征图进行一次三维卷积生成幻影特征图,并保留了第一次卷积的固有特征图,并将固有特征图和幻影特征图进行串联,来代替原来的三维卷积操作。将这个3d-ghost模块加入到每一个单模态网络i3d中,可以得到更丰富、更灵活的特征图表示,相关矩阵所包含的语义信息也会更丰富,本发明通过最小化ssa损失来令两个单模态网络共享一个相关矩阵,也就是令两个单模态网络共享这部分丰富的语义信息。因为是一个协作学习的框架,加入3d-ghost模块,会使两个通道间传递更丰富的语义知识来提高模型的性能。如图3所示,为基于3d-ghost模块的i3d网络,其中的inc.表示为基于3d-ghost的inception-v1子模块,其具体结构如图4所示。
基于ssa损失的知识正迁移模块
本发明是一个双通道协作框架,鼓励输入网络的弱分类模态得到强分类模态的识别结果。在训练时,当一个模态的网络不能学习到有判别力的表示,就可以使用另一个模态网络的知识改进其表示。这一种情况的反复出现会令网络以协作的方式获得更好的表示。
基线方法通过约束两个模态的语义一致性实现知识从好的模态向另一模态的迁移:
这里,ρm,n是焦点正则化参数,用于控制知识传递的方向。corr(fm)和corr(fn)分别表示第m、n通道特征图的相关矩阵。ρm,n用于强制性能较好的网络向性能较差的网络传递知识,基线网络(baseline)的焦点正则化参数为:
其中,
改进后的焦点正则化参数,可以在训练的过程中通过δl的值判断哪个模态网络有更好的特征图表示,以实现知识的正确有效传递。这种通道间的双向学习大大增强了整个框架的协作性。
损失函数
考虑到测试时,只有一种模态数据可用,所以所提模型在训练时,两个通道分别用各自的损失函数,为了共享优势模态的知识,在弱势模态的损失函数中增加时空语义对齐损失。因此,
当δl>0时,通道m和通道n的损失函数分别为:
当δl≤0时,通道m和通道n的损失函数分别为:
其中λ=0.05,为折衷超参数。
实验部分
实验数据集:本发明采用skig、viva和nvgesture三个动态手势数据集进行实验。skig动态手势数据集一共包含1080个rgb-d手势视频序列,共10种类别,样本由6个执行者分别在2种光照条件(即强光和弱光)以及3种背景图案(即白纸、木板纹理和报纸)下使用3种不同的手掌形态(即握紧拳头、手掌伸开和仅食指)来完成的。viva动态手势数据集由微软kinect设备捕获,共有885个rgb和深度信息视频序列,数据为8名受试者在汽车内执行的19种不同的动态手势。nvgesture动态手势数据集通常用于人机交互,采用多传感器多角度进行采集,它包含1532个rgb-d动态手势,其中训练集有1050个视频序列,测试集有482个视频序列,共25个类别,这些手势是由20名受试者在一个有人工照明条件的汽车模拟器中记录下来的。
评估指标:我们遵循动态手势识别领域的评估标准协议,采用top1准确率对我们的方法进行了评估。
实验设置:采用i3d网络作为两个通道的骨干网络(backbonenetwork),选择最后一个inception-v1子模块“mixed5c”的输出作为网络中应用于ssa损失的特征图。在所有实验中,λ设置为50×10-3,β=2,并采用adam优化器来优化目标函数,学习率设置为0.0001。在训练阶段,batch设为2,即每次将2个64帧的rgb-d视频序列送入网络。整个模型通过pytorch1.7来实现。训练时,首先只对每个模态分类网络进行预训练,实验进行60个epoch,然后加入ssa损失继续训练15个epoch。
将模型的性能与最先进的动态手势识别方法进行了比较。表1、表2和表3分别表示在skig、viva、nvgesture动态手势数据集上的比较结果。其中skig数据集和viva数据集没有划分训练集和测试集,所以根据这两个数据集的常用评估协议,对skig数据集采用三折交叉验证,对viva数据集采用八折交叉验证。
消融实验:在skig数据集上做消融实验来测试网络不同组件的贡献,如表4所示。我们使用基础模型作为baseline,即不添加空间注意力模块和3d-ghost模块,并使用原来的焦点正则化参数(公式7)。其中空间注意力模块(spatialattentionmodule)用sam表示,改进的焦点正则化参数(公式8)用ρm,n表示。
表1skig数据集上不同动态手势识别方法的精度比较
表2viva数据集上不同动态手势识别方法的精度比较
表3nvgesture数据集上不同动态手势识别方法的精度比较
表4测试各个模块对动态手势识别性能的影响,其中基础模型用baseline表示,空间注意力模块(spatialattentionmodule)用sam表示,改进的焦点正则化参数用ρm,n表示。