花样滑冰选手骨骼点动作识别

2023 CCF BDCI 基于飞桨实现花样滑冰选手骨骼点动作识别 16名方案以及总结

比赛任务

花样滑冰与其他运动项目相比,其动作类型的区分难度更大,这对识别任务来说是极大的挑战。对于花样滑冰动作识别任务,主要难点如下:

(1) 花样滑冰运动很难通过一帧或几帧图像中的人物姿态去判断动作类别;
(2) 花样滑冰相同大类、不同小类的两个动作类别仅存于某几帧的细微差异,判别难度极高。然而,其他帧的特征也必须保留,以便用于大类识别以及“多义帧”处理等情况。

基于现实场景的应用需求以及图深度学习模型的发展,本次比赛旨在通过征集各队伍建立的高精度、细粒度、意义明确的动作识别模型,探索基于骨骼点的时空细粒度人体动作识别新方法。本次比赛将基于评价指标Accuracy对各队伍提交结果的评测成绩进行排名,Accuracy得分越高,则认为该模型的动作识别效果越好。

1.类别定义:

花样滑冰动作包括3个大类,分别为跳跃、旋转和步法,每个大类又包含很多小类。例如,跳跃大类包含:飞利浦三周跳(3Filp)和勾手三周跳(3Lutz)2个小类。然而,这2类跳跃的判别性仅在于一些个别帧的差异。此外,如果想就跳跃小类(3Filp或3Lutz)与旋转小类进行区别,对大部分帧的特征加以使用才能产生较好的判别性。

2.多义帧:

花样滑冰动作不同类别中相似的帧,甚至存在个别帧的特征相同等情况。

3.具体任务:

参赛选手利用比赛提供的训练集数据,构建基于骨骼点的细粒度动作识别模型,完成测试集的动作识别任务。模型识别效果由指标Accuracy排名决定,Accuracy得分越高,则认为该模型的动作识别效果越好。

数据集介绍

本次比赛数据集旨在借助花样滑冰选手的视频图像研究人体运动。由于花样滑冰选手动作切换速度十分迅速,如希望准确判断一个动作的类别,只靠随机抽取的几帧很难出色地完成任务。

尽管目前人体运动分析研究领域主流的视频数据集较多,规模也较大,如视频识别数据集:Kinetics、 Moments in Time、UCF101等,视频分割数据集:Breakfast、Epic Kitchens、Salads50等。然而,以上数据集大多缺乏人体运动的特性(Kinetics有部分运动特性,但不够专业,且类别有限)。举例来看,若对UCF101数据集选取子集,遮挡住数据中人物并留下场景,目标检测结果的准确率仅下降较小幅度,这说明该视频数据不太关注人的运动,也无法体现视频分析的特性。相比之下,本次比赛数据集旨在借助花样滑冰选手的视频图像研究人体运动。在花样滑冰运动中,人体姿态和运动轨迹相较于其他运动呈现出复杂性强、类别众多等特点,有助于开展对细粒度图深度学习新模型、新任务的研究。

在本次比赛最新发布的数据集中,所有视频素材均从2017-2020 年的花样滑冰锦标赛中采集得到。源视频素材中视频的帧率被统一标准化至每秒30 帧,图像大小被统一标准化至1080 * 720 ,以保证数据集的相对一致性。之后通过2D姿态估计算法Open Pose,对视频进行逐帧骨骼点提取,最后以.npy格式保存数据集。请各位选手基于本次比赛最新发布的训练集数据训练模型,并基于本次比赛最新发布的测试集数据提交对应结果文件。

数据集构成

|–train.zip
|–train_data.npy
|–train_label.npy
|–test_A.zip
|–test_A_data.npy
|–test_B.zip
|–test_B_data.npy

本次比赛最新发布的数据集共包含30个类别,训练集共2922个样本,A榜测试集共628个样本,B榜测试集共634个样本;
train_label.npy文件通过np.load()读取后,会得到一个一维张量,张量中每一个元素为一个值在0-29之间的整形变量,代表动作的标签;
data.npy文件通过np.load()读取后,会得到一个形状为N×C×T×V×M的五维张量,每个维度的具体含义如下:

image

image

训练集: 下载

A榜测试集:下载

B榜测试集:下载

数据预处理

首先拆分数据集,使用jikuai库里面的npysplit,拆分后存盘到用户根目录。

