Generative Action Description Prompts for Skeleton-based Action Recognition

标题:基于骨架的动作识别的生成动作描述提示

源文链接:https://openaccess.thecvf.com/content/ICCV2023/papers/Xiang_Generative_Action_Description_Prompts_for_Skeleton-based_Action_Recognition_ICCV_2023_paper.pdficon-default.png?t=N7T8https://openaccess.thecvf.com/content/ICCV2023/papers/Xiang_Generative_Action_Description_Prompts_for_Skeleton-based_Action_Recognition_ICCV_2023_paper.pdf

源码链接:GitHub - MartinXM/GAP: official implementation for Language Supervised Training for Skeleton-based Action Recognitionicon-default.png?t=N7T8https://github.com/MartinXM/GAP

 发表:ICCV-2023

目录

摘要

1. 介绍

2. 相关工作

2.1. 基于骨骼的动作识别

2.2. 人体部位先验

2.3. 多模态表示学习

3. 方法

3.1. 生成式动作提示框架

3.2. 骨架编码器

3.3. 文本编码器

3.4. 动作描述学习

3.5 动作描述生成

4实验

4.1. 数据集

4.2. 实现细节

4.3. 消融实验

4.4. 与最新技术的比较

4.5. 讨论

5. 结论

读后总结


摘要

骨架动作识别最近受到了广泛关注。当前的骨架动作识别方法通常被形式化为独热编码分类任务,并未充分利用动作之间的语义关系。例如,“做胜利手势”和“竖起大拇指”是两种手势动作,它们的主要区别在于手部的运动。这些信息在动作类别的独热编码中是不可见的,但可以通过动作描述来揭示。因此,在训练中利用动作描述可能有助于表示学习。在这项工作中,我们提出了一种用于骨架动作识别的生成式动作描述提示(GAP)方法。更具体地说,我们采用预训练的大规模语言模型作为知识引擎,自动生成身体部位动作的文本描述,并提出了一种多模态训练方案,通过利用文本编码器为不同的身体部位生成特征向量,并监督骨架编码器进行动作表示学习。实验表明,我们提出的GAP方法在没有增加推理阶段额外计算成本的情况下,比各种基线模型取得了显著的改进。GAP在流行的骨架动作识别基准上达到了新的最先进水平,包括NTU RGB+D、NTU RGB+D 120和NW-UCLA。源代码可在https://github.com/MartinXM/GAP获取。

1. 介绍

动作识别由于其在人机交互、体育与健康分析、娱乐等方面的广泛应用,一直是一个活跃的研究课题。近年来,随着深度传感器(如 Kinect [44] 和 RealSense [14])的出现,人类身体关节数据变得易于获取。利用身体关节进行动作识别的方法,即所谓的基于骨架的动作识别,由于其计算效率高以及对光照条件、视角变化和背景噪声的鲁棒性,吸引了大量关注。

大多数之前的基于骨架的动作识别方法集中于建模人体关节之间的关系,采用单模态训练方案,以一系列骨架坐标作为输入【41, 15, 27, 9, 28, 4, 25, 40, 30, 36, 35, 22】。受最近图像和语言多模态训练成功的启发【23, 1】,我们提出了一个有趣的问题:动作语言描述能否揭示动作关系并有助于基于骨架的动作识别?遗憾的是,由于缺乏包含骨架-文本对的大规模数据集,构建这样的数据集将需要大量的时间和财力资源。因此,【23, 11, 39】中描述的训练方案不能直接应用于基于骨架的动作识别。因此,开发新的多模态训练范式以解决这一问题是必要的。

我们提出利用以语言提示的形式生成类别级人类动作描述。动作的语言定义包含丰富的先验知识。例如,不同的动作聚焦于不同身体部位的运动:“做胜利手势”和“竖起大拇指”描述手部的手势动作;“划圈”和“挥动网球拍”描述手臂的运动;“点头”和“摇头”是头部的动作;“跳跃”和“侧踢”依赖于脚和腿的运动。一些动作描述了多个身体部位的互动,例如,“戴帽子”和“穿鞋”涉及手和头、手和脚的动作。这些关于动作的先验知识可以为表示学习提供细粒度的指导。此外,为了解决收集人类动作提示的繁琐工作,我们求助于预训练的大型语言模型(LLM),例如 GPT-3 [1],以便高效地自动生成提示

具体而言,我们开发了一种新的训练范式,利用生成式动作提示进行基于骨架的动作识别。我们利用 GPT-3 [1] 作为我们的知识引擎,为动作生成有意义的文本描述,通过精心设计的文本提示,可以生成整个动作以及每个身体部位的详细文本描述。在图1中,我们将我们提出的框架(b)和(c)与传统的单编码器基于骨架的动作识别框架(a)进行了比较。在我们的框架中,开发了一种多模态训练方案,其中包含一个骨架编码器和一个文本编码器。骨架编码器将骨架坐标作为输入,并生成部分特征向量和全局特征表示。文本编码器将全局动作描述或身体部位描述转换为整个动作或每个身体部位的文本特征多部分对比损失(对于(b)为单一对比损失)用于对齐文本部分特征和骨架部分特征,并且交叉熵损失应用于全局特征上

