caffe [CPU ONLY] 2017-01-15

最简单的安装配置方式: 不用GPU加速,使用OPENCV2.4图像库, 这是根据官方教程(链接如下)简化而得到.

Ubuntu 16.04 or 15.10 Installation Guide

1. 软件源更新

刚刚安装好Ubuntu16.04的系统之后,第一步应该是更新软件源,有多种方式,这里使用的是直接编辑配置文件的方式. 

# 01在修改source.list前,最好先备份一份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

# 02执行命令打开sources.list文件:
# 可以用vim, gedit, kate, atom等工具打开
# sudo vim /etc/apt/sources.list

sudo gedit /etc/apt/sources.list

# 03写入新的软件源
# 这里推荐清华大学的Ubuntu镜像
# 北京交通大学的Ubuntu镜像只能给Ubuntu14.04及一下版本的使用
# 具体内容见后面

# 04开始更新
sudo apt-get update

# 05不要进行系统升级!!!
# 即,不要执行下面的命令
# sudo apt-get upgrade

清华大学Ubuntu16.04软件源

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe ultiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse 

2. 前置命令执行[安装各种包]

sudo apt-get update

sudo apt-get install -y build-essential cmake git pkg-config

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install -y libatlas-base-dev 

sudo apt-get install -y --no-install-recommends libboost-all-dev

sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev

# (Python general)
sudo apt-get install -y python-pip

# (Python 2.7 development files)
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy

# (OpenCV 2.4)
sudo apt-get install -y libopencv-dev
这些命令做了什么

安装了编译工具cmake, git客户端, hdf5/lmdb,以及boost图像库

Python部分选择2.7版本,安装对应的numpy库, 是否安装成功可以通过如下方式测试[不报错则numpy库安装ok]:

深度学习caffe:Ubuntu16.04安装指南(1)

OpenCV2.4通过上面的命令直接安装完成,省去了OPENCV3和OPENCV3.1编译和一步步配置安装的过程.

3. 下载/配置/编译 caffe

3源码下载/解压

项目地址: https://github.com/BVLC/caffe 

选择直接下载,得到 caffe-master.zip

注:虽然可以通过git命令直接clone项目(git clone https://github.com/BVLC/caffe.git ),但是速度特别慢,只有4KB左右,建议直接下载

解压到~/bin 目录下

sudo make ~/bin
cd ~/bin
cp /PATH/TO/caffe-master ~/bin
unzip caffe-master.zip
rm -rf caffe-mater.zip
3安装caffe

进入caffe-master目录

cd ~/bin/caffe-master/
cp Makefile.config.example Makefile.config

# 编辑配置文件
# 安装kate,用命令
# sudo apt-get install kate
kate ./Makefile.config &

编辑配置文件

Makefile.config

# 01 因为只使用CPU
# 不用GPU加速
# 所以 取消注释
# 默认是使用 GPU + CPU 运算
# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1
CPU_ONLY := 1

# 02 Python2.7 运行环境配置项
# 让 Makefile.config包含下面内容
# 不用修改
PYTHON_INCLUDE := /usr/include/python2.7 /usr/lib/python2.7/dist-packages/numpy/core/include
# 取消注释
WITH_PYTHON_LAYER := 1

#下面两项,包含下面的内容就好
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 /usr/lib/x86_64-linux-gnu/hdf5/serial

# OPENCV3还需要额外配置,OPENCV2.4不用

Makefile

kate Makefile.config
# 替换
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
# 如下
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

在正式编译之前,可能还需要附加hdf5的设置:

深度学习caffe:Ubuntu16.04安装指南(1)

find . -type f -exec sed -i -e \'s^"hdf5.h"^"hdf5/serial/hdf5.h"^g\' -e \'s^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g\' \'{}\' \;

cd /usr/lib/x86_64-linux-gnu

sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so

sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so 

View Code

进入caffe-master/python目录

for req in $(cat requirements.txt); do pip install $req; done

#上面代码执行如果出现什么问题,再尝试下面的的命令:
for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done

 

编译

make all
make test
make runtest
make pycaffe      -should be finished already, so you can omit this one
make distribute

上面的命令都可以替换成如下形式:

make all

# can become

make all -j $(($(nproc) + 1))

4. MNIST实验

下面的操作都是在caffe-master目录下,切换工作目录

cd ~/bin/caffe-master

 步骤一:数据预处理 [下载数据]

sh data/mnist/get_mnist.sh

步骤二:重建lmdb文件. Caffe支持多种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根据自己需要选择不同输入吧.

$ sh examples/mnist/create_mnist.sh

生成mnist-test-lmdbmnist-train-lmdb文件夹,这里包含了lmdb格式的数据集.

步骤三:训练mnist. [CPU Only需要修改配置文件]

sh examples/mnist/train_lenet.sh
# 输出 "Optimization Done."
# 成功,准确率达到99%

深度学习caffe:Ubuntu16.04安装指南(1) 

:如何修改配置文件支持CPU ONLY

# CUP Only 修改配置文件
vim examples/mnist/lenet_solver.prototxt

# 将配置文件末尾修改如下
# solver mode: CPU or GPU
# solver_mode: GPU
solver_mode: CPU

iiiiiiii