OpenVI-感知理解系列之GAP骨骼点动作识别 ICCV23顶会论文深入解读

本文涉及的产品
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频通用资源包5000点
简介: 本文介绍了ICCV23中稿论文 GAP: Generative Action Description Prompts for Skeleton-based Action Recognition

论文&代码

背景

基于骨架的动作识别(skeleton-based action recognition)由于它的效率和鲁棒性,近年来受到了广泛关注。目前的基于骨架的动作识别方法通常被定义为一种one-hot的编码分类任务,没有充分利用动作之间的语义关系。例如,"make a victory sign" (“做出胜利的手势”) 和 "Thumb up"(“竖起拇指”)是两种手势动作,其主要区别在于手部的运动。这些细粒度的信息难以从动作类别的分类编码中被获知,但可以在对动作描述中被感知到。因此,在训练中利用动作描述可能有助于表示学习。在本文中,我们提出了一种基于骨架的动作识别方法-GAP。具体来说,我们首创利用预训练的大规模语言模型作为知识引擎(knowledge engine),自动生成动作各个身体部位运动的文本描述,并提出了一种多模态训练方案,利用文本编码器生成不同身体部位的特征向量并监督骨架编码器进行动作表示学习。实验证明,我们提出的GAP方法在各种基线模型上实现了显著的改进,而不需要额外的计算成本。GAP在包括NTU RGB+D、NTU RGB+D 120和NW-UCLA在内的流行的基于骨架的动作识别基准测试中取得了新的最高水平。总的来说,我们的方法证明了利用自然语言描述,可以更好地理解动作语义,并提高基于骨架的动作识别(skeleton-based action recognition) 性能的有效性。我们的研究提供了一种新的范式,即如何利用LLM来提升传统计算机视觉任务的性能,为未来的研究提供了新的思路。

方法


1693471394077-4bba2fae-1c69-4e80-a4e6-e37e9bc14210.png

图1 不同骨骼点动作识别框架的对比

• 首次提出使用大语言模型(LLM)生成对动作的细粒度描述,从而提升动作识别的精度

• 简单、有效,仅在训练时增加计算量,对测试速度没有影响

• 在多个标准测试集上: NTU RGB+D, NTU RGB+D 120 and NW-UCLA取得了SOTA

1693471502890-1c412621-3420-4351-b98f-8acae7515b15.png

图2 整体框架图

核心贡献

使用LLM生成的动作描述,对动作识别训练进行细粒度的监督

使用LLM(GPT3)生成对于动作的细粒度描述(Head, Hand, Hip, Leg)

使用Multi-part Contrastive Loss,对人体不同的部位特征分别进行监督

推理时只使用全局特征,无需使用text encoder, 加快推理速度

人体分区

通过对人体不同区域特征进行池化(pooling)获得对应区域的特征

1693472013423-dee42cf8-2ea0-4d65-acd3-d4d93fdf52b9.png

大语言模型进行动作描述生成

使用Prompt+动作名称,生成对应的动作描述

具体的生成模式包含: Paragraph (一整段描述);Synonym (同义词);Part description (分人体部位描述). 详情可见图4和图5。

1693471779281-29ef6592-601b-4d5b-b554-898d959aeb0d.png

1693471795032-916f33c9-3bc0-4ff2-b8b3-5d6c2b5eb9f2.png

损失函数

交叉熵损失函数

1693471918963-4729471a-49b4-46ed-840e-7335871ef9b6.png

对比损失函数

1693471911264-0d235c49-e2ca-4cd1-9069-2f7f4dfbd8bf.png

人体部位分区对比损失函数(人体分区如图3所示)

1693471947405-5e969653-e28c-4eb4-a79c-09eb641191a2.png

总体损失函数

1693471985386-16fd3fb9-fa26-48f0-928b-caa35c9c800a.png

实验结果

  • 消融实验
  • 我们对GAP的不同部份进行了消融实验,包括人体部位分区策略,text prompt生成方式,text encoder, skeleton encoder, 描述方法等等。

1693461432996-c63a043f-aac5-473e-9107-daee212b41a7.png

  • SOTA对比
  • 从表格2-4中可以看到,我们在NW-UCLA, NTU RGB+D, NTU RGB+D 120上,均取得了SOTA性能。

1693461454061-81a3b449-935d-4ba6-8407-a710d5cbcf98.png1693461470241-6ddb1cff-1518-4696-a32f-68ec95be4b88.png

1693461522256-78a67f6f-f76c-41cb-b373-646ee6ac466f.png

  • 分析讨论

1693461934664-86201363-b992-4760-bdc5-64cbdeb52c61.png