图1:我们提出的生成式动作描述提示(GAP)框架(双编码器)与其他骨架识别方法(单编码器)的比较。除了分类损失外,我们提出的方法还包含额外的对比损失。请注意,文本编码器仅在训练阶段使用,GPT-3 用于离线动作描述生成。对于每个给定的动作查询,GPT-3 生成带有提示模板的动作文本描述,然后将该动作描述用于多模态训练

我们的贡献总结如下:
- 据我们所知,这是第一项利用生成式提示进行基于骨架的动作识别的工作,该方法将LLM作为知识引擎,并精心利用文本提示自动生成不同动作的整体动作和身体部位运动的详细文本描述
- 我们提出了一种新的多模态训练范式利用生成式动作提示指导基于骨架的动作识别,通过利用动作和人体部位的知识增强了表示。这种方法在推理阶段不增加任何计算成本,可提高模型性能。
- 借助所提出的训练范式,我们在几个流行的基于骨架的动作识别基准上取得了最先进的性能,包括NTU RGB+D、NTU RGB+D 120和NW-UCLA

2. 相关工作

2.1. 基于骨骼的动作识别

近年来,通过设计高效有效的模型架构,针对基于骨架的动作识别提出了各种方法。在[9, 28, 41]中,RNN被应用于处理人体关节的序列。HBRNN [9] 使用端到端的分层RNN来建模时间骨架序列的长期上下文信息。VA-LSTM [41] 设计了一个视角自适应的RNN,使网络能够端到端地适应最合适的观察视角。受CNN在图像任务中的成功启发,基于CNN的方法[42, 37] 被用来建模关节之间的关系。在[37]中提出了一个纯CNN架构,名为拓扑感知CNN(TA-CNN)。由于人体关节可以自然地表示为图节点,并且关节连接可以用邻接矩阵描述,因此基于GCN的方法[38, 4, 25, 2, 30]引起了很多关注。例如,ST-GCN [38] 应用了时空GCN来模拟人体关节在空间和时间维度上的关系。CTR-GCN [2] 提出了一种通道级图卷积用于精细的关系建模。Info-GCN [6] 在GCN中采用了信息瓶颈。随着视觉Transformer [8]的近期流行,基于Transformer的方法[22, 26, 35] 也被用于骨架数据的研究。所有先前的方法都采用了单模态训练方案。据我们所知,我们的工作是第一个将多模态训练方案应用于基于骨架的动作识别的工作。

2.2. 人体部位先验

在先前的工作中,为了基于骨架的动作识别,已经通过设计特殊的模型架构使用了人体部位先验[32, 29, 35, 10]。PB-GCN [32] 将骨架图划分为四个子图,并使用基于部位的图卷积网络学习识别模型。PA-ResGCN [29] 计算了人体各部位的注意力权重,以提高特征的判别能力。PL-GCN [10] 提出了一个部位级别的图卷积网络,自动学习部位划分策略。IIP-transformer [35] 应用了Transformer来学习部位间和部位内的关系。与先前的方法相比,我们直接使用部分语言描述来指导多部分对比损失训练过程中的表示学习。我们没有设计任何复杂的部位建模模块,因此在推理阶段不会增加额外的计算成本。

2.3. 多模态表示学习

多模态表示学习方法,如CLIP [23] 和 ALIGN [11],已经表明,视觉-语言联合训练可以为零样本学习、图像描述生成、文本-图像检索等下游任务学习强大的表示。UniCL [39] 使用了一种统一的对比学习方法,将图像标签视为图像-文本-标签数据,以学习通用的视觉-语义空间。然而,这些方法需要一个大规模的图像-文本配对数据集进行训练。ActionCLIP [34] 遵循了CLIP的训练方案进行视频动作识别,使用了预训练的CLIP模型,并添加了Transformer层来对视频数据进行时间建模。至于动作描述,标签名称直接作为文本提示,前缀和后缀不包含太多语义意义,例如,“一个关于[action name]的视频”,“人类动作[action name]”等。相比之下,我们使用LLM(GPT-3)作为知识引擎,生成动作中人体运动的描述,为表示学习提供细粒度的指导。此外,我们在身体部位上采用多部分对比损失,学习精细的骨架表示Prompt Learning(PL)[46, 45, 12] 方法旨在通过引入可学习的提示向量解决零样本学习和少样本学习带来的挑战。虽然PL已经展示了有希望的结果,但学习到的提示向量的可解释性仍然是一个挑战。最近,[20] 应用LLM生成零样本图像分类的描述。STALE [21] 使用并行分类和定位/分类架构进行零样本动作检测。MotionCLIP [31] 旨在将动作潜在空间与CLIP潜在空间对齐,用于3D人体动作生成。ActionGPT [13] 使用LLM生成详细的动作描述进行动作生成。我们的研究是同时进行且独立进行的。所有这些方法在推理期间都需要一个文本编码器,而我们提出的框架仅在训练阶段施加开销,在测试期间不增加任何计算或内存成本

