ST-GCN训练自建数据集

参考了许多博文,慢慢地也就把st-gcn跑出来了,参考的文章一会附在文章里面,实测有用。

 

1.安装st-gcn

复现STGCN CPU版 (ubuntu16.04+pytorch0.4.0+openpose+caffe)_Significance的博客-程序员秘密​​​​​​复现旧版STGCN GPU版 (win10+openpose1.5.0)_Significance的博客-程序员秘密2

2.准备训练数据集

官方使用的是Kinetics-skeletonNTU RGB+D两个数据集来训练网络,如果是自制数据集,我们需要将自己的训练集先转换为这两个数据集的格式,然后再转化为st-gcn所需要的格式。

那么如何将自己的训练集转换成这两个数据集的格式呢?

1)直接在st-gcn的程序里跑自己的数据

运行st-gcn: 

python main.py demo_old --video E:/st-gcn/resource/media/数据集名称/running.mp4 --openpose E:/openpose/build/bin

跑出来的json文件可以在st-gcn文件里获取到,单帧和一个视频所有帧都有。文件位置在data/openpose_estimation,data里是所有帧json文件,snippets是单帧json文件。

2)更改标签与标签序号

此时,存在的问题是json文件末尾的"label":"unknow","label_index": -1。

因为你没有对它进行定义,因次需要更改"label"与"label_index",即标签与标签序号。

3)建议下载Kinetics-skeleton数据集,数据集里的文件如下图,更改后的标签与标签序号对应于kinetics_train与kinstics_val文件。此外,按照模板更改文件中的两个json文件,kinetics_train_label.json与kinetics_val_label.json。

{"---QUuC4vJs": {  #修改"has_skeleton": true, "label": "testifying",   #修改"label_index": 354  #修改}, "--3ouPhoy2A": {  #修改"has_skeleton": true, "label": "eating spaghetti",   #修改"label_index": 116  #修改}, "--4-0ihtnBU": {  #修改"has_skeleton": true,  "label": "dribbling basketball",   #修改"label_index": 99  #修改},...
}

此时,自制数据集基本算改完了,准备训练开始训练数据集。

3.训练数据集

1)更改kinetics_gendata.py

if __name__ == '__main__':parser = argparse.ArgumentParser(description='Kinetics-skeleton Data Converter.')parser.add_argument('--data_path', default='data/Kinetics/kinetics-skeleton')  #修改parser.add_argument('--out_folder', default='data/Kinetics/kinetics-skeleton')  #修改arg = parser.parse_args()part = ['train', 'val']for p in part:data_path = '{}/kinetics_{}'.format(arg.data_path, p)  #修改label_path = '{}/kinetics_{}_label.json'.format(arg.data_path, p)  #修改data_out_path = '{}/{}_data.npy'.format(arg.out_folder, p)  label_out_path = '{}/{}_label.pkl'.format(arg.out_folder, p)if not os.path.exists(arg.out_folder):os.makedirs(arg.out_folder)gendata(data_path, label_path, data_out_path, label_out_path)

修改后,最好另存为xx_gendata.py,然后运行xx_gendata.py,将数据集转化为st-gcn需要格式。

python tools/xxx_gendata.py --data_path  

2)修改label_name.txt,原位置在resource/kinetics_skeleton,建议新命名一个文件夹,并保存label_name.txt。

3)修改train.yaml

work_dir: ./work_dir/recognition/jobsite# feeder
feeder: feeder.feeder.Feeder
train_feeder_args:random_choose: Truerandom_move: Truewindow_size: 150 data_path: ./data/jobsite/train_data.npy  #修改label_path: ./data/jobsite/train_label.pkl  #修改
test_feeder_args:data_path: ./data/jobsite/val_data.npy  #修改label_path: ./data/jobsite/val_label.pkl  #修改# model
model: net.st_gcn.Model
model_args:in_channels: 3num_class: 7  #修改edge_importance_weighting: Truegraph_args:layout: 'openpose'strategy: 'spatial'# training
device: [0]  #视情况修改
batch_size: 128   #视情况修改
test_batch_size: 256  #视情况修改#optim
base_lr: 0.1
step: [20, 30, 40, 50]  #视情况修改
num_epoch: 300  #视情况修改

