< 1 > 训练ST-GCN
1, 制作训练集;
stgcn官方使用了Kinetics-skeleton和NTU RGB+D两个数据集来训练网络,因此,我们需要将自己的训练集先转换为这两个数据集的格式然后在转化为stgcn的格式,或者直接转化为stgcn的格式,
(1)在目录tools/下有两个文件kinetics_gendata.py 和 ntu_gendata.py两个文件, 这两个文件是官方提供的数据集转化格式文件
(2)先下载ntu rgb d 数据集,然后运行ntu-gendata.py ,格式如下:
python tools/ntu_gendata.py --data_path /home/ray/Desktop/STGCN/NTUdata/nturgb+d_skeletons
python tools/kinetics_gendata.py --data_path
这样,就会在目录 ./data/ 下生成数据集文件,如 NTU-RGB-D
(3)ntu tgb d数据格式分析:
共有114480个样本视频,其中前60类有56880,后60类有57600
文件名:S032C003P106R002A107.skeleton
S:设置号,共有17组设置
C:相机ID,共有三架 filename[filename.find(‘C’) + 1:filename.find(‘C’) + 4])
P:人物ID, filename[filename.find(‘P’) + 1:filename.find(‘P’) + 4])
R:同一个动作的表演次数
A:动作类别 filename[filename.find(‘A’) + 1:filename.find(‘A’) + 4])
每个文件中的数据格式如下:
第一行50代表这个文件有50帧
第二行 2 代表使用的是第二个摄像头拍摄的
第三行的一组数如:72057594037935445 0 1 1 1 1 0 0.09418681 -0.1335965 2代表的是设置号
第四行 25 代表有25个关键点的信息
接下来是25行的关键点信息,每一行代表一个关键点的信息
0.7276195 -0.008703345 3.380219 341.3845 210.683 1199.419 541.1138 -0.08010744 0.04292405 0.9733888 -0.2103677 2
0.7276代表概率,
2,训练相关参数和命令
3,测试
(1)测试官方与训练模型:
1 首先下载官方预训练模型, bash tools/get_models.sh,或者去百度盘下载,下载完毕后将模型文件放在models文件夹下
2
评价在kinetcis-skeleton数据集上预训练的模型
python main.py recognition -c config/st_gcn/kinetics-skeleton/test.yaml
评价在ntu rgb d数据集上预训练的模型---cross view
python main.py recognition -c config/st_gcn/ntu-xview/test.yaml
评价在ntu rgb d数据集上预训练的模型---cross subject
python main.py recognition -c config/st_gcn/ntu-xsub/test.yaml
设置多gpu加速,或者修改batch size以减少内存消耗
python main.py recognition -c <config file> --test_batch_size <batch size> --device <gpu0> <gpu1> ...
3, 训练自己的网络
(1)训练和测试
python main.py recognition -c config/st_gcn//train.yaml [–work_dir ]
–device 0 --batch_size 128
其中dataset必须为:ntu-xsub, ntu-xview, kinetics-skeleton之一
work_dir 是训练结果保存的位置,默认为work_dir, 也可以自动设置
如果显存不够,则减少batch_size,
评价自己训练的模型的指令是:
python main.py recognition -c config/st_gcn//test.yaml --weights
–device 0 --batch_size 128
(2)修改网络的输出类别数:
[1] 在./config/stgcn/文件夹中有三个不同的子文件夹:kinetics-skeleton, ntu-xsub, ntu-xview,每个文件夹下面都有两个文件:train.yaml 和 test.yaml, 可以在这个文件夹中修改一些默认的参数,比如:数据集的存储路径, 模型的参数(输入的图像尺寸, dropout的值, 分类的类别数即网络输出维度,优化函数的参数,训练网络时的参数如指定GPU,batch_size, test_batch_size,num_epoch)
https://www.cnblogs.com/uestc-mm/p/7338244.html