Ubuntu caffe环境配置及安装过程中的问题

目录

  • 1. caffe 依赖环境
  • 2. caffe安装过程中遇到的问题

1. caffe 依赖环境

官方依赖配置说明

  • 基础依赖 General dependencies
  1. protobuf库及其编译器
  2. 数据库相关库(HDF5、LMDB、LevelDB)
  3. 基础图像处理计算机视觉库
  4. 多线程相关库及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
  • GPU加速计算 CUDA
    下载对应系统版本的CUDA安装包安装,cudnn为可选项,可以优化GPU计算。

安装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:

  1. python版本默认为2.7。
  2. 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++  

你可能感兴趣的:(caffe,caffe)