学习 Linux 下使用 caffe 进行模型训练(一)

前言

因为实习的缘故,要在 Linux 服务器上使用 caffe 进行深度学习的网络训练,所以近期开始学习 caffe 的相关内容。
作为一个菜鸟,之前好不容易完成了 Anaconda 的安装,这接下来的坎当然是配环境了嗯……经过两天的删删改改,终于算是配置完成了~第一次篇 Blog 就来记录一下这个坎坷的过程好了。

Linux 下 caffe 环境配置

因为是公司内部服务器(我没有 root 权限),所以即没有图形界面也不能方便的使用 apt-get 这种方便的命令,因此只能是通过 conda 进行安装或者下载源码自己进行编译。同时,由于 conda install 时会出现 “安装 package B 时,将之前安装的 package A 中的部分包的版本进行修改” 的问题,所以最终选择了自行下载源码并进行编译的方法。

一、依赖包源码打包下载

按照组内的文档,依次下载依赖包: ProtoBuffer、Boost、GFLAGS、GLOG、BLAS、HDF5、OpenCV、LMDB、LEVELDB、Snappy 包的源码(zip or tar.gz),然后新建一个文件夹 local_install 用于安装这些依赖包,方便后期用添加环境变量的方式直接调用它们。

二、依赖包源码编译

下面以 ProtoBuffer (protobuf-2.6.1.zip)为例,安装流程如下:

unzip protobuf-2.6.1.zip
cd protobuf-2.6.1
# 以下为 Linux 下的编译三连,这里不多做介绍了,怕理解不到位说错话……
./configure -prefix=/home/my/local_install
make
make install

这时,之间建立的空目录 local_install 下就会出现 bin、include 和 bin 三个目录,之后编译的结果也都会存入这三个目录下。同时 protoBuffer 比较特殊,后续的依赖包会需要它,因此安装后通过 export PATH=/home/my/local_install/bin/:$PATH 将其加入环境变量中。
当不同依赖包的编译有定的差别,下面将列一下(省略了解压缩步骤):

# 对于 Boost,其内部有用于编译的 shell 脚本,因此直接 gcc 编译后,运行生成
# 的 b2,之后将结果 cp 到之前的 local_install 中即可。
./bootstrap.sh --with-libraries=all --with-tooset=gcc
./b2
cp -r boost/ /home/my/local_install/include/
cp stage/lib/* /home/my/local_install/lib/
# GFLAGS 的安装用到了 cmake 来生产 Makefile
mkdir build; cd build/
cmake
ccmake 
# 在配置界面需要把 BUILD_SHARED_LIBS 设为 ON,把 CMAKE_INSTALL_PREFIX 设
# 为 /home/my/local_install/,之后保存并生成 Makefile
make
make install
# BLAS 安装的时 OpenBLAS,其内部已经有 Makefile了,因此 make 成功后将其再
# 安装到 /home/my/local_install 即可。
make
make PREFIX=/home/my/local_install install # 注意最后还有个 install 命令
# OpenCV 的安装 类似于 GFLAGS,但是需要提前查看好需要的版本,比如我所使用的服
# 务器 CUDA 版本为 9.0,只能使用 OpenCV 3。
mkdir build; cd build/
cmake
ccmake # 同理 CMAKE_INSTALL_PREFIX 设 为 /home/my/local_install/
make
make install

而 glog、HDF5 和 Snappy 都是 “./configure + make + make install ” 三连,参考 protoBuffer 的安装;LMDB、leveldb 中都以有 Makefile,make 之后执行 cp 操作即可(注意 .so 文件放入 /home/my/local_install/lib,.h 文件放入 /home/my/local_install/include)。

至此,依赖包的编译安装工作全部完成,通过 export 将其添加至环境变量,方便后续使用

三、caffe 编译安装

下载并解压 caffe 的源码后,复制 Makefile.config.exampleMakefile.config,然后对 Makefile.config 进行配置。
通过 vim Makefile.config 进入文件后,按照从上至下的顺序将修改内容列出。

USE_OPENCV := 1
USE_LMDB := 1
USE_HDF5 := 1
OPENCV_VERSION := *.*.*  # 按照自己安装的 OpencCV 版本
CUDA_DIR := /your/cuda/path
BLAS := open  # 因为使用的 OpenBLAS 的缘故,使用其他版本则进行对应修改
# 因为我之后的 python 操作全为 conda 下的虚拟环境,因此我的 Python 以来全部为 conda 下的路径
ANACONDA_HOME := /your/conda/path
PYTHON_INCLUDE := $(ANACONDA_HOME)/envs/py27/include \
				$(ANACONDA_HOME)/envs/py27/include/python2.7 \
				$(ANACONDA_HOME)/envs/py27/include/site-package/numpy/core/include
PYTHON_LIB := $(ANACONDA_HOME)/envs/py27/lib
# 下面的就是把之前 local_install 路径下的依赖包加进来就好了
INCLUDE_DIRS :=  /home/my/local_install/include /usr/local/include
LIBRARY_DIRS = /home/my/local_install/lib /usr/local/lib usr/lib

完成上述配置后,在 caffe 文件夹下执行 make,即可得到新目录 /build,如果 make 没有出错的话,则运行:

./build/tools/caffe

即可得到下图所示的 caffe 的使用说明,至此,caffe 的编译安装完成~
在这里插入图片描述

四、pycaffe 的编译安装

依然在 caffe 路径下,运行 make pycaffe 即可。
make 完成后,启动 python,输入

import caffe

如果报错 " no module named *** ",则通过 conda install 安装即可(或者 pip install),直至 import 后没有任何问题。

至此,caffe 的安装全部完成~★,°:.☆( ̄▽ ̄)/$:.°★

五、后记

整个安装过程其实是很清晰的,但是需要细心,中途出过很多次错,主要原因有以下几点:

  1. 中英文字符出错。(“-” 打为 “-”)看起来完全一样可以说很坑了……
  2. 路径设置出错。因为仅 python 就安装了 4 个(系统内置 py2、3,conda 内置 3,我的虚拟环境中有 2),因此中间安装包、路径配置等出现混乱,后来完全统一为 conda 下的 python 则再没有出现过问题,希望自己以及看到这篇 Blog 的读者以后不要犯这种初级错误……
  3. 不善于阅读信息。以 boost 的安装为例,完成第一部后,屏幕上赫然写着 "Bootstrapping is done. To build, run ./b2 ",然后我一直没有执行这步 ./b2 导致后面频频报错……

希望后续的 caffe 学习可以顺利一些~

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页