为了深入理解GAP方法,我们在NTU RGB+D 120上进行详细的分析和讨论。在图6中,我们展示了在NTU120上使用GAP和不使用GAP之间存在超过4%的绝对准确率差异的动作类别。对于动作类别如"写字(writing)"、"打开盒子(open a box)"、"进餐(eat meal)"和"挥刀(wield knife)"等动作,我们可以观察到GAP能显著地提高这些类别的准确率,因为语言模型能够为这些动作生成详细的身体部位运动描述。但是,对于"剪纸(cutting paper)"、"自拍(taking a selfie)"、"玩魔方(play magic cube)"和"玩手机/平板电脑 (play with phone/tablet)"等动作类别,GAP的性能较差。我们认为这些性能差的动作与性能好的动作之间的主要区别在于前者与物体相关,使用骨架数据来识别它们很具有挑战性。此外,数据集中存在的类别偏差可能也会导致我们在NTU120上提出的方法在与物体相关的动作上表现差异。因为数据集中可能存在其他相似的动作类别。例如,通过分析"剪纸(cutting paper)",我们发现它与"双手搓揉(rubbing two hands)"(也出现在NTU120中)之间的主要区别在于持有的物体,如纸张、剪刀。相反,虽然"打开盒子(opening a box)"也是与物体相关的动作,但在NTU120数据集中没有与此相似的其他动作,如"展开衣服(unfold clothes)"。更多的分析,可以参考我们的论文。

总结

我们开发了一种新的基于骨骼点的动作识别框架(GAP),这是首个使用动作知识先验进行骨骼点动作识别的工作。我们采用了大规模语言模型(LLM)作为知识引擎,自动生成详细的身体部位描述,避免了繁琐的手动标注。GAP利用动作描述来引导骨骼点编码器的学习并增强学到的表征,使其具备关于动作和人体部位关系的知识。大量实验证明GAP是一个通用的框架,可以与各种骨干网络组合,以增强表征学习。GAP在NW-UCLA、NTU RGB+D、NTU RGB+D 120这些标准数据集上取得了SOTA效果。

目录
相关文章
|
机器学习/深度学习 Shell 算法框架/工具
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
1888 0
|
应用服务中间件 nginx
nginx优化:URI过长或request header过大导致400或414报错
当出现URI过长或请求头过大导致400或414报错时,可以通过以下方式对Nginx进行优化: 1. 调整client_max_body_size参数:该参数用于限制请求体的大小。默认情况下,Nginx的client_max_body_size参数设置为1M。如果请求体超过这个大小,Nginx会返回400错误。您可以根据实际需求适当增加这个值,例如设置为10M或更大。 ``` http { client_max_body_size 10M; } ``` 2. 调整large_client_header_buffers参数:该参数用于调整请求头缓冲区的大
7371 0
|
并行计算 Ubuntu 机器人
计算机视觉教程7-3:Openpose配置与实践
计算机视觉教程7-3:Openpose配置与实践
3124 0
计算机视觉教程7-3:Openpose配置与实践
|
自然语言处理 算法 数据挖掘
自蒸馏:一种简单高效的优化方式
背景知识蒸馏(knowledge distillation)指的是将预训练好的教师模型的知识通过蒸馏的方式迁移至学生模型,一般来说,教师模型会比学生模型网络容量更大,模型结构更复杂。对于学生而言,主要增益信息来自于更强的模型产出的带有更多可信信息的soft_label。例如下右图中,两个“2”对应的hard_label都是一样的,即0-9分类中,仅“2”类别对应概率为1.0,而soft_label
自蒸馏:一种简单高效的优化方式
|
机器学习/深度学习 数据采集 算法
超轻量更泛化!基于人体骨骼点的动作识别
基于骨骼点的动作识别的动作识别,往往具有比基于其他模态的算法更轻量,更具泛化性的特点。当然,由于骨骼点所包含信息的局限性,基于骨骼点的算法很难对一些与物体或场景关系紧密的动作进行有效识别,可以说有利有弊。
1412 0
超轻量更泛化!基于人体骨骼点的动作识别
|
11月前
|
数据采集 前端开发 物联网
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
本文介绍了一个基于多模态大模型的医疗图像诊断项目。项目旨在通过训练一个医疗领域的多模态大模型,提高医生处理医学图像的效率,辅助诊断和治疗。作者以家中老人的脑部CT为例,展示了如何利用MedTrinity-25M数据集训练模型,经过数据准备、环境搭建、模型训练及微调、最终验证等步骤,成功使模型能够识别CT图像并给出具体的诊断意见,与专业医生的诊断结果高度吻合。
20468 162
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
|
11月前
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
11578 34
Qwen2.5-7B-Instruct Lora 微调
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
20268 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 JSON 数据可视化
YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程
本文介绍了如何将个人数据集转换为YOLO11-pose所需的数据格式,并详细讲解了手部关键点检测的训练过程。内容涵盖数据集标注、格式转换、配置文件修改及训练参数设置,最终展示了训练结果和预测效果。适用于需要进行关键点检测的研究人员和开发者。
2322 0
|
机器学习/深度学习 人工智能 文字识别
ultralytics YOLO11 全新发布!(原理介绍+代码详见+结构框图)
本文详细介绍YOLO11,包括其全新特性、代码实现及结构框图,并提供如何使用NEU-DET数据集进行训练的指南。YOLO11在前代基础上引入了新功能和改进,如C3k2、C2PSA模块和更轻量级的分类检测头,显著提升了模型的性能和灵活性。文中还对比了YOLO11与YOLOv8的区别,并展示了训练过程和结果的可视化
19440 0