anaconda下配置openpose python API+caffe

如果你也像我一样没有服务器root权限,想在anaconda上配置openpose python API或caffe的话,希望你看到这篇文章,可以帮助你解决你的问题。

首先先说下openpose

下载源码https://github.com/CMU-Perceptual-Computing-Lab/openpose

conda activate yourenv

cd ./openpose

mkdir build

cd build

cmake前需要配置下,这里特别注意,建议在执行前看下自己的默认的配置,代码会自动找目前默认的python,opencv,protoc等。

opencv这里如果opencv系统和conda环境都有装,代码会默认选系统的opencv(即apt-get安装的)。

python会默认选择anaconda/py36/bin下的python,而不是yourenv下的python。这里后面会修改配置来解决。

protoc会默认找yourenv下的protoc,可以which protoc 查看,如果你的conda没有办法用清华源下载的安装 protobuf的话,这里可以参照https://blog.csdn.net/u013249853/article/details/79827491(我们的局域网就用不了,如果不用清华的下载源的话,conda装的不全,编译caffe会失败,会报错),可以在自己的目录下下载安装protoc,即非root的安装protobuf。这里参考这篇博客https://blog.csdn.net/Gransand/article/details/87777597

如果你已经配好了外部的protoc,直接卸载conda的protobuf和libprotobuf,

conda remove protobuf libprotobuf

执行

which protoc

看是否是你要用的protoc。

这里因为我们服务器已经装了protoc,我的路径是/usr/local/protoc

以上三大软件安装没有问题后,可以cmake编译openpose了

接下来执行:

cmake -DBUILD_PYTHON=ON ..

这种方式是你没有caffe,会自动下载caffe并和后面一起配置安装。

如果你想用你自己配好的caffe来编译openpose的话,需要修改以下命令执行:

cmake -DBUILD_PYTHON=ON -DCaffe_INCLUDE_DIRS=/home/"${USER}"/softwares/caffe/build/install/include \
   -DCaffe_LIBS=/home/"${USER}"/softwares/caffe/build/install/lib/libcaffe.so -DBUILD_CAFFE=OFF
   ..

如果你的opencv不是apt装的,是源码包装的放在某个位置,那么就需要改以下命令执行:

cmake -DBUILD_PYTHON=ON .. -DOpenCV_INCLUDE_DIRS=/home/"${USER}"/softwares/opencv/build/install/include \
  -DOpenCV_LIBS_DIR=/home/"${USER}"/softwares/opencv/build/install/lib ..

紧接着改下CMakeCache.txt文件,这个文件下会有所有用到的依赖包的位置,建议这个文件逐条检查是否是符合你的配置需求。

这里我主要是修改了一些配置,修改后:

PYTHON_EXECUTABLE:FILEPATH=/home/tanggy/anaconda3/envs/yourenv/bin/python3.6

PYTHON_LIBRARY:FILEPATH=/home/tanggy/anaconda3/envs/yourenv/lib/libpython3.6m.so

FIND_PACKAGE_MESSAGE_DETAILS_PYTHON:INTERNAL=/home/tanggy/anaconda3/envs/yourenv/bin/python3.6

FIND_PACKAGE_MESSAGE_DETAILS_PythonInterp:INTERNAL=[/home/tanggy/anaconda3/envs/yourenv/bin/python3.6][v3.6.2()]

PYTHON_INCLUDE_DIRS:INTERNAL=/home/tanggy/anaconda3/envs/yourenv/include/python3.6m

PYTHON_LIBRARIES:INTERNAL=/home/tanggy/anaconda3/envs/yourenv/lib/libpython3.6m.so

PYTHON_MODULE_EXTENSION:INTERNAL=.cpython-36m-x86_64-linux-gnu.so

这里我只改了python的相关配置,大家也要特别注意关于protoc和opencv的配置,修改成你需要调用的软件的位置,建议逐行检查。

编译

make -j20

编译通过后测试下

cd ./examples/tutorial_api_python

python 01_body_from_image.py

看是否能运行成功。

如果出现找不到pyopenpose错误,是因为cmake时候没有输入参数-DBUILD_PYTHON=ON。如果cv2没找到,是opencv没有配置对,建议确定前面CMakeCache.txt文件关于opencv配置是否正确。

以上是openpose python API的安装配置过程。

==========================下面为anaconda的caffe 配置==============================

首先进入conda环境:

conda activate yourenv

进入caffe目录并修改Makefile.config问下如下:

ANACONDA_HOME := $(HOME)/anaconda3/envs/yourenv
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
                $(ANACONDA_HOME)/include/python3.6m \
                $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
PYTHON_LIBRARIES := boost_python3 python3.6m
PYTHON_LIB := $(ANACONDA_HOME)/lib

修改后:

make all -j20

make test -j20

make runtest -j20

make pycaffe

如果编译过程,protobuf出现问题,则参照前面的protoc的安装(可以用清华源conda安装或者是源码安装,再或者系统上有的话,可以卸载conda的protobuf和libprotobuf,会默认用系统的)。

另外如果还是报protobuf还是报错,可以尝试如下:

Makefile文件中:

protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<

protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<

修改为:

/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<

/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<

即将protoc修改成你的protoc安装路径。

 


 

 

 

你可能感兴趣的:(技术)