Google colab复现openpose+st-gcn的心路历程
Google colab复现openpose+st-gcn的心路历程:
因为本人的大致研究方向为动作识别,加上自己的笔记本比较菜鸡,没有牛皮的显卡,所以采用了google的colab。在网上查了三天,最后发现只有两个老哥的笔记比较靠谱,其他人基本上都是复制粘贴他们的博客,这两个老哥写的也比较简陋,可能是针对他们的基础写的,有些地方没写清楚,对于小白有点不太友好,本人的技术也很菜,站在之前的那两位老哥的肩膀上过来的,一共重新配置了8次才成功,花了两天时间,每一次都要从头开始各种bug都碰到过,换了三个谷歌账号才完成(因为colab的gpu是限时的!)。
这里给出两个靠谱的笔记地址:
(25条消息) 配置ST-GCN环境记录【Google colab】_Gary_ghw的博客-CSDN博客
(26条消息) ST-GCN复现以及配置环境遇到的问题(Colab)_Niki173的博客-CSDN博客
1、装载google云端硬盘
2、上传在github上下载的st-gcn代码到mydrive并解压到content目录下。
传送门在这:github:https://github.com/1zgh/st-gcn
3、导入openpose的代码:
import os
from os.path import exists, join, basename, splitext
git_repo_url = 'https://github.com/CMU-Perceptual-Computing-Lab/openpose.git'
project_name = splitext(basename(git_repo_url))[0]
if not exists(project_name):
# see: https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/949
# install new CMake becaue of CUDA10
!wget -q https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.tar.gz
!tar xfz cmake-3.13.0-Linux-x86_64.tar.gz --strip-components=1 -C /usr/local
# clone openpose
!git clone -q --depth 1 $git_repo_url
!sed -i 's/execute_process(COMMAND git checkout master WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}\/3rdparty\/caffe)/execute_process(COMMAND git checkout f019d0dfe86f49d1140961f8c7dec22130c83154 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}\/3rdparty\/caffe)/g' openpose/CMakeLists.txt
# install system dependencies
!apt-get -qq install -y libatlas-base-dev libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev opencl-headers ocl-icd-opencl-dev libviennacl-dev
# install python dependencies
!pip install -q youtube-dl
# build openpose
!cd openpose && rm -rf build || true && mkdir build && cd build && cmake .. && make -j`nproc`
from IPython.display import YouTubeVideo
编译成功之后如下:
4、安装cuda9.0,colab上默认是10.0:
!wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
!dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb # 安装软件包:dpkg -i <.deb file name>
!apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub # 下载的文件添加到本地数据库
!apt-get update
!apt-get install cuda=9.0.176-1
!cat /usr/local/cuda/version.txt # 查看cuda版本
5、安装torch1.0.0加torchvision0.2.1 这里再安装torch1.0.0的时候报错了。(!!!!这个鬼东西搞了我一整天,重新弄了三次,最后经测试后才发现是在使用了!git clone st-gcn代码。。。命令之后就不能用pip了,我也不知道啥原因。所以尽量先把代码下载到本地在上传到谷歌云硬盘上解压。)
6、安装一些配置环境
!pip install -r requirements.txt
!sudo apt-get install ffmpeg
%cd /content/st-gcn-master/torchlight
!python setup.py install
%cd ..
!bash /content/st-gcn-master/tools/get_models.sh # 如果这个不管用就去上面我给的老哥的文章中找到模型,下载再上传到对应的位置(在st-gcn-master下的models里)。
7、运行demo
!python main.py demo --video /content/st-gcn-master/resource/media/cuk2.mp4 --openpose /content/openpose/build
这里我报了一个yaml的错误
意思是在io.py文件里面的load()函数缺少Loader参数,那咱就给他加上去。
或者是把load函数改为safe_load()函数。
到这我就跑通了。
但是在这里我发现一个问题,我看了github上star最多的那个st-gcn代码,他的源码的io.py文件里面是没有我上面这个load函数的错误的,但是他那个代码我运行一直会报Can not find python API的错。解决不了,然后我就改用另外一个老哥提供的代码了,除了这个load函数之外,其他的没问题。能跑通。但是最后存下来的.mp4文件。我下载到本地之后,播放是一片漆黑的。这个原因我还没处理。
最后祝大家也能早日复现,本人也是受尽了磨难才弄完。本人的大致研究发现是动作识别,如有兴趣,可以加好友一起讨论,本人微信是:captainsunsun
最后把我过程中用到的所有脚本总结一下:
import os
from os.path import exists, join, basename, splitext
git_repo_url = 'https://github.com/CMU-Perceptual-Computing-Lab/openpose.git'
project_name = splitext(basename(git_repo_url))[0]
if not exists(project_name):
# see: https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/949
# install new CMake becaue of CUDA10
!wget -q https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.tar.gz
!tar xfz cmake-3.13.0-Linux-x86_64.tar.gz --strip-components=1 -C /usr/local
# clone openpose
!git clone -q --depth 1 $git_repo_url
!sed -i 's/execute_process(COMMAND git checkout master WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}\/3rdparty\/caffe)/execute_process(COMMAND git checkout f019d0dfe86f49d1140961f8c7dec22130c83154 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}\/3rdparty\/caffe)/g' openpose/CMakeLists.txt
# install system dependencies
!apt-get -qq install -y libatlas-base-dev libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev opencl-headers ocl-icd-opencl-dev libviennacl-dev
# install python dependencies
!pip install -q youtube-dl
# build openpose
!cd openpose && rm -rf build || true && mkdir build && cd build && cmake .. && make -j`nproc`
from IPython.display import YouTubeVideo
!unzip "/content/drive/MyDrive/st-gcn/st-gcn.zip" -d "/content/" # 这个是解压我自己上传到云盘上的st-gcn.zip
!pip install torch==1.0.0 torchvision==0.2.1
!wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
!dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb # 安装软件包:dpkg -i <.deb file name>
!apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub # 下载的文件添加到本地数据库
!apt-get update
!apt-get install cuda=9.0.176-1
!cat /usr/local/cuda/version.txt # 查看cuda版本
import torch
torch.__version__
%cd st-gcn-master
!pip install -r requirements.txt
!sudo apt-get install ffmpeg
%cd /content/st-gcn-master/torchlight
!python setup.py install
%cd ..
!bash /content/st-gcn-master/tools/get_models.sh
!pip install -U PyYAML
!python main.py demo --video /content/st-gcn-master/resource/media/clean_and_jerk.mp4 --openpose /content/openpose/build