文章目录
前言
本次任务为运行opengait代码。主要侧重于gaitedge,需要用到的数据集为CASIA-B*。
注意是带有星号的数据集,不然跑第二个配置文件时会报错!
电脑配置:
windows
带有1个GPU
注意!代码中需要改的点
这部分比较重要,所以,放在最前面,而不按照运行顺序
torch.distributed.init_process_group(‘nccl’, init_method=‘env://’)
如果是windows的话,这个要改为torch.distributed.init_process_group('gloo')
ncll好像只能在linux上运行
一、下载源代码
点击上方链接后,就进入了github中opengait所在位置
点击绿色按钮,然后点击Download ZIP,下载代码,然后用pycharm打开
二、配置环境——pycharm,pytorch等
1.pycharm虚拟环境设置
注意python版本不能太高,我的是3.6版本
pytorch版本为1.10.2,torchvision版本为0.11.3
稍微具体一点来说,首先需要在pycharm里配置文件的解释器,选择虚拟环境中的python.exe
2.下载相应的包
官方命令为:
conda install tqdm pyyaml tensorboard opencv kornia einops -c conda-forge
conda install pytorch==1.10 torchvision -c pytorch
应该还需要下载opencv,py7zr等包
注意setuptools的版本不能太高,最好为58.04版本
pillow的版本应该为9.5.0
三、下载数据集
CASIA-B*数据集需要通过邮箱申请
下载好后,记下数据集存放的路径
然后运行命令:
python datasets/pretreatment.py --input_path CASIA-B --output_path CASIA-B-pkl
即用pretreanment.py文件对数据集进行预处理
注意 ,–input_path后面为下载好的数据集的存放路径,–output_path后为存放预处理后的数据集的路径,我用的是./dataset/CASIA-B-pkl
这个预处理会调整数据存放的结构,将数据集都变成.pkl文件
四、下载模型
1.第一种方式
官方给的命令为:
python misc/download_pretrained_model.py
2.第二种方式
如果以上命令行运行失败,还可以用第二种方式,即去到release页面,下载需要的模型。
要下载那些模型,存放到哪里呢?
可以查看misc/download_pretrained_model.py文件:
if __name__ == “__main__”:
urls = [
“https://github.com/ShiqiYu/OpenGait/releases/download/v1.0/pretrained_casiab_model.zip”,
“https://github.com/ShiqiYu/OpenGait/releases/download/v1.1/pretrained_oumvlp_model.zip”,
“https://github.com/ShiqiYu/OpenGait/releases/download/v1.1/pretrained_grew_model.zip”]
for url in urls:
download_file_and_uncompress(
url=url, extrapath=‘output’)
gaitgl_grew = [‘https://github.com/ShiqiYu/OpenGait/releases/download/v1.1/pretrained_grew_gaitgl.zip’,
‘https://github.com/ShiqiYu/OpenGait/releases/download/v1.1/pretrained_grew_gaitgl_bnneck.zip’]
for gaitgl in gaitgl_grew:
download_file_and_uncompress(
url=gaitgl, extrapath=‘output/GREW/GaitGL’)
print(“Pretrained model download success!”)
由此,可以得出,前三个模型要放到output文件夹下,后面两个模型放在output/CREW/GaitGL文件夹下,具体结构如下:
五、开始训练
官方给的命令为:
CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 opengait/main.py --cfgs ./configs/baseline/baseline.yaml --phase train
由于分布式训练会报错(目前还未解决),所以去掉了CUDA_VISIBLE_DEVICES=0,1 等分布式训练部分
由于launch过时,所以改为了run:
python -m torch.distributed.run opengait/main.py --cfgs 这里放要跑的配置文件的路径 --phase train
1.gaitedge第一个配置文件
(1)修改配置文件
以下为要修改的地方:
1)dataset_name
这个要改为自己用的数据集的名字,如CASIA-B,CASIA-B*,最后相应的输出会放到output/dataset_name这个文件夹下
2)dataset_root
注意这里的相对路径应该是相对main.py的(个人猜想)
我的文件结构如下,将预处理后的数据集放在了datasets文件夹下,所以我的dataset_root为./datasets/CASIA-B-pkl
3)evaluator_cfg 中sample下的batch_size
这里的batch_size应该与可用GPU数量相等
如果不知道GPU数量,可以在终端输入python
,进入python后,执行print(torch.cuda.device_count())
(2)开始运行
训练命令如下:
python -m torch.distributed.run opengait/main.py --cfgs ./configs/gaitedge/phase1_rec.yaml --phase train --log_to_file
注意,配置文件要改为自己要训练的模型的配置文件,这里运行gaitedge第一个配置文件,所以路径为: ./configs/gaitedge/phase1_rec.yaml
–log_to_file 表示需要记录日志,在output里面可以看到
运行结果可以在tensorboard中查看,用tensorboard打开output/CASIA-B/GaitGL/GaitGL/summary里的文件即可,命令为:tensorboard --logdir=output/CASIA-B/GaitGL/GaitGL/summary
如果代码跑到一半出错了,或者有事情需要暂停,则可以在终端输入Ctrl+C,终止运行。下次可以加上iter参数,从已经存的checkpoins检查点开始运行。
由于我用的是CASIA-B数据集,第一个配置文件用的是GaitGL模型,所以需要去output/CASIA-B/GaitGL下找checkpoints,如下。
按照第一个配置文件,每训练10000轮(save_iter)就存一个检查点,并且进行一次评估。一共运行80000轮(total_iter)。由于我还没有开始训练,所以只有最开始就存在的GaitGL-80000.pt。
2.gaitedge第二个配置文件
注意第二个配置文件,一定需要CASIA-B*数据集,而不能用CASIA-B,不然会出现数组越界的错误。
CASIA-B预处理后,一个文件夹下只有一个.pkl文件,而CASIA-B*预处理后,一个文件夹下会有四个.pkl文件。