项目地址:GitHub - harveyfly/SignLanguageRecognition: 中文孤立手语词识别;Bi-LSTM;SLR;500-CSL · GitHub
项目介绍
把一段手语视频的骨骼序列抽成固定长度的 24 维帧特征,用 2 层双向 LSTM 编码时序,取最后时刻的 2048 维表示做 50 类分类,输出对应的中文词。
它是基于骨骼点的孤立手语词分类,不是 RGB 视频端到端识别,也不是连续手语翻译。
我的服务器:RTX4090
建议先看完整篇文章再复现,避免出现问题三的情况
一、获取项目
服务器git clone或windows下载后上传服务器
二、搭建环境
1. 创建新虚拟环境(python 3.7)并进入环境
conda create -n slr_isolated python=3.7 conda activate slr_isolated2.装依赖
pip install -r requirements.txt三、准备数据集
1. 拿数据
下载xf500_body_depth_mat.zip(作者备份)→ 解压到data/SLR_dataset/xf500_body_depth_mat/(或官方 txt + MATLAB 转 mat)
2. 预处理
python data_preprocess.py生成data/SLR_dataset/processed/SLR_S45_E95_K24_body_{data,label}.npy
四、训练
python train.py保存model/SLR/blstm_output50_input24x24.pkl,日志在log/
遇到问题一 :Pillow 版本与 torchvision 版本不兼容
原因:我环境中的 Pillow 版本是 7.0 或更高,而它从 7.0.0 开始移除了PILLOW_VERSION常量,但我安装的 torchvision 版本较旧,代码里仍然在导入这个已被删除的常量。
解决:降Pillow版本(安装7.0以下版本)
pip install "pillow<7"遇到问题二:找不到文件
原因:运行data_preprocess.py会生成 K36 的 npy,但训练配置去找 K24
解决:修改data_preprocess.py关键帧数量为24并重新运行
问题三:PyTorch 环境与 RTX 4090不兼容
禁用cuCNN后出现
原因:cublasSgemm是 cuBLAS 库执行矩阵乘法的函数。在 LSTM 的运算中,输入数据需要与权重矩阵相乘,这一步正是由 cuBLAS 完成的。你的 RTX 4090 是 Ada Lovelace 架构(计算能力 sm_89),而 Python 3.7 能安装的旧版 PyTorch 官方预编译包通常只包含到 sm_86 或更低的 CUDA 内核。虽然 NVIDIA 的规则允许高版本架构“向上兼容”运行低版本内核,但在 cuBLAS 的某些特定操作中,这种兼容并不总是可靠,尤其是在复杂的 RNN 计算路径上。
解决:换环境和依赖
conda create -n slr_slr_isolated_new python=3.10 -y conda activate slr_slr_isolated_new pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 pip install numpy matplotlib scipy scikit-learn Flask训练成功日志
五、测试
python test.py终端输出Test accuracy
六、结果
1. 训练过程复现与曲线分析
跑通train.py,得到完整的训练/验证损失记录。训练使用2层 BiLSTM(隐层1024),Adam优化器,学习率初始0.001,共20个 epoch,初始学习率0.001,在第11轮和第16轮分别衰减为原来的1/10。观察训练loss与验证loss的走势,并标出了best valid epoch(验证损失最低的轮次),确认模型收敛正常、未出现明显过拟合。
2. 测试结果与指标分析
跑通test.py,测试集准确率92.8%。
混淆矩阵:对角线呈现深色高值聚集,绝大部分错误高度集中于极少数特定词对之间(如Class 20与28、Class 6与7 互相误判),说明模型整体分类边界清晰。
每类强弱项:表现呈现出“强者极强、弱者极少”的分布,有7个类别达到 F1=1.0的完美识别,而最弱的3个类别(Class 20、28、6)因骨骼特征高度相似导致F1跌至0.63-0.68,是后续优化的核心目标。
样例与错误分析:正确/错误样本、top-5概率
在当前的24维骨架特征空间里,“富强”和“安静”的手臂相对坐标轨迹可能极其相似;同样,“稳定”和“禁止”的骨骼姿态也高度重合。模型虽然“看得很准”(自信),但“学偏了”(特征区分度不够)。