【人工智能学习之HDGCN训练自己的数据集】
- HD-GCN
- 准备事项
- 项目代码
- 开源数据集
- 第一行:帧数
- 第二行:body数
- 第三行:关节附加信息
- 第四行:关节数
- 5-29行:每个关节的数据
- 之后的帧
- 总结:
- 自定义2D数据集
- 模型移植与修改
- 文件移动
- 文件修改
- 成功运行
HD-GCN
HD-GCN的核心在于其独特的HD-Graph构造与Attention-guided Hierarchy Aggregation (A-HA) 模块。HD-Graph将每个关节节点分解为多个集合,以便在同一语义空间内构建具有显着结构相邻和远处边缘的关系图。而A-HA模块则用来突出重要的层次边集,增强模型对重要特征的捕捉能力。此外,项目还引入了一种仅依赖关节和骨骼流的六路集成策略,无需任何运动流信息也能获得出色表现。
HD-GCN推动了骨架数据动作识别技术的发展,并为实际应用提供了强大的工具,相较于STGCN和CTRGCN在多个数据集上有更好的表现。
准备事项
项目代码
hd-gcn代码下载与环境配置:
github开源地址
开源数据集
数据集开源采用开源数据集:NTU-RGB-D
分析3D skeleton数据集:
文件命名格式:(示例:S010C001P019R001A010.skeleton)
S:设置号,共有17组设置;
C:相机ID,共有3架相机;
P:人物ID,共有40个人;
R:同一个动作的表演次数;
A:动作类别,共有60个。
该文件的每一帧记录了关于人体骨骼的数据,内容和行的解释如下:
第一行:帧数
- 数字71表示该文件共有71帧数据。每一帧代表一个时间点上身体的骨骼信息。
- 每帧可能包含多个人体(body)和该帧中每个体的骨骼关节数据。
第二行:body数
- 数字1表示该视频帧中有1个人体(body)。可能是多人场景,每一帧可能有多个“body”。如果是多人,数字会增加,表示当前帧中存在多少个检测到的人体。
第三行:关节附加信息
这一行包含了10个数字,描述与人体的相关附加信息,具体如下:
- bodyID:每个body(人体)的唯一标识符,用于区分不同的人体。
- clipedEdges:一个标记,表示当前人体是否被图像的边缘剪裁(如人体部分超出画面边界)。
- handLeftConfidence:左手检测的置信度,表示检测到左手的准确度或置信度,通常范围从0到1,值越高表示越有信心。
- handLeftState:左手的状态,通常为0(无状态)或1(有动作状态)。
- handRightConfidence:右手检测的置信度,表示检测到右手的准确度或置信度,范围从0到1。
- handRightState:右手的状态,类似于左手状态,表示右手是否有动作。
- isResticted:是否受限制,通常表示该人体是否处于受限区域内,例如是否在某个限制区内或者某些物理限制下。
- leanX:人体的左右倾斜角度(X轴方向),可能用于表示人体姿势的倾斜或偏移。
- leanY:人体前后倾斜角度(Y轴方向),表示人体在前后方向的倾斜度。
- trackingState:跟踪状态,表示当前帧中人体骨架是否被正确跟踪,通常是0(未跟踪)或1(已跟踪)。
第四行:关节数
- 数字25表示该人体骨骼模型中共有25个关节。不同的模型可能有不同数量的关节,25个是一个典型的配置,可能代表全身的主要关节。
5-29行:每个关节的数据
- 这部分是该帧中每个关节的详细数据,共包含25个关节,每个关节有12个数据,依次表示:
- x:关节在图像中的水平坐标。
- y:关节在图像中的垂直坐标。
- z:关节的深度坐标,表示离摄像头的距离。
- depthX:关节在深度图像中的水平坐标。
- depthY:关节在深度图像中的垂直坐标。
- colorX:关节在彩色图像中的水平坐标。
- colorY:关节在彩色图像中的垂直坐标。
- orientationW:关节的四元数表示的姿态信息(旋转部分)。
- orientationX:关节的四元数表示的旋转信息。
- orientationY:关节的四元数表示的旋转信息。
- orientationZ:关节的四元数表示的旋转信息。
- trackingState:关节的跟踪状态,通常是0(未跟踪)或1(已跟踪)。
每一行对应一个关节的信息,共25个关节。每个关节的坐标和姿态信息对于3D姿态估计任务是至关重要的,特别是旋转(orientation)和跟踪状态。
之后的帧
每一帧的数据遵循上述规则。每个帧记录了人体的位置信息、关节坐标、手势状态等,适用于连续的视频数据或者动态姿态估计任务。
总结:
- 帧数:表示视频的总帧数。
- body数:每一帧中检测到的人体数量。
- 关节附加信息:提供与每个人体相关的附加信息,例如手部状态、是否受限制等。
- 关节数:该文件使用的骨骼模型的关节数量。
- 每个关节的数据:每个关节的位置、姿态、跟踪状态等。
自定义2D数据集
无法制作3D数据集或需要使用2D关键点检测的场景,可以自定义所需的数据集:
请参考【人工智能学习之STGCN训练自己的数据集】
模型移植与修改
如果在原始框架当中,还需要修改feeders和其他部分内容,太麻烦了,所以我移植到了STGCN的框架当中训练。
文件移动
得到pkl和npy文件后,我们可以将HDGCN的核心代码移植到STGCN的框架当中,需要移动这三个文件:
在这里我将tools和ntu_rgb_d_hierarchy俩个文件进行了合并HDhierarchy,HDGCN改名为hd_gcn,俩个文件置于utils目录下:
文件修改
然后我们需要对俩个文件一部分内容进行修改。
这里为适应18关键点我改的地方比较多,同学们可自行查阅,如有错误和疑问欢迎留言:
【人工智能学习之HDGCN18关键点修改】