本次配置使用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
接下来等待下载完成即可。注意:这里的错误是发生在测试加上手和面部的关键点检测后出现的,如果只是运行身体的关键点检测一般不会出现这种问题
参考链接
来源:CSDN
作者:whale998
链接:https://blog.csdn.net/weixin_42265958/article/details/103594432