文章目录
- CSL2018数据集
-
- gloss-zip的项目结构如下:
- [pose-gloss VS depth-gloss](#pose-gloss VS depth-gloss)
- [color-gloss VS depth-gloss](#color-gloss VS depth-gloss)
CSL2018数据集

- gloss-zip代表的孤立词语
- sentence-zip代表的是连续词语识别
gloss-zip的项目结构如下:

CSL2018 这份 gloss-zip 里的几个文件含义大致是:
text
color-gloss RGB 彩色视频数据
depth-gloss 深度视频/深度模态数据
pose-gloss 姿态关键点数据
gloss_label.txt 500 个孤立词类别名称
readme.txt 文件命名规则和训练/测试划分说明
gloss 在这里可以理解为"孤立词手语类别",也就是你现在做的孤立手语识别任务。
readme.txt 里给了一个例子:
text
P01_25_19_2._color.mp4
它的解释是:
text
P01 第 1 个表演者
25_19 类别编号,计算方式:(25-1)*20+19 = 499
2 第 2 次表演
color RGB 视频
所以文件名中间两段决定类别:
text
类别ID = (前一段 - 1) * 20 + 后一段
你的例子:
text
P01_01_00_0._body.txt
计算类别:
text
(01 - 1) * 20 + 00 = 0
所以它对应 gloss_label.txt 的第 1 行,也就是类别 ID 为 0 的词。
我已经确认 gloss_label.txt 是 UTF-8 编码,前几行是:
text
0 情况
1 前途
2 形势
3 局势
4 动态
因此:
text
P01_01_00_0._body.txt
对应的确是:
text
情况
更完整地拆开:
text
P01 第 1 个表演者
01_00 类别编号 0,对应 gloss_label.txt 第 1 行"情况"
0 第 0 次/某次重复表演
_body.txt 姿态关键点文本文件
同一个动作样本在不同模态里可能有对应文件,例如概念上会有:
text
P01_01_00_0._color.mp4 RGB 视频
P01_01_00_0._depth.mp4 深度视频
P01_01_00_0._body.txt 姿态关键点
你目前实验用的是:
text
pose-gloss
所以模型输入不是 RGB 视频,而是姿态关键点序列。如果你以后想做多模态,可以考虑把 color-gloss 的 RGB 视频、depth-gloss 的深度视频和 pose-gloss 的关键点融合起来。当前第一版代码可以只做 pose 模态。
pose-gloss VS depth-gloss
pose-gloss 里的关键点确实有第三维 z,可以看作带三维空间信息。但它和 depth-gloss 不是同一种数据。
可以这样区分:
text
depth-gloss = 原始/近原始的深度视频
pose-gloss = 从视频或传感器数据中提取出来的人体骨架关键点
1. depth-gloss 是什么
depth-gloss 是深度视频。它的每一帧通常是一张"深度图"。
普通 RGB 图像每个像素是颜色:
text
R, G, B
深度图每个像素表示距离摄像头的远近:
text
depth(x, y) = 这个像素位置到摄像头的距离
所以 depth 视频保留的是比较完整的空间表面信息。比如手、身体、背景中每个可见像素大概离摄像头多远。
它更像这样:
text
第 t 帧:H × W 的深度图
整个视频:[T, H, W]
或者编码成视频文件后存储。
2. pose-gloss 是什么
pose-gloss 是姿态关键点序列。它不是图像,而是每一帧只保留人体骨架上的若干个关键点。
你现在用的 _body.txt 每一行是:
text
25 个关键点 × 3 维坐标 = 75 个数
它更像这样:
text
第 t 帧:25 × 3
整个样本:[T, 25, 3]
这里的第三维 z 可以表示空间第三维,但它只描述这 25 个骨架点的位置,不包含整张图像的深度信息。
关键区别
text
depth-gloss:
保留每个像素的深度信息,信息量大,接近原始传感器数据。
pose-gloss:
只保留人体关键点的三维坐标,信息量小,是结构化骨架数据。
举个直观例子:
假设一帧画面里有人在打手语。
depth-gloss 可能知道:
text
画面中每个像素离摄像头多远
手掌表面的大致形状
身体轮廓
背景距离
手和脸之间的遮挡关系
pose-gloss 只知道:
text
头、肩、肘、手腕、髋、膝等 25 个关键点的位置
也就是说:
text
depth-gloss 是"整张深度画面"
pose-gloss 是"从画面中抽出来的骨架点"
为什么 pose 里有 z,还需要 depth?
因为 pose 里的 z 是关键点级别的三维坐标,只覆盖 25 个点。
而 depth 是像素级深度信息,覆盖整张图像。
它们的信息密度不同:
text
pose: 25 个点 × 3 个数
depth: 一整张图每个像素一个深度值
假设深度图是 512×424,那一帧就有:
text
512 × 424 ≈ 217000 个深度值
而 pose 一帧只有:
text
25 × 3 = 75 个数
所以两者不是重复关系,而是"原始深度模态"和"结构化姿态模态"的区别。
一句话总结:
text
pose-gloss 里的 z 是"骨架关键点的深度/三维坐标";
depth-gloss 是"整帧图像每个像素的深度视频"。
color-gloss VS depth-gloss
磁盘里的 color-gloss / depth-gloss 通常是视频文件或压缩包,不是直接保存成 .npy 形式的 [T,H,W] 数组。只有解码后,才可以把它们理解成张量。
text
color-gloss:
RGB 彩色视频
解码后概念形状:[T, H, W, 3]
其中:
text
T = 帧数
H = 图像高度
W = 图像宽度
3 = RGB 三个颜色通道
每个像素类似:
text
[R, G, B]
而 depth-gloss:
text
depth-gloss:
深度视频
理想情况下解码后概念形状:[T, H, W]
其中每个像素不是颜色,而是深度值:
text
depth[y, x] = 该像素位置距离摄像头的远近
所以可以这样对比:
text
color-gloss 一帧:H × W × 3
depth-gloss 一帧:H × W
pose-gloss 一帧:25 × 3
更直观地说:
text
color-gloss:
看"这个地方是什么颜色"
depth-gloss:
看"这个地方离摄像头多远"
pose-gloss:
只看"人体关键点在哪里"
不过实际处理中要注意一点:有些数据集会把深度视频编码成普通视频格式,为了存储方便,读出来时可能暂时表现为 H × W × 3 的图像帧,但这不代表它是 RGB 颜色信息。它可能是深度值经过编码、归一化或伪彩色后的结果。真正用于模型前,通常需要按数据集说明或解码方式还原/读取深度信息。
所以论文里建议写得严谨一点:
text
CSL2018 提供 RGB、深度和姿态三种模态。其中 RGB 模态保留颜色与纹理信息,深度模态描述像素级空间距离信息,姿态模态将每帧手语动作表示为人体关键点坐标序列。本文仅采用 pose-gloss 模态,即三维姿态关键点序列作为模型输入。
一句话总结:
text
你的理解方向是对的:color 是像素级颜色视频,depth 是像素级深度视频,pose 是关键点级骨架序列。