3. 方法

在本节中,我们详细介绍提出的生成式动作描述提示(GAP)框架。GAP旨在利用自动生成的动作描述增强骨架表示学习,并且可以嵌入到现有的主干网络中。因此,GAP可以与各种骨架和语言编码器配合使用。在接下来的章节中,我们首先概述GAP框架,然后详细介绍骨架编码器、文本编码器以及GAP的主要组成部分。

3.1. 生成式动作提示框架

我们的GAP方法的综合框架如图2所示。它由一个骨架编码器Es和一个文本编码器Et组成,分别用于生成骨架特征和文本特征。训练损失可以表示为:

\mathcal{L}_{total}=\mathcal{L}_{cls}(E_s(\mathcal{S}))+\lambda\mathcal{L}_{con}^{multi}(E_s(\mathcal{S}),E_t(\mathcal{T})),\quad(1)

其中,Lcls是交叉熵分类损失,\mathcal{L}_{con}^{multi}是多部分对比损失。骨架输入S\in R^{B\times 3\times N\times T},其中B是批量大小,3是坐标参数数量,N和T分别是关节数量和序列长度。λ是可学习的权衡参数。T是LLM生成的文本描述。

图2:具有多部分对比损失的生成式动作描述提示(GAP)的总体框架。在训练期间,骨架编码器同时使用交叉熵损失和多部分对比损失进行训练。我们使用GPT-3生成的动作描述作为文本编码器的输入,以生成人体部位特征。然后,利用多部分对比损失将部位特征与骨架编码器的部位特征对齐在测试期间,只使用来自骨架编码器的全局特征进行分类,文本编码器被忽略

在训练期间,Es 使用交叉熵损失和多部分对比损失进行训练,其中部分文本描述作为额外的指导全局骨架特征通过对所有关节点进行平均池化生成,部分骨架特征通过对各个节点组的特征进行平均池化生成骨架部分特征通过全连接层(FC层)映射,以保持与文本特征相同的特征维度文本部分描述由LLM离线生成,并在训练期间由Et编码以生成文本部分特征在测试阶段,我们直接使用骨架编码器的全局特征进行动作概率预测。因此,与先前仅使用骨架编码器的方法相比,我们的GAP框架在推理时不会增加额外的内存或计算成本

3.2. 骨架编码器

由于其高效性和强大性能,图卷积网络(GCN)在骨架动作识别中普遍存在。因此,我们在GAP框架中采用GCN作为骨架网络的主干。我们的骨架编码器由多个GC-MTC块组成,每个块包含一个图卷积(GC)层和一个多尺度时间卷积(MTC)模块

图卷积。人体骨架可以表示为图G = {V, E},其中V是人体关节点的集合,|V| = N,E是边的集合。记\mathbf{H}^l\in\mathbb{R}^{N\times F}为第l层的人体关节特征,特征维度为F。图卷积可以表述如下:H_{l+1} = \sigma (D^{-\frac{1}{2}}AD^{-\frac{1}{2}}H^l W^l)\qquad(2)

其中D\in R^{N \times N }是度矩阵(度表示与该节点相连的边的数量),A是表示关节连接的邻接矩阵,W^l是第l层的可学习参数,σ是激活函数。

这个图卷积公式是基于谱图卷积(Spectral Graph Convolution)的理论推导得来的。在这个公式中:

- H_l 是输入图的节点特征矩阵,H_{l+1}  是输出图的节点特征矩阵。
- A 是图的邻接矩阵,表示节点之间的连接关系。
- D 是度矩阵,是一个对角矩阵,其对角线上的元素是每个节点的度数。
- W_l  是可学习的参数矩阵,用于将输入特征转换到输出特征空间。
- \sigma是激活函数。

这个公式的推导基于拉普拉斯矩阵的谱分解。通过度矩阵D的逆平方根和邻接矩阵 A 的乘积,实现了对节点特征的归一化处理,这有助于处理图结构中不同节点度数的影响。然后,通过乘以参数矩阵W_l,将归一化后的特征进行线性变换。最后,通过激活函数\sigma 进行非线性变换,生成输出特征矩阵  H_{l+1}。

多尺度时间建模。为了对不同时间尺度下的动作进行建模,我们利用[19, 2]中的多尺度时间卷积模块进行时间建模。该模块包括四个不同的分支,每个分支都包含一个1 × 1卷积来减少通道维度。其中有两个具有不同扩张率(1和2)的时间卷积分支,以及一个最大池化分支,第四个分支仅包含1 × 1卷积。四个分支的输出被连接起来以产生最终结果。

