NTU-RGBD数据集预处理实战从原始骨架数据到CTR-GCN模型输入在动作识别领域NTU-RGBD数据集因其大规模和高质量的骨架数据而成为行业标杆。本文将深入探讨如何将原始骨架数据转化为适用于CTR-GCN等图卷积网络的标准输入格式涵盖数据清洗、帧对齐、坐标归一化等关键步骤并分享实际处理中的经验技巧。1. 数据预处理基础架构NTU-RGBD数据集包含56,880个动作样本每个样本提供25个关节点的3D坐标信息。原始数据以.skeleton文件格式存储需要经过三个核心处理阶段原始数据提取get_raw_skes_data.py数据去噪与清洗get_raw_denoised_data.py序列转换与标准化seq_transformation.py处理流程中的关键数据结构转换如下表所示处理阶段输入格式输出格式核心操作原始提取.skeleton二进制文件raw_skes_data.pkl帧有效性校验、身体ID追踪数据去噪原始关节点数据raw_denoised_joints.pkl运动幅度筛选、异常帧去除序列转换去噪后数据NTU60_CS/CV.npz坐标归一化、帧长度对齐2. 原始数据解析与清洗2.1 骨架数据提取原始.skeleton文件采用特定格式存储首行总帧数每帧数据以body数量声明开始每个body包含25个关节点每个关节点12个属性字段关键解析代码如下def get_raw_bodies_data(skes_path, ske_name): with open(ske_file, r) as fr: str_data fr.readlines() num_frames int(str_data[0].strip(\r\n)) bodies_data dict() for f in range(num_frames): num_bodies int(str_data[current_line].strip(\r\n)) current_line 1 for b in range(num_bodies): bodyID str_data[current_line].strip(\r\n).split()[0] joints[b, j, :] np.array(temp_str[:3], dtypenp.float32) # 提取XYZ坐标 colors[b, j, :] np.array(temp_str[5:7], dtypenp.float32) # 提取颜色坐标注意实际处理时需要特别关注帧索引的连续性缺失帧会导致后续时序建模出现问题。2.2 数据去噪策略NTU-RGBD数据常见噪声类型及处理方法短序列过滤长度≤11帧noise_len_thres 11 if length noise_len_thres: del bodies_data[bodyID]异常姿态检测基于高宽比过滤(x.max()-x.min()) 0.8*(y.max()-y.min())运动幅度阈值noise_mot_thres_lo 0.089925多主体处理按运动幅度排序选择主要主体双人交互动作需保持两个主体的时序对齐3. 关键坐标变换技术3.1 脊柱中心归一化将关节点坐标转换为以脊柱关节joint-2为原点的相对坐标def seq_translation(skes_joints): origin np.copy(ske_joints[i, 3:6]) # 脊柱关节坐标 ske_joints[f] - np.tile(origin, 25) # 所有关节点减去脊柱坐标这种归一化方式能有效消除不同拍摄距离和人体尺寸的影响。3.2 帧长度标准化NTU-RGBD的帧长度差异较大从几十到数百帧不等需要统一到固定长度统计最大帧数通常设为300帧短序列补零长序列截断单主体数据需补全第二主体为零矩阵max_num_frames 300 aligned_skes_joints np.zeros((num_skes, max_num_frames, 150)) aligned_skes_joints[idx, :num_frames] ske_joints4. 数据集划分策略NTU-RGBD提供两种标准划分方式4.1 跨主体划分Cross-Subject, CStrain_ids [1,2,4,5,8,9,13,14,15,16,17,18,19,25,27,28,31,34,35,38] test_ids [3,6,7,10,11,12,20,21,22,23,24,26,29,30,32,33,36,37,39,40]4.2 跨视角划分Cross-View, CVtrain_ids [2, 3] # 摄像机2和3 test_ids 1 # 摄像机1最终生成的标准数据集包含以下结构train_x: 训练集骨架序列train_y: 训练集one-hot标签60类test_x: 测试集骨架序列test_y: 测试集one-hot标签5. CTR-GCN输入格式适配CTR-GCN作为ICCV2021提出的先进图卷积网络对输入数据有特定要求时空图构建空间图25个关节点自然连接时间图连续帧间相同关节点连接数据维度输入张量形状(N, C, T, V, M)N: batch大小C: 通道数3 for XYZT: 时间维度300帧V: 关节点数25M: 主体数2数据增强建议随机时间裁剪关节点抖动噪声骨骼长度缩放处理后的数据可直接用于CTR-GCN的时空图卷积操作其核心优势在于能够同时捕捉关节点的空间关系和时间演化模式。在实际项目中这种标准化处理流程可使模型准确率提升5-8%特别是对于握手、拥抱等双人交互动作的识别效果改善明显。经过完整预处理后NTU-RGBD数据集在CTR-GCN上的基准准确率可达到CS: 89.4%, CV: 92.7%。