win10 ST-GCN复现
下载源码
https://github.com/yysijie/st-gcn
安装requirements
1.anaconda切换python环境
命令为 conda activate 环境名,如:
conda activate pytorch1.4
2.安装requirements
cd /d F:
cd st-gcn //切换到st-gcn目录下,win10可能要以管理员模式开启cmd
cd torchlight
python setup.py install
cd ..
pip install -r requirements.txt
提示安装失败,于是一个一个安装packge(之前安装过pytorch)
conda install pyyaml
conda install argparse
conda install numpy
conda install h5py
conda install opencv-python
conda install imageio
conda install scikit-video
安装opencv-python时出现问题,于是自己在清华镜像源下载本地安装包(这里要和python的版本对应),我是python3.6下载的opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl
下载完成以后用pip install 安装包路径名安装opencv
pip install F:/opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl
下载数据集
这里使用的ntu-rgbd数据集, 百度云版本的可以在这里下载,https://github.com/Hrener/3D-Action-recognition
将Raw数据集处理为ST-GCN的输入
python tools/ntu_gendata.py --data_path <path to nturgbd+d_skeletons>
<path to nturgbd+d_skeletons>为Raw_skeleton/skeleton+D0-30000解压后的目录路径
python tools/ntu_gendata.py --data_path F:\skeleton+D0-30000
在st-gcn/data/目录下可找到处理后的数据
训练模型
训练前遇到的一些的bug
F:\st-gcn>python main.py recognition -c config/st_gcn/ntu-xsub/train.yaml
出现错误 RuntimeError: CUDA error: invalid device ordinal,发现源码中有4个gpu,将train.yaml中的device=[0,1,2,3]改为device=[0]
出现错误 BrokenPipeError: [Errno 32] Broken pipe,将processor.py下的函数load_data中的两个DataLoader()函数的参数num_workers设置为0,避免使用多线程读取数据
出现错误 cuda runtime error (2) : out of memory, 经过尝试,4G显存将batch_size设置为8时(在config下的train.yaml中设置),显存占用率刚好接近100%
中途暂停
由于电脑不能一直开着,训练一个epoch要接近一个小时的时间,源码中num_epoch设置为80,想一次训练完不太可能。读源码时发现代码有提供训练中途保存模型的功能,可以在train.yaml文件中进行如下修改
start_epoch = 0 //这里填写上次训练中断时的epoch,如果上次训练了5个epoch(0,1,2,3,4),那么再次训练的时候填5即可
save_interval = 1 //源码是时10个epoch保存一次模型参数weights,我设置为1
weights = model_path //这里填写最近一个epoch保存的model_weights.pt文件的路径,如果不加上这个参数,则默认训练一个新的模型
每次训练开始时,修改start_epoch和weights以接着训练上次未完成的模型