ST-GCN源码运行完整版(含OpenPose编译安装)及常见问题

ST-GCN源码运行完整版(含OpenPose编译安装)

-------本文仅为学习笔记,不做任何商业用途-------

下述相关工具包下载链接ST-GCN所需工具,提取码ze36

一、准备工作

1.Anaconda3安装

下载地址:Anaconda3下载地址(含历史版本)
根据相关提示进行默认安装,并添加环境变量,具体详细操作可见博客如下:Anaconda详细安装说明

2.Visual Studio 2017安装

下载地址:Visual Studio 2017下载地址
按照下图所示选项进行勾选安装
在这里插入图片描述

3.CUDA 10.0 安装

下载地址:CUDA各版本下载地址
安装时选择自定义高级选项,安装图如下:
在这里插入图片描述

安装后可通过cmd命令行输入下列指令检查是否安装成功:

nvcc --version

如若安装成功,结果如下:
在这里插入图片描述

4.cudnn 下载安装

下载地址:cudnn各版本下载地址
详细操作参考如下博客:cudnn详细安装步骤

二、st-gcn环境搭建

1.创建st-gcn新环境

conda create -n stgcn python=3.5.6
activate stgcn

2.st-gcn相关库依赖安装

先下载pytorch1.2.0及torchvision0.4.0,下载地址为pytorch官网

pip install E:\torch-1.2.0-cp35-cp35m-win_amd64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install E:\torchvision-0.4.0-cp35-cp35m-win_amd64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

测试是否安装成功
在这里插入图片描述
其他库依赖安装,进入到st-gcn源码包目录下:

conda install ffmpeg
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

结果如下:
在这里插入图片描述

三、OpenPose编译

1.源码及相关文件下载

下载地址:
openpose源码下载
CMAKE Gui 3.14.6下载

2.依赖安装及编译

相关的安装步骤网上有很多,这里贴一篇较为详细的博客.OpenPose笔记——windows 10下,自编译openpose代码(vs下能跑了,pythonAPI也能使了)

四、st-gcn源码编译运行

1.安装

cd st-gcn-master
cd torchlight
python setup.py install
cd ..

2.python api

openpose安装好了后,把生成的build/bin文件夹下的所有库复制到build/x64/release/下,
将models文件夹复制到build中

3.预训练模型下载

下载地址:预训练模型
将下载好的模型文件拷贝至./models文件路径下
在这里插入图片描述

4.代码测试

(1)demo_old测试
python main.py demo_old --video E:/st-gcn/st-gcn-master/st-gcn-master/resource/media/clean_and_jerk.mp4 --openpose E:/st-gcn/openpose-master/openpose-master/build/x64/Release

报错如下:
错误1:
系统找不到指定的路径。
Can not find pose estimation results
在这里插入图片描述
解决办法:
更改demo_old里的文件内容如下:

将openpose = '{}/examples/openpose/openpose.bin'.format(self.arg.openpose)改为如下语句:
openpose = '{}/OpenPoseDemo.exe'.format(self.arg.openpose)

错误2:
Check failed: error == cudaSuccess (2 vs. 0) out of memory
在这里插入图片描述
解决办法:
更改网络分辨率
更改demo_old里的文件内容如下:

添加net_resolution='320x176'到openpose_args中
openpose_args = dict(
            video=self.arg.video,
            write_json=output_snippets_dir,
            display=0,
            render_pose=0, 
            model_pose='COCO',
            net_resolution='320x176')

测试结果可在data/demo_result中查看
在这里插入图片描述

(2)demo_offline测试
python main.py demo_offline --video E:/st-gcn/st-gcn-master/st-gcn-master/resource/media/clean_and_jerk.mp4 --openpose E:/st-gcn/openpose-master/openpose-master

报错如下:
错误1:
video, data_numpy = self.pose_estimation() TypeError: ‘NoneType’ object is not iterable
在这里插入图片描述
解决办法:
更改demo_offline里的文件内容如下:

将pose_estimation()函数更改如下
    def pose_estimation(self):
        # load openpose python api
        if self.arg.openpose is not None:
            sys.path.append('{}/build/python/openpose/Release'.format(self.arg.openpose))
            os.environ['PATH']  = os.environ['PATH'] + ';' + 'E:/st-gcn/openpose-master/openpose-master/build/x64/Release/;' + 'E:/st-gcn/openpose-master/openpose-master/build/bin;'
            # sys.path.append('{}/python'.format(self.arg.openpose))
            # sys.path.append('{}/build/python'.format(self.arg.openpose))
        try:
            # from openpose import pyopenpose as op
            import pyopenpose as op
        except:
            print('Can not find Openpose Python API.')
            return

错误2:
opWrapper.emplaceAndPop([datum])
TypeError: emplaceAndPop(): incompatible function arguments. The following argument types are supported:
1. (self: pyopenpose.WrapperPython, arg0: std::vector<std::shared_ptrop::Datum,std::allocator<std::shared_ptrop::Datum > >) -> bool

Invoked with: <pyopenpose.WrapperPython object at 0x00000263AFEEA8F0>, [<pyopenpose.Datum object at 0x00000263AFF05F10>]
在这里插入图片描述
解决办法:
更改demo_offline里的文件内容如下:

将opWrapper.emplaceAndPop([datum])更改如下:
opWrapper.emplaceAndPop(op.VectorDatum([datum]))

错误3:
Check failed: error == cudaSuccess (2 vs. 0) out of memory
在这里插入图片描述
解决办法:
更改网络分辨率
更改demo_offline里的文件内容如下:

将params = dict(model_folder='./models', model_pose='COCO')更改如下:
params = dict(model_folder='./models', model_pose='COCO', net_resolution='320x176')

结果如下:
在这里插入图片描述

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 16
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 32
    评论
ST-GCN(Spatial Temporal Graph Convolutional Networks)是一种用于人体动作识别的深度学习模型,其源码解析可以分为以下几个方面。 首先,ST-GCN是基于图卷积神经网络(GCN)的一种扩展模型,在处理视频序列时,将每一帧的姿势数据(通常使用OpenPose进行姿势估计)建模为图结构,其中节点对应关键点,边表示节点之间的空间关系。源码中主要包了构建图结构的代码,包括节点的定义、边的连接方式以及图结构的转换。 其次,ST-GCN引入了时序关系建模,以利用动作序列的时间信息。源码中涉及到的关键部分是时序卷积层的实现,对于每一个节点,通过聚合邻居节点的特征信息来更新当前节点的特征表示,从而实现对时序关系的建模。此外,还包括了一些预处理方法,如时间差分和层间残差等,用于增强模型的表达能力。 再次,ST-GCN还包了一些辅助模块,用于提取更丰富的时空特征。例如,源码中提供了一个ST-GCN的变种模型,引入了多尺度特征融合的机制,通过将不同尺度的特征进行融合,提高了模型的鲁棒性和泛化能力。 最后,源码中还包括了一些训练和测试的相关代码,用于对ST-GCN模型进行训练和评估。这部分代码主要包括了数据加载、模型的构建、损失函数的定义以及优化器的选择等。 总之,ST-GCN源码解析涉及了构建图结构、时序关系建模、辅助模块和训练测试等方面,通过对这些代码的解析,可以深入理解ST-GCN模型的原理和实现细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咬我呀_Gemini

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值