from jikuai.dataset import npysplit
import numpy as np
npysplit("data/data104925/train_data.npy", "data/data104925/train_label.npy", 0.8)

模型选择

ST-GCN、AGCN(AAGCN)、MS-G3D、PoseC3D

GCN

GCN步骤(假设图输入为X),可以视为

  • 对图输入X(X表示图每个节点的特征)进行特征提取(假设参数为W),输出XW。微观来看,这个特征提取可以理解为对图上每个节点的特征进行了分别提取,其特征维度从[公式]变化到[公式];
  • 根据图结构中建立一个邻接矩阵A,并对其进行归一化or对称归一化,获得A;
  • 利用归一化的邻接矩阵A对提取后的特征XW进行聚合,聚合的结果为AXW。
    这样一来,基本的图卷积运算就实现了。其具体的实现代码如下所示:
class GraphConvolution(nn.Module):def __init__(self, input_dim, output_dim, use_bias=True):"""图卷积:L*X*\thetaArgs:----------input_dim: int节点输入特征的维度output_dim: int输出特征维度use_bias : bool, optional是否使用偏置"""super(GraphConvolution, self).__init__()self.input_dim = input_dimself.output_dim = output_dimself.use_bias = use_biasself.weight = nn.Parameter(torch.Tensor(input_dim, output_dim))if self.use_bias:self.bias = nn.Parameter(torch.Tensor(output_dim))else:self.register_parameter('bias', None)self.reset_parameters()def reset_parameters(self):init.kaiming_uniform_(self.weight)if self.use_bias:init.zeros_(self.bias)def forward(self, adjacency, input_feature):"""邻接矩阵是稀疏矩阵,因此在计算时使用稀疏矩阵乘法Args: -------adjacency: torch.sparse.FloatTensor邻接矩阵input_feature: torch.Tensor输入特征"""device = "cuda" if torch.cuda.is_available() else "cpu"support = torch.mm(input_feature, self.weight.to(device))output = torch.sparse.mm(adjacency, support)if self.use_bias:output += self.bias.to(device)return output

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

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

相关文章

Python-OpenCV中的图像处理-图像梯度

Python-OpenCV中的图像处理-图像梯度 图像梯度Sobel 算子和 Scharr 算子Laplacian 算子 图像梯度 图像梯度,图像边界等使用到的函数有: cv2.Sobel(), cv2.Scharr(), cv2.Laplacian() 等原理:梯度简单来说就是求导。Op…

fastadmin、vue、react图标库适用于多种框架

在二开fastadmin中,在写vue以及react时,侧边导航栏以及按钮中常常需要很多图标,那么这些图标应该去哪里得到呢,在这里给大家一个链接,这里有丰富的图标库,可以找到自己想要的进行使用。 点击下方链接&…

github pages 用法详解 发布自己的网站

github pages 基础用法 URL 规则 假设你的 github 帐号为 mygithub,需要发布的仓库名为 myrepo,那么 pages 的 URL 为: https://mygithub.github.io/myrepo 添加内容 用任意编辑器写好(或者生成)标准的网页内容&a…

苹果正在测试新款Mac mini:搭载M3芯片 配备24GB大内存

据悉苹果目前正在测试新的Mac机型,亮点是采用最新的M3芯片。 据报道,首款搭载M3芯片的设备应该是13英寸的MacBook Pro和重新设计的MacBook Air,Mac mini机型并不在名单上。 M3和M2同样拥有最多8个核心,分别为4个性能核和4个能效核…

OpenAI-Translator 实战总结

最近在极客时间学习《AI 大模型应用开发实战营》,自己一边跟着学一边开发了一个进阶版本的 OpenAI-Translator,在这里简单记录下开发过程和心得体会,供有兴趣的同学参考 功能概览 通过openai的chat API,实现一个pdf翻译器实现一个…

Python爬虫——selenium的安装和基本使用

