本人用的是python3.5,使用的pip3
1. 安装相关依赖项
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 apt-get install git cmake build-essential
2.配置caffe
git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd
sudo cp Makefile.config.example Makefile.config
#######For Gpu begin!########
#build For Gpu
sudo vim Makefile.config
USE_CUDNN := 1
USE_OPENCV := 1
OPENCV_VERSION := 3
CUDA_DIR := /usr/local/cuda
1.
修改前
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_61,code=sm_61
去掉以下这两行,否则编译有warnning:
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
修改后
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_61,code=sm_61
2.打开python3,注释掉原来的python2
# Uncomment to use Python 3 (default is Python 2)
PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3.5/dist-packages/numpy/core/include
3.
修改前
#INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
#LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改后:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
#######For Gpu End!########
######For Cpu begin!#######
#build For Cpu 和cuda相关的都要注释掉
sudo vim Makefile.config
#build For Cpu
sudo vim Makefile.config
#USE_CUDNN := 1
USE_OPENCV := 1
OPENCV_VERSION := 3
#CUDA_DIR := /usr/local/cuda
1.打开python3,注释掉原来的python2
# Uncomment to use Python 3 (default is Python 2)
PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3.5/dist-packages/numpy/core/include
3.
修改前
#INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
#LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改后:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
#######For Cpu End!########
文件夹中已经配置好两个版本的Makefile.config了,可以直接复制使用.
cp Makefile.config_for_gpu Makefile.config
cp Makefile.config_for_cpu Makefile.config
sudo vim Makefile
1.
修改前
LIBRARIES += boost_thread stdc++
修改后:
LIBRARIES += boost_thread stdc++ boost_regex
3.编译caffe
cd caffe
make clean
make -j8
cd ~/caffe/python
for req in $(cat requirements.txt); do pip3 install $req; done
或者
cd ~/caffepy3_ssd/python
sudo apt-get install python3-numpy python3-scipy python3-skimage python3-h5py python3-leveldb python3-networkx python3-pandas python3-gflags python3-pillow
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j8
配置环境变量,以便python调用:
sudo gedit ~/.bashrc
将export PYTHONPATH=/home/caffe/python:$PYTHONPATH添加到文件中
source ~/.bashrc
python3
import caffe
如果没有报错,大功告成!
#####问题##############
1.CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp
/usr/bin/ld: cannot find -lboost_python3
collect2: error: ld returned 1 exit status
Makefile:501: recipe for target 'python/caffe/_caffe.so' failed
make: *** [python/caffe/_caffe.so] Error 1
解决方法:
cd /usr/lib/x86_64-linux-gnu
sudo ln -sf libboost_python-py35.so libboost_python3.so