骨架分类。基于骨架的动作识别方法将人体骨架数据映射到动作标签的独热编码,这些标签通过交叉熵损失进行训练:
\mathcal{L}_{cls}=-y\log p_\theta(x), \qquad(3)
其中, y 是独热编码的真实动作标签, x 是全局骨架特征,p_{\theta}(x)是预测的概率分布。

3.3. 文本编码器

考虑到最近Transformer模型在自然语言处理领域取得的成功,我们采用一个预训练的基于Transformer的语言模型作为我们的文本编码器E_t,例如BERT [7] 或 CLIP-text-encoder [23]。输入以文本的形式呈现,并经过标准的分词处理。随后,特征通过一系列Transformer模块进行处理。最终的输出是一个表示文本描述的特征向量。对于不同的人体部位,我们使用不同的部位描述作为文本编码器的输入

3.4. 动作描述学习

骨架语言对比学习。相较于骨架分类中的独热标签监督,骨架语言对比学习利用自然语言进行监督。它采用了双编码器设计,包括骨架编码器 E_s和文本编码器E_t,分别用于编码骨架数据和动作描述。这两个双编码器通过在批次内的两个方向上(从骨架到文本的方向(s→t)和从文本到骨架的方向(t→s))对比骨架-文本对进行联合优化:

\begin{aligned} &p_{i}^{s2t}(\mathbf{s_{i}}) =\frac{\exp(sim(\mathbf{s_i},\mathbf{t_i})/\tau)}{\sum_{j=1}^B\exp(sim(\mathbf{s_i},\mathbf{t_j})/\tau)}, \\ &&\text{(4)} \\ &p_{i}^{t2s}(\mathbf{t_{i}}) =\frac{\exp(sim(\mathbf{t_i},\mathbf{s_i})/\tau)}{\sum_{j=1}^B\exp(sim(\mathbf{t_i},\mathbf{s_j})/\tau)}, \end{aligned}

其中,s, t 分别是骨架和文本的编码特征,sim(s, t) 是余弦相似度, \tau 是温度参数, B  是批次大小。与CLIP中的图像-文本对是一对一映射不同,在我们的设置中,可能存在多个正匹配,不同类别的动作形成负对,因此,我们不使用交叉熵损失,而是使用KL散度作为骨架-文本对比损失

\begin{aligned}\mathcal{L}_{con}&=\frac{1}{2}\mathbf{E}_{\mathbf{s},\mathbf{t}\sim\mathcal{D}}[KL(p^{s2t}(\mathbf{s}),y^{s2t})+KL(p^{t2s}(\mathbf{t}),y^{t2s})],\qquad(5)\end{aligned}

其中,D 是整个数据集,y_{s \rightarrow t}y_{t \rightarrow s}是真实标签相似度分数,对于负对其概率为0,对于正对其概率为1。ps→t​(s) 是从骨架到文本的方向上的匹配概率分布。

在训练过程中,对于给定的一对骨架和文本,可能存在多个动作类别的文本描述与之匹配,这些被匹配的文本描述都被认为是正匹配。但是,同时也可能存在其他动作类别的文本描述与该骨架特征形成负对,因为它们与骨架特征的语义不匹配,这些被匹配的文本描述都被认为是负匹配。因此,在这种情况下,对于同一个骨架特征,可能存在多个正匹配和多个负匹配的文本描述。

在这个设置中,每个骨架可以与多个文本描述相匹配,这与 CLIP 中的图像-文本对是一对一映射不同。这种情况下,采用交叉熵损失可能会带来一些问题:

  1. 多样性匹配: 对于同一个骨架,可能存在多个动作描述与之相关联,因此不存在唯一的“正确答案”。在交叉熵损失中,每个样本只有一个正确的标签,但在这种情况下,很难确定哪一个是“正确”的标签。

  2. 负样本处理: 除了存在多个正匹配之外,还可能存在不匹配的负样本,即来自不同动作类别的文本描述。在交叉熵损失中,负样本通常被视为来自其他类别,但在这种设置中,负样本可能与骨架存在某种相似性,因此不适合简单地将其视为负样本

因此,选择使用 KL 散度作为骨架-文本对比损失的主要原因是,它能够更好地适应这种多对多的匹配情况,并更准确地衡量模型预测与实际匹配之间的差异。KL 散度损失考虑了匹配概率分布的相对关系,能够更好地反映模型预测与地面实况之间的相似度。

多部分对比学习。考虑到人体部位的先验知识,骨架可以被划分为多个组。我们在图1(c)中展示了这个框架。我们对不同部位的特征以及全局特征应用对比损失,并提出了多部分对比损失部分特征可以通过部分汇聚获得,其中同一组内的关节特征被聚合以生成部分表示。更具体地说,我们选择最终分类层之前的特征进行部分特征汇聚。在图3中,我们展示了不同的部分划分策略。对于两个部分划分,整个身体被分为上半身和下半身两组。对于四个部分划分,身体被分为四组:头部、手臂、臀部、腿部。对于六个部分划分,头部、手部、臂部、髋部、腿部和脚部分别分组。多部分对比损失的损失函数可以表示为:

\mathcal{L}_{con}^{multi}=\frac{1}{K}\sum_{k=1}^{K}\mathcal{L}_{con}^{k},\quad(6)

其中,K 是骨架被分成的不同部分或组的数量。

3.5 动作描述生成

对于文本编码器的动作描述 T 在 GAP 中起着至关重要的作用。在这里,我们探讨了几种不同的描述生成方法。图 4 展示了不同方法生成的动作“穿鞋子”的文本描述。

标签名称Label Name。一种直接的方法是直接使用标签名称。许多方法 [34] 使用这种类型的文本描述,带有前缀和后缀,如“[动作]的人类动作”,“[动作],一个动作的视频”等。虽然这些提示可以提升零样本和少样本问题的性能,但在我们的监督学习案例中,由于这些提示不包含关于动作的具有辨别性的语义信息,因此这种方法并没有带来显著的性能改进(正如我们的消融研究所示)。

HAKE部分状态。 HAKE [17]数据集包含人-物互动的注释部分状态。 对于每个样本,手动注释了六个身体部位的运动(头部、手、臂、臀部、腿、脚),总共有93个部分状态。 为了避免对每个样本进行繁琐的注释,我们应用了一个自动化流程,其中包含两个步骤:1)使用预训练的变压器文本编码器分别为标签名称和 HAKE 部分状态生成文本特征;2)通过在 HAKE 部分状态特征空间中,找到动作标签名称的 K 个最近邻(与动作标签名称的文本特征最相似的k个)来生成文本描述。 最接近动作标签名称的那些 HAKE 部分状态被选中作为动作描述。 然后我们使用这个生成的部分描述进行 GAP

手动描述。我们要求标注者按照动作的时间顺序写下身体部位移动的描述。这些描述由预定义的基本动作组成。我们要求标注者专注于最显著的部分运动。

大型语言模型。我们使用大规模语言模型(例如,GPT-3)来生成文本描述。我们设计文本提示,以便它可以生成我们期望的动作描述。文本描述可以通过三种方式生成。a)段落:一整段可以详细描述动作的描述;b)同义词:我们收集动作标签的10个同义词;c)部分描述:我们为每个动作收集不同身体部位的描述。身体分区策略遵循前一节的图3。我们以“穿鞋子”为例,并在图5中展示了用于生成不同描述的提示。

段落:Q段:描述一个人“穿鞋”的细节。A:这个人正在穿鞋。他正弯下腰,把脚伸进鞋里。他正在系鞋带。他做得又快又有效率。

同义词Q:建议10个“穿鞋”的同义词a:靴子,系上鞋带,穿上,步入,系上带子,系上领带,塞进,拉上拉链,穿上,系紧

部分描述:Q:描述“穿鞋”时身体部位的动作:头、手、手臂、臀部、腿、脚。A:头部微微前倾;手伸下去,抓住鞋子;手臂向前向下伸展;髋部保持静止;腿在膝盖处弯曲,使脚更靠近手;脚插入鞋中。

4实验

4.1. 数据集

NTU RGB+D [24] 是用于基于骨架的人体动作识别的广泛使用的数据集。它包含 56,880 个骨架动作序列。有两个用于评估的基准,包括跨主体(X-Sub)和跨视角(X-View)设置。对于 X-Sub,训练集和测试集来自两个不相交的集合,每个集合有 20 个主体。对于 X-View,训练集包含由摄像机视图 2 和 3 拍摄的 37,920 个样本,测试集包括由摄像机视图 1 拍摄的 18,960 个序列。

NTU RGB+D 120 [18] 是 NTU RGB+D 数据集的扩展,增加了 57,367 个额外的骨架序列和 60 个额外的动作类别。总共有 120 个动作类别。作者建议了两种基准评估方法,包括跨主体(X-Sub)和跨设置(X-Setup)设置。

NW-UCLA [33] 数据集由三个不同视角的 Kinect V1 传感器录制。骨架包含 20 个关节和 19 条骨连接。它包括 1,494 个视频序列,涵盖了 10 个动作类别。

4.2. 实现细节