4)修改demo_old

parser.set_defaults(config='./config/st_gcn/jobsite/demo_old.yaml')  #修改
parser.set_defaults(print_log=False)

此时,基本代码已修改完毕,开始进行训练。训练过程出现问题时,按照错误提示基本能够解决。

5)训练

python main.py recognition -c config/st_gcn/数据集/train.yaml

运行st-gcn中所参考文章如下:

HRNet提取骨架特征点+ ST-GCN训练自己的数据集代码实践问题记录_Cheungleilei的博客-程序员秘密
st-gcn训练自建行为识别数据集_星辰-程序员秘密
 

stgcn使用_Significance的博客-程序员秘密

ST-GCN 使用+复现_Queen B的博客-程序员秘密_st-gcn 复现

ST-GCN使用_raymond的CSDN-程序员秘密

st-gcn配置环境的过程中可能会遇到的问题_XYKenny的博客-程序员秘密

ST-GCN源码运行完整版(含OpenPose编译安装)及常见问题_咬我呀_Gemini的博客-程序员秘密

任何程序错误,以及技术疑问或需要解答的,请扫码添加作者VX :  18565453898

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[翻译] Haneke(处理图片缓存问题)

Haneke https://github.com/hpique/Haneke A lightweight zero-config image cache for iOS. 轻量级0配置图片缓存。 Haneke resizes images and caches the result on memory and disk. Everything is done in background, allowing for fast, responsive scrolling. Asking H…

面试题:为什么Java中的字符串对象是不可变的

阅读本文大概需要 4分钟。所谓不可变对象,是指一个对象在创建后,它的内部状态不会被改变的对象。这意味着当我们将一个不可变对象的引用赋值给某个变量后,我们就不能改变该对象的内部状态。 James Gosling也说过——Java开发者应该尽量使用不…

复现STGCN CPU版 (ubuntu16.04+pytorch0.4.0+openpose+caffe)

前提:ubuntu下将python3.5.2设为默认(百度) 一.下载stgcn (gitbub上fork后导入到gitee快些): st-gcn: Spatial Temporal Graph Convolutional Networks (ST-GCN) for Skeleton-Based Action Recognition in PyTorch…

Linux Shell编程之输入输出重定向

一、.输出重定向: 1.以覆盖方式把正确输入和错误输入都保存在同一个文件中 命令 &> 文件 2.以追加方式把正确输入和错误输入都保存在同一个文件中 命令 &>> 文件 3.以追加方式把正确输入保存在文件1中,把错误输入保存在文件2中 命令 …

不止JDK7的HashMap,JDK8的ConcurrentHashMap也会造成CPU 100%

大家可能都听过JDK7中的HashMap在多线程环境下可能造成CPU 100%的现象,这个由于在扩容的时候put时产生了死链,由此会在get时造成了CPU 100%。这个问题在JDK8中的HashMap获得了解决。其实JDK7中的HashMap在多线程环境下不止只有CPU 100%这一共怪异现象&am…

关于发布DIPS的MVC项目的IIS 7.0环境配置的方法

本人技术笨拙,今天在发布DIPS的MVC4.0项目,并部署到IIS上,遇到各种问题。在查询相关资料后,最终得以解决,所以想把这个过程记录下来。 注:DIPS为一种非关系型数据库 首先,需要安装和注册DIPS。注…

Veket PuppyLinux系统装在U盘中

在碎片化或移动式办公的需求前,怎样才能做到只借助别人的硬件,而使用的是自己的操作系统以及保存数据呢?此时你可能会想到将某个Linux的桌面版本推送并存放在U盘中,便于按需进行启动与使用。 Veket是基于Puppy的一个Linux简体中文…

