Compile from source
安装过程
有root权限,参考博客:http://www.cnblogs.com/yaoyaoliu/p/5850993.html
无root权限,参考博客:https://autchen.github.io/guides/2015/04/03/caffe-install.html
我的config文件设置:
USE_CUDNN := 1
USE_OPENCV := 1
USE_LEVELDB := 1
USE_LMDB := 1
OPENCV_VERSION := 3
CUDA_DIR := /usr/local/cuda
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 \
BLAS := atlas
ANACONDA_HOME := \$(HOME)/miniconda2
PYTHON_INCLUDE := \$(ANACONDA_HOME)/envs/python36/include/
PYTHON_LIB := $(ANACONDA_HOME)/envs/python36/lib/
CUSTOM_CXX := g++ -std=c++11
PYTHON_LIBRARIES := boost_python3 python3.6m
INCLUDE_DIRS := \$(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
BUILD_DIR := build
DISTRIBUTE_DIR := distribute
TEST_GPUID := 0
Q ?= @
遇到的问题
1. undefined reference to `google::protobuf:
这里我指定的是conda环境下的python,需要特别注意的是如果conda下也存在protobuf的话,很可能会和系统默认
export PATH="/home/wjt/miniconda2/bin:$PATH" 这句话,详见博客:
https://blog.csdn.net/jiachen0212/article/details/79578458.
查看protobuf版本: protoc --version
查看当前默认的库:which protoc
2. error This file requires compiler and library support for the ISO C++ 2011 standard.
解决办法:CUSTOM_CXX := g++ -std=c++11
3. libopencv_imgcodecs.so: undefined reference to `png_read_image@PNG16_0':可能是gcc编译器找到了默认的
libpng,这是由于libpng的版本和lib_opencv的版本不一致,解决方法:
cd /usr/lib/x86_64-linux-gnu
sudo ln -s ~/anaconda/lib/libpng16.so.16 libpng16.so.16
sudo ldconfig
或者:export LD_LIBRARY_PATH=/home/wjt/miniconda2/envs/python36/lib/:$LD_LIBRARY_PATH
4. make pycaffe:python/caffe/_caffe.cpp:1:52: fatal error: Python.h: No such file or directory
一般是anaconda的include没配置好,记得把/home/wjt/miniconda2/envs/python36/include/python3.6m/路径加进来
编译好之后,记得 export PYTHONPATH=/home/wjt/caffe-master/python/:$PYTHONPATH
5. undefined symbol:_ZN5caffe9SGDSolverIfE19SnapshotSolverStateERKNSt7__cxx1112basic_stringIc:
重新编译pycaffe,WITH_PYTHON_LAYER := 1打开就好了
6. caffe.so: undefined symbol :_ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE: 在config里面
解开注释 PYTHON_LIBRARIES := boost_python3 python3.5m,/usr/lib/x86_64-linux-gnu下面有libboost_py34,
改成这个
7. Import caffe时候出错:ModuleNotFoundError: No module named 'google',在conda中安装对应版本的protobuf
Install with conda
安装官方版本
conda install -c anaconda caffe-gpu
安装Intel的CPU版本
conda install -c intel caffe
还有很多版本的caffe,详见 https://anaconda.org/intel/caffe