有好多朋友在安装 caffe 时遇到很多问题。(看文章的朋友但愿关心一下个人创业项目趣智思成) 今天测试并整理一下安装过程。我是在阿里云上测试,选择centos 7.3 镜像。php
先安装 epel 源html
1
|
yum
install
epel-release
|
安装基本编译环境python
1
2
|
yum
install
protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
yum
install
gflags-devel glog-devel lmdb-devel<br>yum
install
atlas-devel<br>
#用默认的 atlas 有点问题,须要改成 openblas
|
1
2
3
4
|
yum
install
openblas-devel<br>
yum
install
python34-devel
yum
install
git
yum groupinstall
"Development Tools"
"Development Libraries"
|
下载源代码linux
1
|
git clone https:
//github
.com
/BVLC/caffe
|
到源代码目录下执行git
1
|
mv
Makefile.config.example Makefile.config
|
修改配置文件 Makefile.config
全部不是#开头的都须要修改github
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS :=
open
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
#BLAS_LIB := /path/to/your/blas
BLAS_INCLUDE :=
/usr/include/openblas
BLAS_LIB :=
/usr/lib64
|
最后在 caffe 目录下运行:build。就完成了。有任何问题欢迎发在评论区。web
提到deep learning, caffe的大名天然是如雷贯耳,固然,除了caffe以外,还有不少其余的框架,如torch,mxnet...可是,就我本身这一个月的实验以及师兄的结论都是,caffe得出的实验performance要高于别的框架,多是C++的威力吧~笑算法
OK,接下来准备在这个系列分享我使用和学习caffe的一些经验,首先天然是框架的配置了。这里咱们分享一下在windows10和ubuntu14.04虚拟机下的Caffe配置(:编程
1.软件准备ubuntu
1.我使用的是系统是win10,首先要确保下载安装好visual stdio 2013,community版本下载连接在这,2014-Nov 12 Release Notes,这里建议你们最好将VS安装在默认C盘位置,否则以后编译可能会出现各类莫名其妙的问题
2.GitHub - BVLC/caffe at windows 这是微软修改的caffe windows版本,集成了caffe编译须要的第三方库,使用起来很是方便!下载好以后解压到任意位置,我这里是放在D盘下,接下来,到windows目录下,copy一份CommonSettings.props.example到CommonSettings.props
而后用vs打开CommonSettings.props,
我这里是默认使用GPU,CUDA版本为7.5,支持python的配置,你们能够根据本身须要进行调整,GPU对应CUDA版本和CudaArchitecture大体以下图
注意若是须要使用python接口的话,推荐安装Miniconda 2.7 64-bit Windows installer(from Miniconda website)或者是Anaconda 2.7 64-bit Windows installer(Download Anaconda Now!)
而后对应修改CommonSettings.props,我这里安装的是Anaconda2
3.接下来就是一些软件的安装了,首先下载CUDA,能够根据本身的GPU版本下载对应版本的CUDA,我这里下载的是CUDA7.5:https://developer.nvidia.com/cuda-downloads
下载完成以后就能够安装了,这里也是建议安装在默认位置,等待解压完成选择默认设置,等待安装完成便可.而后是CUDNN,https://developer.nvidia.com/cudnn ,貌似须要注册以后才能下载,应该不是很费事,下载cudnn v4下载完成后,把解压后的文件夹中的bin,lib/x64,include中的内容分别放至 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5中的bin,lib/x64,include三个子目录下,这是%CUDA_PATH%路径,若是不太肯定能够去系统环境变量下查看,最后就是Anaconda2了,下载完成以后打开cmd,输入如下命令安装一些python库
conda install --yes numpy scipy matplotlib scikit-image pip
pip install protobuf
至此,全部准备工做都已经完成了!
2.Caffe编译
打开D:\caffe-windows下的caffe.sln,将编译选项切换成Release
我这里删除了一些之后通常不会用到的工程,其实最主要的是caffe,libcaffe,pycaffe这三个,加快编译速度.而后咱们先编译libcaffe,通常这个不出问题整个安装就没什么问题了。
最开始VS可能会比较卡,这是在安装一些第三方库(opencv,boost之类的,microsoft用Nuget集成在了这一步),安装完成以后在D:\NugetPackages下的这些都是caffe编译所需的第三方库
而后默默等待编译完成便可,大约须要十分钟
看到这里以后,此次安装基本上已经成功了.接下来编译剩下的便可
大功告成!
3.配置和使用
编译完成后,接下来作一些简单的配置:
1.首先,编译完成后的全部文件都在D:\caffe-windows\Build\x64\Release目录下,
里面包含最重要的就是caffe.exe以及pycaffe,若是须要在别的机器上使用的话,只须要将Release文件夹拷贝过去便可,不须要再从新编译一遍
2.接下来咱们作一些简单设置,首先打开环境变量设置,
在user variables下新建PATH和PYTHONPATH,填写对应的文件路径,这样就能够便捷使用caffe和caffe python接口了,配置好以后咱们打开cmd,先输入caffe,在python中import caffe,若是都不报错——证实你能够愉快的进入deep learning的殿堂了^_^
3.安装git for windows,对于习惯Linux系统的人使用这个会更加方便,固然你只用命令行也能够,这个是可选项
4.测试
下面咱们在mnist数据集上作测试,MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burge在这里下载这四个文件,解压到D:\caffe-windows\data\mnist中右键打开git bash here,输入:
../../Build/x64/Release/convert_mnist_data train-images.idx3-ubyte train-labels.idx1-ubyte mnist_train_lmdb
../../Build/x64/Release/convert_mnist_data t10k-images.idx3-ubyte t10k-labels.idx1-ubyte mnist_test_lmdb
这样,训练集和测试集就建立好了,将其拷贝至D:\caffe-windows\examples\mnist目录下
进入该目录,打开lenet_train_test.prototxt,修改以下
而后打开lenet_solver.prototxt,修改第二行便可,
这里暂时不对这些配置文件作解释,只是安装完以后进行的测试,ok下面打开bash:
caffe train -solver=lenet_solver.prototxt -gpu 0
接着就能够看到一大串log出现,好像很厉害的样子!
最后在测试集上的结果是99.13%!深度学习,很强势!
好了,windows下的安装配置就到这里告一段落了,训练大多数模型都已经没问题了
大多数状况下,windows环境下的caffe可以完美完成Linux下caffe的功能了,但毕竟Linux是标准平台,网上的不少开源代码都是基于Linux下的caffe的,好比神经网络可视化工具deepvis,以及RGB大神的RCNN系列,并且大部分状况下只须要应用到Caffe在CPU下的版本,因此这里给出虚拟机下ubuntu14.04下安装caffe的过程
1.建立虚拟机
这里我使用虚拟机软件是VirtualBox.首先建立一个linux/ubuntu14.04/64位/4GB内存的名为caffe的虚拟机,这里内存官网建议是8GB,可是笔记本总内存才8GB,你们有条件的建议分8GB
接下来一路下一步,
建立后点击启动,选择镜像,点击启动,
下面就是建立虚拟机的一些常见操做了,贴几张关键的图吧
点击continue后,漫长的等待。。。
重启以后,咱们先安装一下VBox Additions:
选择设备下的安装加强功能,在终端中输入
cd /media/<USER>/VBOXADDITIONS_4.3.16_95972 (where <USER> is your user name) sudo ./VBoxLinuxAdditions.run
在Virtual Box Manager, 点击Settings, 而后选择常规 | 高级 | 共享剪切板 | 双向,而后选择重启,这样虚拟机就能够充满全屏了,再也不是一小块
2.准备工做
首先安装必要的环境:
sudo apt-get update #更新软件列表 sudo apt-get upgrade #更新软件 sudo apt-get install build-essential #安装build essentials sudo apt-get install linux-headers-`uname -r` #安装最新版本的kernel headers
注意:官网缺乏前两步,会致使CUDA安装失败
这也是个漫长的步骤,默默等待。。。
而后下载cuda7.5:
sudo apt-get install curl
cd Downloads/ curl -O "http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_linux.run"
这又是个漫长的过程。。。若是嫌这种方式太慢,能够去官网直接下载,而后复制进虚拟机,不过这种方式有时会出现一点问题
chmod +x cuda_7.5.18_linux.run #使其可运行
sudo ./cuda_7.5.18_linux.run #运行
说明:安装的过程当中会显示最终用户许可协议(EULA),很长,能够按‘q’退出阅读,而后安装的时候不要安装显卡驱动,由于虚拟机是无法使用GPU的,具体以下:
而后更新相应的库路径:
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/lib' >> ~/.bashrc source ~/.bashrc
安装必要的依赖库:
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml
sudo easy_install pillow
下载Caffe并安装Python依赖库
cd ~ git clone https://github.com/BVLC/caffe.git cd caffe cat python/requirements.txt | xargs -L 1 sudo pip install
漫长的等待。。。
增长符号连接
sudo ln -s /usr/include/python2.7/ /usr/local/include/python2.7
sudo ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ /usr/local/include/python2.7/numpy
而后修改Makefile.config
cp Makefile.config.example Makefile.config
用gedit打开Makefile.config(或者直接用vim在终端中打开修改也能够)
1)去掉 # CPU_ONLY: = 1 的注释
2)在PYTHON_INCLUDE下, 把/usr/lib/python2.7/dist-packages/numpy/core/include替换成/usr/local/lib/python2.7/dist-packages/numpy/core/include
3.编译Caffe
终于能够编译caffe了,这三句便可,若是前面配置一切正常,这里应该不会出错
make pycaffe
make all
make test
依然是等待。。。
4.测试
这里咱们测试一下CPU下的caffe可否正常运行便可:
首先为方便使用,咱们将PYTHONPATH写入.bashrc中:
echo 'export PYTHONPATH=/home/<USER>/caffe/python' >> ~/.bashrc source ~/.bashrc
而后在终端中输入:python和import caffe
一切正常
下面测试一下mnist数据集:
cd ~/caffe ./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh
而后编辑examples/mnist文件夹下的lenet_solver.prototxt文件,将solver_mode模式从GPU改成CPU
./examples/mnist/train_lenet.sh
因为是使用CPU进行训练,因此速度会比较慢,大概三十分钟才能整个训练完
配置过程主要参考官方文档:Ubuntu 14.04 VirtualBox VM · BVLC/caffe Wiki · GitHub
后面若是须要的话,还会继续添加在Ubuntu14.04中的caffe配置,但目前这两种已经够用了
vector<shared_ptr<Blob<Dtype> > > blobs_;
vector<Blob<Dtype>*> ⊥
vector<Blob<Dtype>*> *top
virtual void Forward(const vector<Blob<Dtype>*> &bottom, vector<Blob<Dtype>*> *top) = 0; virtual void Backward(const vector<Blob<Dtype>*> &top, const vector<bool> &propagate_down, vector<Blob<Dtype>*> *bottom) = 0;
layers { bottom: "decode1neuron" // 该层底下链接的第一个Layer bottom: "flatdata" // 该层底下链接的第二个Layer top: "l2_error" // 该层顶上链接的一个Layer name: "loss" // 该层的名字 type: EUCLIDEAN_LOSS // 该层的类型 loss_weight: 0 }
vector<Dtype> loss_;
vector<shared_ptr<Blob<Dtype> > > blobs_;
vector<shared_ptr<Layer<Dtype> > > layers_;
vector<Blob<Dtype>*>& Forward(const vector<Blob<Dtype>* > & bottom, Dtype* loss = NULL); void Net<Dtype>::Backward();
shared_ptr<Net<Dtype> > net_;
virtual void ComputeUpdateValue() = 0;
ComputeUpdateValue(); net_->Update();