文章目录
- 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的文件夹
此时可以进入文件夹测试,可以直接使用官方给的测试指令进行测试:
直接在命令行输入:
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")
最后修改效果如下:
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、输入以下指令,等待全部执行完毕即可,有可能速度很慢,取决于你的网速(提前下载好模型会加快速度)
如果嫌下载速度慢的话,可以使用我的百度云链接:
提取码:gfhq
cd openpose
sudo bash ./scripts/ubuntu/install_deps.sh
mkdir build
cd build
cmake ..
make -j4
sudo make install
以上步骤执行完毕以后,可以再次使用上面所给的指令来进行测试,看环境是否配置完成
执行完最后一步,即sudo make install
显示:
然后再使用之前的测试指令进行测试,看环境是否配置完成
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
解决方法就是上文所提到的解决步骤
(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
接下来等待下载完成即可。注意:这里的错误是发生在测试加上手和面部的关键点检测后出现的,如果只是运行身体的关键点检测一般不会出现这种问题
参考链接