1. caffe 依赖环境
- 基础依赖 General dependencies
- protobuf库及其编译器
- 数据库相关库(HDF5、LMDB、LevelDB)
- 基础图像处理计算机视觉库
- 多线程相关库及python接口支持
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libhdf5-serial-dev liblmdb-dev libsnappy-dev libleveldb-dev
sudo apt-get install libopencv-dev
sudo apt-get install --no-install-recommends libboost-all-dev
安装CUDA后需要添加环境变量
sudo gedit ~/.bashrc
#在文本中添加
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
source ~/.bashrc #执行 更新环境变量
#该path配置仅对当前用户有效
安装cudnn
tar zxvf cudnn-8.0-linux-x64-v5.1.tgz #解压文件
cd /YOUR/PATH/TO/cuda/include #进入解压后的include路径
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
cd /YOUR/PATH/TO/cuda/lib64 #进入解压后的lib64路径
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* #添加读写权限
编译时需要打开CUDA和cudnn的编译开关。更改Makefile.config或者CMakeLists.txt
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1
# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1
或
caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA
caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY)
- 基础线性代数库 BLAS
atlas openblas mkl(intel cpu的线性代数计算库)
默认使用atlas
sudo apt-get install libatlas-base-dev
sudo apt-get install libopenblas-dev
- python(可选)
sudo apt-get install python-dev
- 命令行参数和日志相关库
sudo apt-get install libgflags-dev libgoogle-glog-dev
note:
- python版本默认为2.7。
- protobuf库及其编译器的版本与python中protobuf版本要一致。
Ubuntu 14.04实测通过依赖版本列表
GCC/G++ --4.8.4
protobuf --2.5.0
opencv --3.1.0
CUDA --8.0
cudnn --5.1.5
python --2.7
2. caffe安装过程中遇到的问题
- 【问题】google/protobuf/arena.h: 没有那个文件或目录
解决办法:
protoc版本错误 conda默认安装3.4版本 caffe支持2.6版本
sudo apt-get install protobuf-compiler
which protoc 找到protoc的位置 将该工具复制到conda evn的目录下即可
保持系统安装的protobuf与python中的版本一致。
- 【问题】/usr/bin/ld: cannot find -lopenblas
解决方法:
sudo apt-get install libopenblas-dev
- 【问题】编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
解决方法:
sudo apt-get install python-numpy
-
【问题】/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found
解决方法:
说明:在Ubuntu下安装了anocanda,编译时候用的gcc-4.7,后来发现程序需要用gcc-4.9于是出现 /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found
解决:在/usr/lib/x86…/中找到libstdc++.so.6.0.22,并将其拷贝到anocanda/lib中,并删除libstdc++.so.6和libstdc++.so这两个软连接,创建两个新的软连接,都连接到复制进来的libstdc++.so.6.0.22上,即可。 -
【问题】ImportError: dynamic module does not define module export function (PyInit__caffe)
解决方法:
发现是 Python 3.5 导致的,因为版本较高的 Python 和 caffe 不一定兼容; 使用python2.7 -
【问题】ImportError: /usr/lib/liblapack.so.3gf: undefined symbol: ATL_chemv
解决方法:
sudo apt-get install liblapack3
sudo apt-get remove libatlas3-base
sudo apt-get remove libopenblas-base
- 【问题】import skimage.io ImportError: No module named skimage.io
解决方法:
sudo apt-get install python-skimage #(或 pip install scikit-image)
- 【问题】编译SSD,使用cuda8编译时出错:
/usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array
解决方法:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
#如果提示未安装,还需要先安装它的包:
#sudo apt-get install software-properties-common
sudo apt-get install gcc-5 g++-5
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-5 gcc
sudo rm g++
sudo ln -s g++-5 g++