Java调优:Mybaitis的缓存优化

作者:肥朝,来自肥朝(ID:feichao_java)我们先来看代码这段代码中, Mybatis一共发了两条SQL,这就好像说, Mybatis中没有缓存,然后我们打开Mybatis的文档一看,顿时震惊这难道是骗人的,说好的默认开启缓存呢…..其实不是的…

Shell编程之多命令顺序执行和管道符

1.多命令顺序执行: 打开!命令终端: 2.管道符 打开命令终端:

阿里一面 缓存穿透、缓存击穿、缓存雪崩和热点数据失效问题的解决方案

作者:乔二爷,来自:乔二爷(ID:hellozhouq)1 前言昨天晚上接到阿里的电面电话,过程中就问到了关于缓存相关的问题。虽然以前接触过,多多少少了解了一些。但是之前自己并没有好好记录这…

Fix chrome 下flash crash的问题

2019独角兽企业重金招聘Python工程师标准>>> 本来好好的,结果不知道为什么,在MAC下使用chrome不断出现flash插件的错误,网上搜了一下,看这里,要把chrome自带的flash插件注释掉。重启chrome好象是没什么问题…

为什么阿里巴巴建议集合初始化时,指定集合容量大小?

集合是Java开发日常开发中经常会使用到的。在之前的一些文章中,我们介绍过一些关于使用集合类应该注意的事项,如《为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作》。关于集合类,《阿里巴巴Java开发手册》中其实还有另外一个…

十五、Python操作mysql数据库

利用Navicat Premium 15软件连接mysql数据库,新建testdb数据库,并添加2个表usertest和userinfo。 main.py #!/usr/bin/python3 # -*- coding: utf-8 -*- import reimport pymysql # 导入模块myConn pymysql.connect(host127.0.0.1, # 主机模块port33…

面试必备的分布式事物方案

四月初,去面试了本市的一家之前在做办公室无人货架的公司,虽然他们现在在面临着转型,但是对于我这种想从传统企业往互联网行业走的孩子来说,还是比较有吸引力的。在面试过程中就提到了分布式事物问题。我又一次在没有好好整理的问…

记住:永远不要在MySQL中使用UTF-8

原文地址:https://dwz.cn/QS4wLyjh最近我遇到了一个bug&#xff0c;我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串&#xff0c;然后出现了一个离奇的错误&#xff1a;Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1我…

面试官:不使用synchronized和lock,如何实现一个线程安全的单例?

单例&#xff0c;大家肯定都不陌生&#xff0c;这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题的&#xff0c;一般情况下&#xff0c;我们都会使用synchronized来保证线程安全。那么&#xff0c;如果有这样一道面试题&#xff1a;不…

Mac OS X中配置Apache

我使用的Mac OS X版本是10.8.2&#xff0c;Mac自带了Apache环境。 启动Apache设置虚拟主机启动Apache 打开“终端(terminal)”&#xff0c;输入 sudo apachectl -v&#xff0c;&#xff08;可能需要输入机器秘密&#xff09;。如下显示Apache的版本 接着输入 sudo apachectl st…

你真的理解零拷贝了吗?

作者&#xff1a;ksfzhaohui 来源&#xff1a;http://t.cn/ESALgwV前言从字面意思理解就是数据不需要来回的拷贝&#xff0c;大大提升了系统的性能&#xff1b;这个词我们也经常在java nio&#xff0c;netty&#xff0c;kafka&#xff0c;RocketMQ等框架中听到&#xff0c;经常…

一、华为鸿蒙开发HUAWEI DevEco Studio下载、安装与配置

一、HUAWEI DevEco Studio下载 https://developer.harmonyos.com/cn/develop 二、HUAWEI DevEco Studio安装 解压后&#xff0c;双击安装包。 打开启动 DevEco Studio 三、DevEco Studio配置 DevEco Studio开发环境需要依赖于网络环境&#xff0c;需要连接上…