概述
软硬件环境:
python 3.6.5
Ubuntu 18.04 LTS
Pytorch 1.1.0
NVIDIA TITAN XP 8GB
项目链接https://github.com/open-mmlab/mmskeleton
前提
HRNet的准备工作可见我的上一条博文。
准备工作
- 先准备数据集
- 准备环境,包含两步:
第一步: 进入文件夹./deprecated/origin_stgcn_repo/ ,打开requirements.txt看下需要满足的环境条件,conda list
:
我不直接安装requirements.txt中的需求原因是,怕修改了我的torch版本,导致和cuda版本不匹配,这样我又要重新降版本,很麻烦,所我采用对比的方法,对比自己已经安装的包和requirements.txt上需要安装的包。
对比后,发现缺少:
所以pip install -r requirements.txt
进行安装:
第二步:
cd deprecated/origin_stgcn_repo/torchlight
python setup.py install
cd ..
到这一步,环境就基本搭建好了。
特征点
这里我没有使用ST-GCN提取特征点的Openpose,而是使用了HRNet来提取特征点。
OpenPose提取18个点,HRNet提取17个点,所以有很多需要改的地方。
数据集准备
这里我是用了一个比较老的数据集,training_lib_KTH.zip。
这个数据集包含六种行为。
我对数据集的简单处理是,按照行为对所有视频进行分类,把同一种行为放到一个文件夹中:
训练过程
准备工作:
i)修改train.yaml,
work_dir: ./work_dir/recognition/kinetics_skeleton/ST_GCN #此处根据自己需要来改
# feeder
feeder: feeder.feeder.Feeder
train_feeder_args:
random_choose: True
random_move: True
window_size: 150
data_path: ./data/Kinetics/kinetics-skeleton/train_data.npy
label_path: ./data/Kinetics/kinetics-skeleton/train_label.pkl
test_feeder_args:
data_path: ./data/Kinetics/kinetics-skeleton/val_data.npy
label_path: ./data/Kinetics/kinetics-skeleton/val_label.pkl
# model
model: net.st_gcn.Model
model_args:
in_channels: 3
num_class: 400 #修改
edge_importance_weighting: True
graph_args:
layout: "openpose"
strategy: "spatial"
# training
device: [0, 1, 2, 3] #视情况修改
batch_size: 256 #视情况修改
test_batch_size: 256 #视情况修改
#optim
base_lr: 0.1 #视情况修改
step: [20, 30, 40, 50] #视情况修改
num_epoch: 50 #视情况修改
上面标注了我自己修改的地方。
ii) deprecated/origin_stgcn_repo/resource/kinetics_skeleton/label_name.txt 将里面的行为改成自己要训练的行为
iii)我修改了data_processing.py,demo_old.py,video.py 以及hrnet_process.py (前面已经提及,我使用HRNet提取特征点,所以需要修改很多地方)
训练过程:
i) 初次建立数据集,输出json文件(具体根据修改的data_processing.py来命令)
ii) 训练代码:
python main.py recognition -c config/st_gcn/<dataset>/train.yaml [--work_dir <work folder>]
这里我用的自己的数据集,所以config/st_gcn/<dataset>/train.yaml
部分直接改成train.yaml路径即可,后面中括号可以忽略。在训练过程中遇到了很多问题,主要的报错记录在下:
报错1:
ModuleNotFoundError: No module named 'skvideo'
解决办法:pip install --user scikit-video
报错2:AttributeError: module 'yaml' has no attribute 'FullLoader'
解决办法:pip install --ignore-installed PyYAML
报错3:ERROR: anaconda-client 1.6.14 has requirement python-dateutil>=2.6.1, but you'll have python-dateutil 2.1 which is incompatible.
解决办法:pip install python-dateutil==2.6.1
报错4:IndexError: index 300 is out of bounds for axis 1 with size 300
解决办法:说明视频帧数大于300了,先查看一下json文件每一个视频的frame_index,确认后,处理一下data_processing的逻辑,确定怎么进行切分。
测试
python main.py demo_old --video 'path'
最终看到如下结果:
努力没白费,继续加油!
最后
以上就是温暖枕头为你收集整理的HRNet提取骨架特征点+ ST-GCN训练自己的数据集代码实践问题记录的全部内容,希望文章能够帮你解决HRNet提取骨架特征点+ ST-GCN训练自己的数据集代码实践问题记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复