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

  • Post author:
  • Post category:其他




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')

结果如下:

在这里插入图片描述



版权声明:本文为weixin_44014740原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。