(一)安装caffe
安装相关依赖库:
sudo apt-get --assume-yes install build-essential
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo -H pip install --upgrade numpy protobuf
查看protobuf版本:
protoc --version
openpose与当前Anaconda中自带的protobuf版本不兼容,需要2.6.1版本的protobuf。(CMU官方github上说不要安装Anaconda,其实是可以的,像hdf5等等的依赖库用Anaconda就可以一起安装了,免去了自己安装的麻烦)
下载Caffe:
git clone https://github.com/BVLC/caffe.git
检查Caffe版本:
cd caffe/
git checkout f019d0dfe86f49d1140961f8c7dec22130c83154
OpenPose贡献人员还没解决因最新版Caffe增加Layer导致不兼容的问题,所以需要使用commit为f019d0dfe86f49d1140961f8c7dec22130c83154的Caffe。(所以我们不能用openpose的脚本自动下载caffe,之前我用官方的方法直接配,全部编译通过了,但是运行的时候报错。我们要通过Anaconda下载指定版本的caffe来编译,在编译openpose时链接之前我们自己编译好的caffe)
(二)安装OpenPose
下载OpenPose:
git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
下载模型(这一步可跳过,因为之后会自动下载):
cd openpose
cd models
./getModels.sh
cd ..
打开cmke软件:
cmake-gui
填写openpose源码目录以及build:
点击Configure按钮, 选择Unix Makefile和use default native compling,点击finish按钮
点击Generate按钮,中间会出现一些红色的可配置项。之后按图操作配置caffe编译路径 :
最后点击Generate按钮
OpenPose 编译
cd OPENPOSE_ROOT/build/
make -j`nproc`
编译过程中出现过一个错误 cannot find #include “caffe/proto/caffe.pb.h”
通过下图方法解决问题(在caffe目录下输入如下代码):
测试:
./build/examples/openpose/openpose.bin --video examples/media/video.avi
(三)其他相关
[1] - 编译时不采用 cuDNN:
在OpenPose 配置中,去除 CMake 的 USE_CUDNN 勾选.
如果不采用 cuDNN,则需要减少 --net_resolution 设定的尺寸,以避免 GPU 显存不足.
--net_resolution 可尝试:640x320, 320x240, 320x160, 160x80。
如:--net_resolution -1x320.
[2] - 自定义 Caffe 版本:
在OpenPose 配置中,去除 CMake 的 BUILD_CAFEE 勾选,手工定义 Caffe include路径和 library路径.
- 自定义 OpenCV 版本:
在OpenPose 配置中,如果是从源码编译安装的 OpenCV,导致 OpenPose 不能找到 OpenCV路径,则可以手工指定 OPENCV_DIR 路径.
如:
cmake -DOpenCV_INCLUDE_DIRS=/home/"${USER}"/softwares/opencv/build/install/include \
-DOpenCV_LIBS_DIR=/home/"${USER}"/softwares/opencv/build/install/lib \
-DCaffe_INCLUDE_DIRS=/home/"${USER}"/softwares/caffe/build/install/include \
-DCaffe_LIBS=/home/"${USER}"/softwares/caffe/build/install/lib/libcaffe.so -DBUILD_CAFFE=OFF ..
cmake -DOpenCV_CONFIG_FILE=/home/"${USER}"/softwares/opencv/build/install/share/OpenCV/OpenCVConfig.cmake \
-DCaffe_INCLUDE_DIRS=/home/"${USER}"/softwares/caffe/build/install/include \
-DCaffe_LIBS=/home/"${USER}"/softwares/caffe/build/install/lib/libcaffe.so -DBUILD_CAFFE=OFF ..
(四)Python API
OpenPose的 Python API,需要在 CMake GUI 中设置 BUILD_PYTHON.
如:./build/examples/tutorial_developer/python_1_pose_from_heatmaps.py.
(五)CPU 版本
为了可以手工选择 CPU 版本,则在 CMake GUI 中设置 GPU_MODE 为 CPU_ONLY.
注:CPU 版本的精度比 CUDA 版本的精度高大约 1%. 故结果可能有不同.
Ubuntu 中的 OpenPose 利用了 Caffe 的 Intel MKL(Math Kernel Library) 版本. 也可以通过取消选择USE_MKL,利用自定义的 Caffe 版本.
默认 CPU 版本在 Ubuntu 上大概每秒 0.2 张图像(比 GPU 版本慢 ~50X ). MKL 版本能够提升 2X 的速度,每秒 ~0.4 张图像.
(六)OpenPose 重新安装与删除
[1] - 如果运行了 sudo make install,则,首先在 build/ 中运行 sudo make uninstall.
[2] - 删除 build/ 路径.
[3] - CMake GUI 中,点击 File - Delete Cache.
[4] - 重新安装.(或删除 OPENPOSE_ROOT/ 路径.)