1.什么是selenium? selenium是一个用于web应用程序测试的工具selenium测试直接运行在浏览器中,就像真正的用户在操作一样支持通过各种driver(FrifoxDriver,ItenrentExploreDriver,OperaDriver,ChromeDrive…

【BASH】回顾与知识点梳理(十四)

【BASH】回顾与知识点梳理 十四 十四. 文件与目录的默认权限与隐藏权限14.1 文件预设权限:umaskumask 的利用与重要性:专题制作 14.2 文件隐藏属性chattr (配置文件案隐藏属性)lsattr (显示文件隐藏属性) 14.3 文件特殊权限: SUID, SGID, SBI…

了解华为(H3C)网络设备和OSI模型基本概念

目录 一,认识华为 1.华为发展史 2.华为网络设备介绍 3.VRP概述 二,OSI七层模型 1.七层模型详细表格 2.各层的作用 3.数据在各层之间的传递过程 4.OSI四层网络模型 一,认识华为 官网:https://www.huawei.com/cn/ 1.华为发…

从‘深林’到潮鞋App:得物如何改变电商格局”

在App Store上搜索下载得物App,惊奇发现其下载量达到百万级别,媲美同期京东App的下载量。 这是一个不小的数据体量,对此我产生了极大的好奇:“在淘宝系、京东、唯品会等电商巨头林立的现状下,单依靠潮鞋的得物凭什么能…

详解配置交换机多生成树MSTP+VRRP 的典型组网

详解配置交换机多生成树MSTPVRRP 的典型组网 组网: 1. 这是一个由三台交换机组成的倒三角型二层交换网络;网络中有4个VLAN:10、20、30、40;接口编号如图所示;SW3为接入层交换机,SW1、SW2为汇聚层交换机&am…

bash: make: command not found

make之后报错信息如下:cd 对应的文件路径后 make 发现报错:bash: make: command not found 这个原因可能是没有安装make工具,也可能是安装了make之后,没有将make的文件路径添加到系统环境变量中 有没有安装make,可以使用Search Everything搜索是否有make…

websocket+node实现直播(弱鸡版)

心血历程 这部分主要是写在写这些的时候遇到的问题以及换思路的过程,可以之间看正文 在之前我也写过直播功能,并且与websocket相结合实现了直播弹幕。只不过直播是使用的腾讯云的,而不是手写的直播推流拉流,这次又有一个新的项目…

【D3S】集成smart-doc并同步配置到Torna

目录 一、引言二、maven插件三、smart-doc.json配置四、smart-doc-maven-plugin相关命令五、推送文档到Torna六、通过Maven Profile简化构建 一、引言 D3S(DDD with SpringBoot)为本作者使用DDD过程中开发的框架,目前已可公开查看源码&#…

自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”

各位CSDN的uu们好呀,好久没有更新小雅兰的C专栏啦,话不多说,让我们进入类和对象的世界吧!!! 类的6个默认成员函数 构造函数 析构函数 拷贝构造函数 类的6个默认成员函数 如果一个类中什么成员都没有&am…

el-select与el-tree结合使用,实现select框下拉使用树形结构选择数据

使用el-select与el-tree&#xff0c;实现如下效果&#xff0c; 代码如下&#xff1a; 注意点&#xff1a;搜索input框的代码一点放在option上面&#xff0c;不要放在option里面&#xff0c;否则一点击搜索框&#xff0c;下拉框就会收起来&#xff0c;不能使用。 <el-select…

【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)

SKNet&#xff08;Selective Kernel Network&#xff09;是一种用于图像分类和目标检测任务的深度神经网络架构&#xff0c;其核心创新是引入了选择性的多尺度卷积核&#xff08;Selective Kernel&#xff09;以及一种新颖的注意力机制&#xff0c;从而在不增加网络复杂性的情况…

工业无线技术应用-无线控制斗轮机启停、故障等开关信号

斗轮堆取料机是一种对散料进行连续堆取作业的高效装卸大型机械,被广泛使用于火力发电厂和炼焦厂的输煤系统中。目前对斗轮机的技改主要为将斗轮机的部分程控信号改为无线传输&#xff0c;取代卷筒电机和电缆的应用。 多数情况下都是利用无线通讯做媒介&#xff0c;让工作人员通…

第48节:cesium 面交集计算(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><vc-navigation

docker版jxTMS使用指南:使用jxTMS采集数据之一

本文讲解了如何jxTMS的数据采集与处理框架并介绍了如何用来采集数据&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南&#xff1a;4.4版升级内容 docker版本的使用&#xff0c;请查看&#xff1a;docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查…

Unity之ShaderGraph 节点介绍 Utility节点

Utility 逻辑All&#xff08;所有分量都不为零&#xff0c;返回 true&#xff09;Any&#xff08;任何分量不为零&#xff0c;返回 true&#xff09;And&#xff08;A 和 B 均为 true&#xff09;Branch&#xff08;动态分支&#xff09;Comparison&#xff08;两个输入值 A 和…