时间:2025-07-22 作者:游乐小编
本文是2024 CCF BDCI花样滑冰选手骨骼点动作识别大赛B榜第三名方案。基于飞桨,采用ICCV2024论文CTRGCN和Focal loss、PaddleVideo套件,构建节点流、骨骼流等四流框架,结合模型集成,在FSD-30数据集上取得良好成绩,还介绍了环境配置、训练与预测流程。
本项目是基于飞桨实现花样滑冰选手骨骼点动作识别大赛:花样滑冰选手的细粒度骨骼点动作识别大赛B榜第三名方案。本项目基于ICCV2024论文CTRGCN和Focal loss、PaddleVideo套件构建节点流、骨骼流、节点运动流、骨骼运动流四流框架进行动作识别,取得了B榜第三,A榜15的成绩。
[](https://)
人体运动分析是近几年许多领域研究的热点问题。在学科的交叉研究上,人体运动分析涉及到计算机科学、运动人体科学、环境行为学和材料科学等。随着研究的深入以及计算机视觉、5G通信的飞速发展,人体运动分析技术已应用于自动驾驶、影视创作、安防异常事件监测和体育竞技分析、康复等实际场景人体运动分析已成为人工智能领域研究的前沿课题。目前的研究数据普遍缺少细粒度语义信息,导致现存的分割或识别任务缺少时空细粒度动作语义模型。此类研究在竞技体育、运动康复、日常健身等方面有非常重大的意义。相比于图片的细粒度研究,时空细粒度语义的人体动作具有动作的类内方差大、类间方差小这一特点,这将导致由细粒度语义产生的一系列问题,利用粗粒度语义的识别模型进行学习难得获得理想的结果。
基于实际需求以及图深度学习模型的发展,本比赛旨在构建基于骨骼点的细粒度人体动作识别方法。通过本赛题建立精度高、细粒度意义明确的动作识别模型,希望大家探索时空细粒度模型的新方法。
数据集Figure Skating Dataset (FSD-30)旨在通过花样滑冰研究人体的运动。在花样滑冰运动中,人体姿态和运动轨迹相较于其他运动呈现复杂性强、类别多的特点,有助于细粒度图深度学习新模型、新任务的研究。
在本次比赛最新发布的数据集中,所有视频素材均从2017-2020 年的花样滑冰锦标赛中采集得到。源视频素材中视频的帧率被统一标准化至每秒30 帧,图像大小被统一标准化至1080 * 720 ,以保证数据集的相对一致性。之后通过2D姿态估计算法Open Pose,对视频进行逐帧骨骼点提取,最后以.npy格式保存数据集。
训练数据集与测试数据集的目录结构如下所示:
train_data.npytrain_label.npytest_A_data.npytest_B_data.npy # B榜测试集后续公开登录后复制
本次比赛最新发布的数据集共包含30个类别,训练集共2922个样本,A榜测试集共628个样本,B榜测试集共634个样本;
train_label.npy文件通过np.load()读取后,会得到一个一维张量,张量中每一个元素为一个值在0-29之间的整形变量,代表动作的标签;
data.npy文件通过np.load()读取后,会得到一个形状为N×C×T×V×M的五维张量,每个维度的具体含义如下:
骨架示例图:
数据集可以从比赛链接处下载,报名成功后,即可获取数据集下载链接。数据集下载完成后,可以将数据集上传到aistudio项目中,上传后的数据集路径在/home/aistudio/data目录下。
如果是直接fork的本项目,在/home/aistudio/data 目录下已经包含了下载好的训练数据和测试数据。注意:由于只能携带两个数据集,故A榜测试集是存放在/home/aistudio/work/PaddleVideo/data/fsd10目录下的。
In [ ]# 检查数据集所在路径!tree -L 3 /home/aistudio/data !tree -L 3 /home/aistudio/work/PaddleVideo/data/fsd10登录后复制
/home/aistudio/data├── data104925│ ├── train_data.npy│ └── train_label.npy└── data117914 └── test_B_data_1118.zip2 directories, 3 files/home/aistudio/work/PaddleVideo/data/fsd10├── example_skeleton.npy└── test_A_data.zip0 directories, 2 files登录后复制
1、首先肯定是基于最新baseline的agcn模型调训练参数,为了尽可能的照顾到长时间序列的样本以及统计到有效帧长超于1000的样本训练集占有率不容忽视,控制变量,对比AutoPadding的window_size为500、1000的结果,选择了更优的window_size=1000的配置,至于更大的window_size,考虑到带来的训练代价我认为是不可取的。对比了epochs=100和epochs=200的结果,最终选取了结果更好的epochs=200,与之匹配的是Warmup epochs=20;比较了学习率0.05和0.1,最终选取了0.1;也对标签平滑的系数ls_eps进行了调整,最终选取了ls_eps=0.3。当然也对优化器、学习率策略修改过,但没起到好的作用;Mixup系数保持为最初的优值;CutMix不起作用等等。注意,这些的调整基本都是在设好相同随机数种子1024下进行的。
2、在大部分与1相同的配置(除了ls_eps=1)下,基于最新baseline的agcn模型,分别或同时增加特征注意力(如增加SEBlock)、节点(空间)注意力、时间注意力,全料数据训练在A榜最好取得了66.4的成绩。
3、将训练集划分为了训练集(90%)和验证集(10%),为了进行1的参数调整和对模型进行修改,之后所有训练(除特殊说明)都是仅在划分出来的训练集上进行训练,然后在验证集上验证取得最优(1个epoch验证1次)的验证模型。我们的划分代码中不涉及随机性,在数据集本身样本存放顺序没变下可以保证每次的划分是一致的,从而可以保证可复现性。
4、除注意力机制以外,对模型进行过的一些修改,为了扩大时域感受野,我增加了时域卷积的空洞参数为2、3、4等等,采取多分支级联形式,后来看论文发现这个方向的主流模型早都是这样做了,我加了之后提升不是很满意;由于易过拟合,然后对于改过的这些模型进行过增加模型深度并增加随机深度、增加dropout等等,没有大的提升。之后几乎看完了最近所有相关顶会论文,逐步更换著名的2s-Agcn、Ms-Agcn模型、Ms-G3D模型,发现跑的很慢,性能没怎么提升,比最初的agcn还容易过拟合,也进行过自适应图拓扑结构构建方法修改、模型结构修改等,发现训练速度严重影响了我验证想法,当然那些想法也没起到正的作用。
5、对数据进行处理,看到不少论文的数据,不是padding 0进行补全,而是replay进行补全,故也尝试了对训练、验证数据进行replay之后训练验证,发现更易过拟合了,性能更差了;发现数据集类别分布不均匀,我们对数据集进行label shuffle进行数据集类别均匀扩增,同时对dropout等参数进行调整,发现没有带来性能提升,估计是难识别、易混淆的类别不一定是数目少的类别等。
6、基于5,我无意中发现了Focal loss对于训练类别不均衡很有效,可以自适应地可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。
7、构建节点流、骨骼流、节点运动流、骨骼运动流四流框架进行多模型融合。
2021-11-05 11:52
手游攻略2021-11-19 18:38
手游攻略2021-10-31 23:18
手游攻略2022-06-03 14:46
游戏资讯2025-06-28 12:37
单机攻略