文章目录

  • OpenPose环境配置
  • 1. 拉取镜像
  • 2. 进入容器,进行测试
  • 3. 可能存在的问题
  • (1) can not opendisplay
  • (2) Check failed: error == cudaSuccess (48 vs. 0) no kernel image is available for execution on the device
  • (3)Check failed: ReadProtoFromBinaryFile(param_file, param) Failed to parse NetParameter file

OpenPose环境配置

本次配置是使用docker进行openpose环境的配置

1. 拉取镜像

docker hub官方网站 这里我使用的是exsidius/openpose

创建docker这里不再赘述,可以自己百度

2. 进入容器,进行测试

进入容器文件界面,可以看到直接就有一个命名为openpose的文件夹

openim docker 部署 openproject docker_ubuntu


此时可以进入文件夹测试,可以直接使用官方给的测试指令进行测试:

直接在命令行输入:

cd openpose
#only body
./build/examples/openpose/openpose.bin --video examples/media/video.avi

如果可以直接运行,那么你的环境就已经可以使用了

但是在实际测试时,我并没有成功。因此,还需要以下的步骤:

解决步骤:
1、重新克隆项目,这里我直接在workspace下重新克隆了一个新项目,没有删除原来的

git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose
cd 3rdparty/
git clone https://github.com/CMU-Perceptual-Computing-Lab/caffe

如果嫌下载速度慢的话,可以使用我的百度云链接:

百度云链接

提取码:gfhq

2、直接修改cuda.cmake文件
注意:这里的cuda.cmake是在:/root/Workspace/openpose/3rdparty/caffe/cmake的文件夹下
修改内容有两处如下:
1.在if (UNIX AND NOT APPLE)下面添加一行:

set(Caffe_known_gpu_archs "30 35 50 52 60 61 70 75")

最后修改效果如下:

openim docker 部署 openproject docker_深度学习_02

2.添加以下几行:

if(${CUDA_ARCH_NAME} STREQUAL "Fermi")
    set(__cuda_arch_bin "20 21(20)")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Kepler")
    set(__cuda_arch_bin "30 35")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Maxwell")
    set(__cuda_arch_bin "50")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Pascal")
    set(__cuda_arch_bin "60 61")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Volta")
    set(__cuda_arch_bin "70")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Turing")
    set(__cuda_arch_bin "75")

  elseif(${CUDA_ARCH_NAME} STREQUAL "All")
   set(__cuda_arch_bin ${Caffe_known_gpu_archs})
  elseif(${CUDA_ARCH_NAME} STREQUAL "Auto")
    caffe_detect_installed_gpus(__cuda_arch_bin)
  else() # (${CUDA_ARCH_NAME} STREQUAL "Manual")
    set(__cuda_arch_bin ${CUDA_ARCH_BIN})
  endif()

最后修改效果如下:

openim docker 部署 openproject docker_ubuntu_03


3、输入以下指令,等待全部执行完毕即可,有可能速度很慢,取决于你的网速(提前下载好模型会加快速度)

如果嫌下载速度慢的话,可以使用我的百度云链接:

百度云链接

提取码:gfhq

cd openpose
sudo bash ./scripts/ubuntu/install_deps.sh
mkdir build
cd build
cmake ..
make -j4
sudo make install

以上步骤执行完毕以后,可以再次使用上面所给的指令来进行测试,看环境是否配置完成

执行完最后一步,即sudo make install显示:

openim docker 部署 openproject docker_ubuntu_04

然后再使用之前的测试指令进行测试,看环境是否配置完成

3. 可能存在的问题

(1) can not opendisplay

这里因为我是连接服务器使用的,没有图形化界面。如果你只是需要利用openpose输入keypoints等关键点信息的话,可以直接用如下指令来解决:

#only body
./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_json output/ --display 0 --render_pose 0
#Body + face + hands
./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_json output/ --display 0 --render_pose 0 --face --hand

(2) Check failed: error == cudaSuccess (48 vs. 0) no kernel image is available for execution on the device

解决方法就是上文所提到的解决步骤

openim docker 部署 openproject docker_docker_05

(3)Check failed: ReadProtoFromBinaryFile(param_file, param) Failed to parse NetParameter file

这可能是你的pose_iter_102000.caffemode文件损坏了,或者根本不存在。解决方法也很简单,直接重新下载就好了(该文件的位置在/root/Workspace/openpose/models/hand下)

解决方法:

cd /root/Workspace/openpose/models
sudo sh getModels.sh

接下来等待下载完成即可。注意:这里的错误是发生在测试加上手和面部的关键点检测后出现的,如果只是运行身体的关键点检测一般不会出现这种问题

参考链接

openpose演示实例概述链接

问题2解决方法参考链接

openpose快速入门