论文代码和Two-Stream Network for Sign Language Recognition是一样的。https://github.com/FangyunWei/SLRT/
在github上找到其他人成功复现的过程(非常感谢!)qbdl/SingleStream-SLT: 论文复现:A Simple Multi-modality Transfer Learning Baseline for Sign Language Translation (SingleStream-SLT Baseline) (github.com)
Prerequisites
该项目所需的虚拟环境的依赖和pip安装包都在environment.yml里。
报错,两个需要pip的包版本不一致,于是我在environment.yml里注释掉了这两个包的版本。
继续重新创建环境
说环境已经存在了
把需要pip的包放在requirements.txt里重新下
pycocotools下不下来,按网上教程,只下了2.0.7的,项目本来要求2.0.4的。
最后pip list查看安装的包
Download
Datasets
项目给的download.sh(它会下载数据集并解压到对应文件夹,并预处理)会报错
下载数据集,这里以phoenix-2014t为例:
wget --no-check-certificate https://www-i6.informatik.rwth-aachen.de/ftp/pub/rwth-phoenix/2016/phoenix-2014-T.v3.tar.gz -O data/phoenix-2014t/phoenix-2014-T.v3.tar.gz`
代码含义解释:
--no-check-certificate #不检查证书
-O, --output-document=文件 #将文档写入 FILE
我尝试用download.sh里的命令tar -xvf data/phoenix-2014t/phoenix-2014-T.v3.tar.gz data/phoenix-2014t/解压,报错了
我搜到了解压.tar.gz的命令,然后cd 到phoenix-2014t文件夹(解压后的文件需要放在的地方),直接输入
tar -xzvf phoenix-2014-T.v3.tar.gz
#之后需要压缩成一个zip文件,但由于文件同名问题,没有成功压缩,所以后续都是用原有论文提供的特征提取后的数据文件
# zip -r -j data/phoenix-2014t/phoenix-2014t-videos.zip data/phoenix-2014t/phoenix-2014t.v3/PHOENIX-2014-T/features/fullFrame-210x260px/
Pretrained Models
下载预训练模型,创建并放在pretrained_models文件夹下:
下载路径: here
文件夹结构如下:
Training and Evaluation
下载Checkpoints
Checkpoint是用于描述在每次训练后保存模型参数(权重)的惯例或术语。这就像在游戏中保存关卡时你可以随时通过加载保存文件回复游戏。你可以加载保存的模型权重重新开启训练甚至可以之后进行一个推理。复杂模型的训练阶段通常很长(数小时到数天到数周)。因此,为了不丢失训练进度,建议在每个epoch或每个epoch中当它在当前这个point中是这个时间下的最好权重时执行模型参数(权重)的checkpoint。
We provide checkpoints trained by each stage here.
点击here下载checkpoint并放置在目录下:
先进行测试Evaluation试试效果
这里以phoenix-2014t为例
执行下面代码,运行Sign2Text测试
dataset=phoenix-2014t #phoenix-2014t / csl-daily
python prediction.py --config experiments/configs/SingleStream/${dataset}_s2t.yaml
测试运行结果:
与项目的结果基本一致
Pretraining
这里跳过了预训练,直接拿原论文训练好的模型(s2g以及g2t) here.(原论文没有提供csl-daily的g2t文件,需要自己运行获得)。上一步已经存在路径下了,不需要额外操作。
Feature Extract
使用s3D进行视频特征提取。
特征提取这里也跳过了,采用原论文提取好的特征,上一步已经存在路径下了,不需要额外操作。
Multi-modal Joint Training
dataset=phoenix-2014t #phoenix-2014t / csl-daily
python -m torch.distributed.launch --nproc_per_node 1 --use_env training.py --config experiments/configs/SingleStream/${dataset}_s2t.yaml
训练日志在/experiments/outputs/SingleStream/phoenix-2014t_s2t/train.rank0.log,我让结果可视化:
【Pytorch】利用SSH查看远程服务器上的tensorboard可视化界面_连接服务器怎么查看它的可视化页面-CSDN博客
使用VSCode以及其提供的Remote - SSH插件通过ssh登录远程服务器。
点击终端 > 新终端创建一个bash终端出来。在这个bash终端中执行:
tensorboard --logdir='/root/TwoStreamNetwork/experiments/outputs/SingleStream/phoenix-2014t_s2t'
启动成功后会在bash终端中显示:
到这一步就可以直接在本地浏览器访问http://localhost:6006/就打开了远程服务器上的tensorboard。
点击SCALARS,出现可视化结果: