Caffe 安装手记

前言

其实写这些东西没有什么技术含量,只是为了以后能快速跳过这些无聊的步骤,把时间和经历更多地花在开发主要功能上。

特别是我这种手残天天把系统搞坏又不会修只会重装的!

首先

首先打开 官方教程,下载 Caffe 安装包,解压缩。

安装依赖

依赖神马的还是比较简单的。照着 官方教程 来就好了。大致如下:

如果需要 Python 的支持,下面几句话就好了:

如果需要 Intel MKL,可以按照这个官方懒人版教程来使用 apt 进行安装。

修改 Makefile.conf 文件

请回答下列问题,并按照答案修改自己的 Makefile.conf 文件。

  1. 你的 OpenCV 装的是 3.0 版本么?

    如果是,请 OPENCV_VERSION := 3

  2. 你有 GPU 么?

    如果没有 GPU,那么直接找到 CPU_ONLY,启用即可。后面关于 GPU 的都不用看了。

  3. 你打 GPU 能正常工作么?

    如果不能正常工作,那么相当于「没有 GPU」。
    目前(2016 年 12 月 31 日,Caffe rc3)Caffe 不支持 Cuda7.5。这里 给有原因。如果你现在使用的是 Cuda7.5,那么请 CPU_ONLY := 1

  4. 你的 CUDA 是自己安装的,还是通过 apt install nvidia-cuda-toolket 安装的?

    如果是通过 apt 安装的,CUDA_DIR 路径可能是 /usr/lib/nvidia-cuda-toolkit
    如果是从 NVIDIA 官网上下载的 Cuda8.0, 路径可能是 /usr/local/cuda
    否则你需要自己找路径。

  5. 你想使用 Python 写的 Layer 么?

    这个其实没有太大所谓,
    如果想使用,那么可以使用 WITH_PYTHON_LAYER := 1

  6. 你需要在 Python 中调用 Caffe 么?

    如果不需要 Python,那么关于 Python 的问题请全部忽略。

  7. 你的 Python 是 Python2 还是 Python3?

    如果是 Python3,PYTHON_INCLUDE 需要使用 Python3 的一套设置。直接把上面 Python2 的注释掉,启用下面 Python3 的就行。

  8. 你需要在 Matlab 中调用 Caffe 么?

    如果需要,则将 MATLAB_DIR 改到你的 matlab 安装地址。
    注意,是类似 /usr/local/MATLAB/R2015b,而不是 /usr/local/MATLAB/R2015b/bin

编译

为了节省时间,在这里我们使用多线程进行编译。如果你知道自己的电脑的核心数,那么可以使用 “-j 核心数 * 2-1” 或者 “-j 核心数 - 1” 来进行编译。如果不知道,直接使用下面的命令也是可以的。

上面的命令可以使用核心数 + 1 个线程来进行编译。线程数量不是越多越好。

如果希望使用 Python:

首先去 python 文件夹下,有一个 requirements.txt 文件,打开后使用 apt 或者 pip 安装里面提到的所有包。

之后就是一个简单的编译:

最后再去 ~/.bashrc 或者 ~/.zshrc(取决于你使用的是 bash 还是 zsh)里面加上这句话:

注意:PyCharm 是不认这个环境变量的。需要自己手动引入。

如果希望使用 Matlab:

安装

错误解决

Fedora 25 下提示没有 cblas.h

或者使用 openblas 也是可以的。

更新:或者将-lcblas 替换成 -lsatlas 也是可以的。

Ubuntu 下提示没有 libcblas 的问题

解决 libhdf5 报错的问题

首先,去 /usr/lib/x86_64-linux-gnu,做两个软链接:

然后,在 Makefile.conf 里面,找到 INCLUDE_DIRSLIBRARY_DIRS,改为

找不到 lboost_python3

请去 /usr/lib/x86_64-linux-gnu/(Ubuntu) 或 /lib64(Fedora) 里面看一下是否有 libboost_python-py35.so,如果没有的话,做一个软连接

Ubuntu:

Fedora:

解决 libcblas 的问题

  • 方法一: 安装 libatlas-dev 包。

  • 方法二(我没有尝试):sudo update-alternatives --config libblas.so; sudo update-alternatives --config liblapack.so

  • 方法三:找到 BLAS,按照提示进行修改。Fedora 上经常可以修改为 open

解决 memcpy 的问题

大多数解决办法都是使用 cmake 而不是 make。这里贴出来 Github 上面的一个方法。

遇到这个错误,说明你不是 CPU_ONLY。个人对这个问题无解…… 上面所有东西都是 CPU_ONLY 的。

解决 numpy/arrayobject.h 的问题

这个问题是在 Ubuntu 下遇到的。解决方法是,PYTHON_INCLUDE 里面,将路径 /usr/lib/python... 改为 /usr/local/lib/python...

后记

这是第二版了。每次遇到的坑都不一样,慢慢地积攒了这么一大堆说明。

一般来说,新版本 OS 总是会容易一些的。

参考资料

发表评论

电子邮件地址不会被公开。 必填项已用*标注