前言
其实写这些东西没有什么技术含量,只是为了以后能快速跳过这些无聊的步骤,把时间和经历更多地花在开发主要功能上。
特别是我这种手残天天把系统搞坏又不会修只会重装的!
首先
首先打开 官方教程,下载 Caffe 安装包,解压缩。
安装依赖
依赖神马的还是比较简单的。照着 官方教程 来就好了。大致如下:
sudo apt install libatlas-base-dev -y;
sudo apt install libopenblas-dev -y;
sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libboost-all-dev -y;
sudo apt install libgflags-dev libgoogle-glog-dev liblmdb-dev -y;
如果需要 Python 的支持,下面几句话就好了:
sudo dnf install -y python{2,3}-{numpy,scipy,scikit-image,matplotlib,h5py,networkx,nose,pandas,dateutil,gflags,pillow,six}
sudo pip install -U Cython numpy scipy scikit-image matplotlib ipython h5py leveldb networkx nose pandas python-dateutil protobuf python-gflags pyyaml Pillow six
sudo pip3 install -U Cython numpy scipy scikit-image matplotlib ipython h5py leveldb networkx nose pandas python-dateutil protobuf python-gflags pyyaml Pillow six
如果需要Intel MKL,可以按照这个官方懒人版教程来使用apt进行安装。
修改 Makefile.conf 文件
请回答下列问题,并按照答案修改自己的 Makefile.conf
文件。
- 你的 OpenCV 装的是 3.0 版本么?
如果是,请
OPENCV_VERSION := 3
- 你有 GPU 么?
如果没有 GPU,那么直接找到
CPU_ONLY
,启用即可。后面关于 GPU 的都不用看了。 - 你打 GPU 能正常工作么?
如果不能正常工作,那么相当于「没有 GPU」。
目前(2016 年 12 月 31 日,Caffe rc3)Caffe 不支持 Cuda7.5。这里 给有原因。如果你现在使用的是 Cuda7.5,那么请CPU_ONLY := 1
。 - 你的 CUDA 是自己安装的,还是通过
apt install nvidia-cuda-toolket
安装的?
如果是通过 apt 安装的,
CUDA_DIR
路径可能是/usr/lib/nvidia-cuda-toolkit
。
如果是从 NVIDIA 官网上下载的 Cuda8.0, 路径可能是/usr/local/cuda
。
否则你需要自己找路径。 - 你想使用 Python 写的 Layer 么?
这个其实没有太大所谓,
如果想使用,那么可以使用WITH_PYTHON_LAYER := 1
。 - 你需要在 Python 中调用 Caffe 么?
如果不需要 Python,那么关于 Python 的问题请全部忽略。
- 你的 Python 是 Python2 还是 Python3?
如果是 Python3,
PYTHON_INCLUDE
需要使用 Python3 的一套设置。直接把上面 Python2 的注释掉,启用下面 Python3 的就行。 - 你需要在 Matlab 中调用 Caffe 么?
如果需要,则将
MATLAB_DIR
改到你的 matlab 安装地址。
注意,是类似/usr/local/MATLAB/R2015b
,而不是/usr/local/MATLAB/R2015b/bin
。
编译
为了节省时间,在这里我们使用多线程进行编译。如果你知道自己的电脑的核心数,那么可以使用 “-j 核心数 * 2-1” 或者 “-j 核心数 – 1” 来进行编译。如果不知道,直接使用下面的命令也是可以的。
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest
上面的命令可以使用核心数 + 1 个线程来进行编译。线程数量不是越多越好。
如果希望使用 Python:
首先去 python
文件夹下,有一个 requirements.txt
文件,打开后使用 apt 或者 pip 安装里面提到的所有包。
之后就是一个简单的编译:
make pycaffe
最后再去 ~/.bashrc
或者 ~/.zshrc
(取决于你使用的是 bash 还是 zsh)里面加上这句话:
export PYTHONPATH=/PATH/TO/CAFFE/python:$PYTHONPATH
注意:PyCharm 是不认这个环境变量的。需要自己手动引入。
import sys
sys.path.insert(0, "PATH/TO/CAFFE/python")
import caffe
如果希望使用 Matlab:
make matlab
安装
sudo make distribute
错误解决
Fedora 25 下提示没有 cblas.h
sudo dnf install atlas-devel liblas-devel
或者使用 openblas 也是可以的。
更新:或者将-lcblas
替换成 -lsatlas
也是可以的。
Ubuntu下提示没有libcblas
的问题
sudo apt install libatlas-base-dev
解决 libhdf5 报错的问题
首先,去 /usr/lib/x86_64-linux-gnu
,做两个软链接:
sudo ln -s libhdf5_serial.so libhdf5.so
sudo ln -s libhdf5_serial_hl.so libhdf5_hl.so
然后,在 Makefile.conf 里面,找到 INCLUDE_DIRS
和 LIBRARY_DIRS
,改为
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/hdf5/serial/
找不到 lboost_python3
请去 /usr/lib/x86_64-linux-gnu/
(Ubuntu) 或 /lib64
(Fedora) 里面看一下是否有 libboost_python-py35.so
,如果没有的话,做一个软连接
Ubuntu:
sudo ln -s libboost_python-py35.so libboost_python3.so
Fedora:
sudo ln -s libboost_python3.so.1.60.0 libboost_python3.so
解决 libcblas 的问题
- 方法一: 安装
libatlas-dev
包。 -
方法二(我没有尝试):
sudo update-alternatives --config libblas.so; sudo update-alternatives --config liblapack.so
-
方法三:找到
BLAS
,按照提示进行修改。Fedora 上经常可以修改为open
。
解决 memcpy 的问题
大多数解决办法都是使用 cmake 而不是 make。这里贴出来 Github 上面的一个方法。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
遇到这个错误,说明你不是 CPU_ONLY
。个人对这个问题无解…… 上面所有东西都是 CPU_ONLY
的。
解决 numpy/arrayobject.h
的问题
这个问题是在 Ubuntu 下遇到的。解决方法是,PYTHON_INCLUDE
里面,将路径 /usr/lib/python...
改为 /usr/local/lib/python...
。
后记
这是第二版了。每次遇到的坑都不一样,慢慢地积攒了这么一大堆说明。
一般来说,新版本 OS 总是会容易一些的。
参考资料
- Caffe Installation
- Caffe Ubuntu Installation
- Ubuntu 16.04 or 15.10 OpenCV 3.1 Installation Guide
- Ubuntu 16.04 or 15.10 Installation Guide
- ImportError:caffe.so: undefined symbol: _ZN5caffe4mtx_E
- Can’t find hdf5.h when build caffe
- Gogle Groups: build error using gcc 5
- Caffe 安装笔记二:Caffe 安装过程
- cannot find -lcblas
发表回复