利用dockerfile配置openpose运行环境

﹥>﹥吖頭↗ 提交于 2019-12-19 05:02:50

本次配置使用dockerfile来配置openpose的运行环境

1.寻找合适的dockerfile

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

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

2.运行docker

进入容器文件界面,可以看到直接就有一个命名为openpose的文件夹
在这里插入图片描述
此时可以进入文件夹测试,可以直接使用官方给的测试指令进行测试:
直接在命令行输入:

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

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

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

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

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

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

最后修改效果如下:
在这里插入图片描述

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

最后修改效果如下:
在这里插入图片描述
3、输入以下指令,等待全部执行完毕即可,有可能速度很慢,取决于你的网速

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

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

(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快速入门

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!