对于 NTU RGB+D 和 NTU RGB+D 120,每个样本被调整为 64 帧,并采用 [43, 6] 的代码进行数据预处理。对于 NW-UCLA,我们遵循 [5, 2, 6] 中的数据预处理流程。对于我们的消融研究,我们使用单尺度时间卷积的 CTR-GCN,考虑到其在性能和效率之间的良好平衡。对于具有 ST-GCN 骨干网络的消融研究,请参阅补充材料。与其他方法进行比较时,我们采用 CTR-GCN 与多尺度时间卷积,因为它产生了最好的结果。对于文本编码器,我们使用 CLIP 或 BERT 的预训练文本变压器模型,并在训练过程中微调其参数。对比损失的温度设置为 0.1。至于 GPT-3 生成的动作描述的非确定性,我们在训练过程中通过采样有效地利用了生成的结果。例如,在我们的同义词场景中,我们生成了大量的同义词,并随机选择其中一些进行训练

对于 NTU RGB+D 和 NTU RGB+D 120,我们将模型训练总轮数设置为 110 轮,批大小为 200。我们在前 5 轮采用热身策略。初始学习率设为 0.1,并在第 90 和 100 轮时减小 10 倍,权重衰减设为 5e-4,遵循 [6] 中的策略。对于 NW-UCLA,批大小、轮数、学习率、权重衰减、减小步长、热身轮数分别设置为 64、110、0.2、4e-4、[90,100]、5。

4.3. 消融实验

在本节中,我们进行实验评估不同组件的影响。实验在 NTU120 RGB+D 数据集的联合模态和 X-Sub 设置上进行。更多的消融研究请参考补充材料。

分区策略。我们测试了不同的身体分区策略用于 GAP,并将结果显示在表1a中。“全局”代表使用动作的全局描述和单一对比损失,相比基线提高了0.6%。使用更多的部分和多部分对比损失可以稳定地提高性能,当使用4个部分时,性能饱和至85.4%。

文本提示的影响。文本提示的设计对模型性能有很大影响。我们在表1b中展示了不同文本提示的影响。通过直接使用标签名称(带前缀或后缀)作为 GAP 中的文本提示,模型的性能仅略优于基线模型(0.2%),因为这并没有为训练带来额外的信息。利用标签名称的同义词列表或全局描述段落可以大大提高性能(0.6%),因为它丰富了每个动作类别的语义含义。使用部分描述提示会带来强大的性能,提高了0.8%。通过将标签名称的同义词和身体部位描述结合起来作为提示,实现了最佳性能,准确率达到了85.5%。

文本编码器的影响。在表1c中,我们展示了文本编码器的影响。我们发现,无论是XFMR(来自CLIP [23]的文本编码器)还是BERT都能取得良好的性能,表明骨架编码器可以受益于具有不同预训练来源(图像-语言或纯语言)的文本编码器。考虑到XFMR-32在效率和准确性之间的良好平衡,我们将其作为默认的文本编码器

GAP对不同的骨架编码器的影响。我们提出的GAP与网络架构解耦,可以用来改进不同的骨架编码器。在表1d中,我们展示了将GAP应用于ST-GCN [38]、CTR-baseline和CTR-GCN [2]的实验结果。GAP在推理阶段没有额外的计算成本,带来了一致的改进(0.6-1.2%),表明了GAP的有效性和泛化能力。

描述方法的比较。我们在表1e中比较了几种获取文本编码器文本提示的不同方法,包括:手动描述;HAKE部分状态;使用GPT-3生成文本提示。对于手动描述和 HAKE 结果,我们将它们用作 GAP 的全局描述。在这些方法中,GPT-3 可以通过精心设计的文本提示提供非常详细的人体部分描述,生成的部分文本描述实现了最佳性能。我们还实现了一个部分池化分类基线用作参考,该基线对每个池化的部分特征应用分类头。由于部分特征可能不足以预测动作类别,这个基线效果不佳。

与提示学习方法的比较。在表1f中,我们将GAP与使提示可学习的PL方法进行了比较。PL在固定或调整了文本编码器(TE)参数的情况下均优于基线。GAP进一步比PL提高了0.3%,这表明了生成提示和多部分范式的有效性

λ选择的影响。λ 的选择对模型性能有着重要的影响。为了研究在公式 1 中的权衡参数 λ 的影响,我们在 {1.0, 0.8, 0.5, 0.2} 中进行了搜索,并采用了 5 折交叉验证。模型的性能分别为 85.4%,85.5%,85.3% 和 85.2%。我们发现 λ = 0.8 取得了最佳性能;因此,我们将其作为我们默认的 λ 值,并在不同基准数据集的所有实验中使用它。

4.4. 与最新技术的比较

我们将我们的方法与之前的最新技术进行比较,结果如表2、3和4所示。为了公平比较,我们采用了4个合奏策略(Joint、Joint-Motion、Bone、Bone-Motion),因为大多数先前的方法都采用了这种策略。结果是5次运行的平均值,标准偏差约为0.1。如表2所示,在NW-UCLA数据集上,GAP的表现优于CTR-GCN约0.7%。它还优于最近的工作Info-GCN[6]约0.6%,后者使用了自注意层和信息瓶颈。考虑到该数据集上模型的性能已经非常高,我们认为这样的改进是显著的。在NTU RGB+D数据集上,GAP在交叉主体和交叉视图设置上分别比CTR-GCN[2]高出0.5%和0.2%,在这两种设置上,它分别比Info-GCN高出0.2%和0.1%。如表4所示,在最大的数据集NTU RGB+D 120上,我们的方法在交叉主体设置上比CTR-GCN大幅领先(1.0%),在交叉设置上领先0.5%。Info-GCN在这个数据集上也取得了很好的表现,而GAP仍然比它分别高出0.5%和0.4%。总的来说,GAP在NW-UCLA、NTU RGB+D和NTU RGB+D 120数据集上的表现始终优于最新技术,在不同设置下验证了其有效性和鲁棒性

4.5. 讨论

为了更深入地讨论所提出的GAP方法,我们利用了在NTU RGB+D 120交叉主体模式数据集上使用联合模态训练的模型。在图6中,我们展示了在NTU120数据集中,使用GAP和不使用GAP之间存在超过4%绝对准确度差异的动作类别。对于动作类别如“写字”、“打开盒子”、“吃饭”和“使用刀具”等,GAP都带来了显著的好处,这是因为语言模型为这些动作生成了详细的身体部位运动描述。另一方面,对于“剪纸”、“自拍”、“玩魔方”和“玩手机/平板电脑”等动作类别,GAP的表现较差。我们的分析揭示了这些表现不佳的动作与表现良好的动作之间的主要区别在于前者与物体相关,这使得使用骨架数据来识别它们变得具有挑战性。此外,数据集中存在的类别偏差也可能导致我们提出的方法在NTU120中对与物体相关的动作的性能变化。例如,在分析“剪纸”时,我们发现它与“擦手”(也出现在NTU120中)之间的主要区别在于有物体被拿着,比如纸和剪刀。相反,虽然“打开一个盒子”也是一个与物体相关的动作,但在NTU120数据集中没有其他与物体相关的相似动作,比如“展开衣服”。有关更多讨论和可视化结果,请参阅补充材料。

5. 结论

我们提出了一种新颖的生成式动作描述提示(GAP)框架,用于基于骨架的动作识别。据我们所知,这是首个利用动作知识先验进行骨架动作识别的工作。我们利用大规模语言模型作为知识引擎,自动生成详细的身体部位描述,无需繁琐的手工注释GAP利用知识提示来引导骨架编码器,并通过关于动作与人体部位关系的知识增强了学到的表示。广泛的实验表明,GAP是一个通用的框架,可以与各种骨干网络相结合,以增强表示学习。GAP在NTU RGB+D、NTU RGB+D 120和NW-UCLA基准数据集上取得了新的最先进水平。

读后总结

出发点:独热编码无法表示动作之间的相似性和差异性,模型只能通过大量数据学习动作的区分特征,而无法利用潜在的语义信息进行指导。这可能导致对相似动作区分不清,对语义相关的动作无法有效识别。

创新点:提出一种用于骨架动作识别的生成式动作描述提示(GAP)方法,通过在训练中利用动作描述,来辅助骨架信息,通过两个编码器(骨架编码器、文本编码器),骨架编码器部分,生成全局平均特征和部分平均特征;文本编码器部分,首先通过大语言模型生成适配标签的文本,再通过文本编码器生成全局和部分特征;最后将骨架编码器的特征和文本编码器的特征进行对齐,通过文本编码器的特征辅助骨架编码器特征,使得骨架编码器能够学习到更加丰富和准确的特征,通过计算骨架特征与文本特征之间的相似度(使用对比损失),模型能够更好地理解和区分不同的动作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332322.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正运动控制器:视觉纠偏和找孔

一、用户主界面CCD参数设置 通过主界面CCD参数设置,学习如何操作计算相机中心与电批中心的偏移量,以及相机标定的功能。 1、相机中心与电批中心的偏移量计算 1.1、在用户主界面点击CCD参数按钮,进入CCD设置界面。 主界面 CCD参数设置界面 1…

显存碎片化与CUDA OOM解决

目录 一.显存碎片化与CUDA OOM解决 1.查看显卡内存容量 2.显存碎片化 (1)如何理解显存中“已分配”和“未分配”的内存块? (2)碎片化形成的原因? (3)如何减轻显存碎片化? 3.实…

空间注意力机制

第一步是沿着通道维度进行最大池化和平均池化,比如下面3*3的特征图,有3个通道。 第二步新特征图进行拼接并经过卷积调整通道数 第三步经过Sigmoid函数后乘到输入上 代码: class SpatialAttention(layers.Layer):def __init__(self):super(S…

Hibernate

主流ORM框架Object Relation Mapping对象关系映射,将面向对象映射成面向关系。 如何使用 1、导入相关依赖 2、创建Hibernate配置文件 3、创建实体类 4、创建实体类-关系映射文件 5、调用Hibernate API完成操作 具体操作 1、创建 Maven工程,在pom.xml中导…

Milvus Cloud 非结构化数据平台

从技术面来看,向量数据库底座自然而然向外延伸的产品包含: 1)向量提取,从非结构化数据中提取向量,这是向量数据库上游的工作,十分重要; 2)模型选择,选择正确的模型,能够更精准、更高质量地提取向量; 3)映射管理,即管理数据的本体和数据的语义层之间的映射,在…

【Linux杂货铺】进程通信

目录 🌈 前言🌈 📁 通信概念 📁 通信发展阶段 📁 通信方式 📁 管道(匿名管道) 📂 接口 ​编辑📂 使用fork来共享通道 📂 管道读写规则 &…

01.并发编程简介

1 什么是并发编程 所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。 2 为什么我们要学习并发编程? 最直白的原因就是因为面试需要,大厂的 Java 岗的并发编程能力属于标配。 而在非大厂…

【Python特征工程系列】一文教你使用PCA进行特征分析与降维(案例+源码)

这是我的第287篇原创文章。 一、引言 主成分分析(Principal Component Analysis, PCA)是一种常用的降维技术,它通过线性变换将原始特征转换为一组线性不相关的新特征,称为主成分,以便更好地表达数据的方差。 在特征重要…

【数据结构】二叉树的认识与实现

目录 二叉树的概念: 二叉树的应用与实现: 二叉树实现接口: 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 二叉树节点个数​编辑 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点​编辑 二叉树前序遍…

全网讲的最详细的Docker镜像分层存储原理

先说结论,容器镜像分层存储图示 欢迎关注 实验环境准备 当前实验docker版本24.0.7如下,当前docker版本使用overlay2机制存储镜像 Client: Docker Engine - CommunityVersion: 24.0.7API version: 1.43Go version: go1.20.10…

Redis第18讲——Redis和Redission实现延迟消息

即使不是做电商业务的同学,也一定知道订单超时关闭这种业务场景,这个场景大致就是用户下单后,如果在一定时间内未支付(比如15分钟、半小时),那么系统就会把这笔订单给关闭掉。这个功能实现的方式有很多种&a…

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度: 提升速度: -知识蒸馏,以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点,混合精度(fp32和fp26混合来降低计算精度从从而实现速度的提升) 提…

【Week-R1】RNN实现心脏病预测,基于tensorflow框架

文章目录 一、什么是RNN?二、准备环境和数据2.1 导入数据 三、构建模型四、训练和预测五、其他(1)sklearn模块导入报错:ModuleNotFoundError: No module named sklearn(2)优化器改为SGD,accurac…

SVM兵王问题

1.流程 前面六个就是棋子的位置,draw就是逼和,后面的数字six就代表,白棋最少用六步就能将死对方。然后呢,可以看一下最后一个有几种情况: 2.交叉测试 leave one out: 留一个样本作测试集,其余…

基于51单片机的超声波液位测量与控制系统

基于51单片机液位控制器 (仿真+程序+原理图PCB+设计报告) 功能介绍 具体功能: 1.使用HC-SR04测量液位,LCD1602显示; 2.当水位高于设定上限的时候,对应声光报警报警&am…

【ai】pycharm安装langchain 相关module

pycharm module install 【Python学习 】一篇文章教你PyCharm如何快速安装module 【python】pycharm如何安装python的模块包版本 2024.1.2 RC2 找到当前的虚拟项目 找到解释器 我现在配置为专门为openai-start 准备的3.10 版本+ 号可以找到模块

leetcode-顺时针旋转矩阵-111

题目要求 思路 1.假设现在有一个矩阵 123 456 789 2.我们可以根据19这个对角线将数据进行交换&#xff0c;得到矩阵 147 258 369 3.然后将矩阵每一行的数据再翻转&#xff0c;得到矩阵 741 852 963 代码实现 class Solution { public:vector<vector<int> > rot…

设计模式深度解析:分布式与中心化,IT界两大巨头“华山论剑”

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨IT界的两大巨头交锋✨ &#x1f44b; 在IT界的广阔天地中&#xff0c;有两座…

JavaFX安装与使用

前言 最近学习了javafx,开始时在配置环境和导包时遇到了一些麻烦,关于网上很多方法都尝试过了,现在问题都解决了,和大家分享一下我是怎么实现javafx的配置,希望大家可以通过这个方法实现自己的环境配置! &#x1f648;个人主页: 心.c &#x1f525;文章专题:javafx &#x1f49…

嵌入式实时操作系统笔记1:RTOS入门_理解简单的OS系统

今日开始学习嵌入式实时操作系统RTOS&#xff1a;UCOS-III实时操作系统 本次目标是入门RTOS&#xff0c;理解多任务系统...... 本文只是个人学习笔记&#xff0c;基本都是对网上资料的整合...... 目录 STM32裸机与RTOS区别&#xff1a; 裸机中断示例&#xff1a; RTOS对优先级…