基于VGGnet的人脸识别系统-ubuntu 系统下的Caffe环境搭建(CPU)

对于caffe的系统一般使用linux系统,当然也有windows版本的caffe,不过如果你一开始使用了windows下面的caffe,后面学习的过程中,会经常遇到各种错误,网上下载的一些源码、模型也往往不能快速的跑起来,因为貌似caffe的官方只提供了linux版本,而且caffe在不断的快速迭代更新中,如果不使用原版的话,后面编译出现什么问题,自己怎么错的,自己都不知道。本篇博文主要讲解快速搭建caffe环境:

电脑系统:ubuntu 14.04

显卡:GTX 850

在ubuntu下要完整的搭建caffe,个人感觉最难的一步就是cuda的安装了,特别是对于双显卡的电脑来说,很容易黑屏、无法登陆图形界面,这个我安装了n久,都没装成功,因为我的电脑笔记本双显卡,每次装完cuda就黑屏,网上的教程一大堆,但都中看不中用,导致我重装了二三十次的系统,最后才成功。这里为了讲caffe的安装,我们先不使用GPU,进行安装测试,因为没有GPU我们依旧可以跑caffe,只是速度比较慢而已。

1、安装caffe所需要的依赖库

命令:

[python] view plain copy
  1. sudo apt-get install libatlas-base-dev  
  2. sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev  
  3. sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler  
这些库要安装挺久的,请耐心等待。

2、下载caffe。

到github上下载caffe:https://github.com/BVLC/caffe。下载完成后,解压caffe源码包。解压后,我们打开文件,可以看到caffe的源码包如下:


3、配置Make.config 文件。caffe文件解压后,文件夹下面有一个Makefile.config.example文件,我们需要对这个文件进行重命名为:Make.config  。也就是去掉后缀example。然后我们打开这个文件,可以看到如下内容:


然后我们把:#CPU_ONLY:=1,那一行的注释符号去掉:CPU_ONLY:=1。这是因为我们没有安装CUDA,还不能使用gpu,所以我们把配置改为只使用cpu。

4、编译caffe。

方案一:

(1)在完成Make.config配置后,我们输入命令:

[python] view plain copy
  1. make all  

进行caffe源码编译.这一步有可能遇到如下错误:

  1. caffe/proto/caffe.pb.h: No such file or directory  
如果出现这个错误,那么输入命令:

  1. protoc src/caffe/proto/caffe.proto --cpp_out=.  
  2. mkdir include/caffe/proto  
  3. mv src/caffe/proto/caffe.pb.h include/caffe/proto  

然后在进行make all 就可以了

(2)编译完成后,在安装python接口,输入命令:

[python] view plain copy
  1. make pycaffe  
这个如果不使用python接口,调用caffe模型的话也可以不用安装,不过建议还是搞一下,就一句话的事。完事后,我们会发现caffe源码目录下,多了一个build文件,这个文件下面有个tools,打开这个文件夹:


这个文件夹下面的工具可是个好东西啊,以后我们会经常用到这些可执行文件,最常用的就是可执行文件:caffe,我们只要调用这个工具,就可以进行训练。

(3)接着编译test文件夹下面的源码。命令如下:

[python] view plain copy
  1. make test  
  2. make runtest  

采用这种方案一般没问题,不过我在使用c++调用的时候,会使用到链接库:libcaffe.so.1.0.0-rc3,这种方法编译后没有生成这个文件;经过google查找,发现采用cmake编译,才会生成libcaffe.so文件

方案二:直接采用cmake:

  1. mkdir build  
  2. cd build  
  3. cmake ..  
  4. make all -j8  

5、测试阶段

安装完了,自然要测试一下能不能用咯。首先cd到caffe目录,然后输入命令:

[python] view plain copy
  1. sh data/mnist/get_mnist.sh  
  2. sh examples/mnist/create_mnist.sh  
  3. vim examples/mnist/lenet_solver.prototxt  

把lenet_solver.prototxt里面的solver_mode 改为 CPU。因为我们还没装GPU,暂时只使用CPU就好了。

然后我们运行脚本:

[python] view plain copy
  1. ./examples/mnist/train_lenet.sh  
这个时候,如果成功的话,就会开始跑起来:


说明:如果在使用caffe、或者编译安装caffe过程中,出现如下错误:

[python] view plain copy
  1. CXX/LD -o .build_release/tools/convert_imageset.bin  
  2. .build_release/lib/libcaffe.so: undefined reference tocv::imread(cv::String const&, int)'.build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector >&, std::vector > const&)'  
那么请修改上面的Makefile文件(不是Makefile.config):

[python] view plain copy
  1. LIBRARIES += glog gflags protobuf leveldb snappy \  
  2. lmdb boost_system hdf5_hl hdf5 m \  
  3. opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs  
也就是在libraries后面,加上opencv的相关库文件。

接着就开始caffe搞起吧,推荐个caffe模型网站:https://github.com/BVLC/caffe/wiki/Model-Zoo。本来个人不是很喜欢caffe的,就是因为这个网站吸引了我,这个网站可以搞到好多caffe模型、源码,非常适合于我们学习。

/***************************************************************************************************************************




http://blog.csdn.net/autocyz/article/details/51783857  (2016.6月份的博文,本文没有参考这篇博客,不过感觉写的挺好 贴上连接)

http://www.ithao123.cn/content-1759601.html

caffe是一个简洁高效的深度学习框架,具体介绍可以看这里http://caffe.berkeleyvision.org/,caffe环境配置过程可以参考这里:http://caffe.berkeleyvision.org/installation.html,我在搭建环境时搜集了许多资料,这里整理了一下,介绍一下caffe在无CUDA的环境下如何配置。

1. 安装build-essentials

安装开发所需要的一些基本包

[html]  view plain  copy
  1. sudo apt-get install build-essential  
如果出现essential包不可用的情况,可以执行下列命令解决:
[html]  view plain  copy
  1. sudo apt-get update  

2. 安装ATLAS for Ubuntu

执行命令:

[html]  view plain  copy
  1. sudo apt-get install libatlas-base-dev  
注:ATLAS, MKL,或OpenBLAS都可以,我这里选择安装ATLAS

3. 安装OpenCV

这个尽量不要手动安装, Github上有人已经写好了完整的安装脚本:https://github.com/jayrambhia/Install-OpenCV
下载该脚本,解压".zip"文件,解压命令:

安装2.4.10 (推荐)

https://gist.github.com/bearpaw/c38ef18ec45ba6548ec0
  1. 下载安装脚本 https://github.com/bearpaw/Install-OpenCV
  2. 进入目录 Install-OpenCV/Ubuntu/2.4
  3. 执行脚本 sh sudo ./opencv2_4_10.sh 
安装2.4.9(不推荐)

[html]  view plain  copy
  1. unzip /home/liuxiabing/下载/Install-OpenCV-master.zip  

    进入Ubuntu/2.4 目录, 给所有shell脚本加上可执行权限:

[html]  view plain  copy
  1. chmod +x *.sh  
      然后安装最新版本 (当前为2.4.9):
[html]  view plain  copy
  1. sudo ./opencv2_4_9.sh  

4. 安装其他依赖项

       Ubuntu14.04用户执行
[html]  view plain  copy
  1. sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler  

  使用其它系统的可以参考官网介绍。

5. 编译Caffe

    完成了上述环境的配置,就可以编译Caffe了! 
    下载caffe安装包,下载地址:https://github.com/BVLC/caffe
    解压该压缩包,解压缩命令:

[html]  view plain  copy
  1. sudo unzip /home/liuxiabing/下载/caffe-master.zip  

    注:如果解压位置出错了,可以使用以下命令删除该目录及所有的子目录:

[html]  view plain  copy
  1. sudo rm -rf caffe-master  

    进入caffe根目录, 首先复制一份Makefile.config,命令:

[html]  view plain  copy
  1. cp Makefile.config.example Makefile.config  

   然后修改里面的内容,主要需要修改的参数包括:

   1.修改文件权限 规则:chmod [who] [+ | - | =] [mode] 文件名¼

   使用 chmod g+w Makefile.config

    2.打开文件进行修改

   使用 sudo vim Makefile.config

   按“i”键开始修改,修改结束后按esc键,键入“:wq”保存并退出

   修改 将# CPU_ONLY = 1前面的#去掉 并按“tab”键,(默认从tab处执行)

    CPU_ONLY 是否只使用CPU模式,由于我没有NVIDIA的显卡,就没有安装CUDA,因此需要打开这个选项。
    其余的一些配置可以根据需要修改:
    BLAS (使用intel mkl还是OpenBLAS)
    MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径, 如我的路径为 /usr/local/MATLAB/R2013b (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)

    DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序

    完成上述设置后,开始编译:  

[html]  view plain  copy
  1. sudo make all -j4   
[html]  view plain  copy
  1. sudo make test    
[html]  view plain  copy
  1. sudo make runtest  
   注意:-j4 是指使用几个线程来同时编译,可以加快速度,j后面的数字可以根据CPU core的个数来决定,如果CPU是4核的,则参数为-j4,也可以不添加这个参数,直接使用“make all”,这样速度可能会慢一点儿。

6.使用MNIST数据集进行测试

 Caffe默认情况会安装在$CAFFE_ROOT,就是解压到的那个目录,例如:$ home/username/caffe-master,所以下面的工作,
默认已经切换到了该工作目录。下面的工作主要是测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:
http://caffe.berkeleyvision.org/gathered/examples/mnist.html
    (1)数据预处理
    可以用下载好的数据集,也可以重新下载,直接下载的具体操作如下:

[html]  view plain copy
  1. $ cd data/mnist  
  2. $ sudo sh ./get_mnist.sh  
       (2)重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式,执行命令如下:  
[html]  view plain copy
  1. $ sudo sh ./examples/mnist/create_mnist.sh  
        生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集
       注:新版caffe都需要从根目录上执行,如果使用下列命令执行:

[html]  view plain copy
  1. # cd examples/mnist  
  2. # sudo sh ./create_mnist.sh  
     可能会遇到这个错误:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found
       (3)训练mnist
      如果没有GPU,只有CPU的话,需要先修改examples/mnist目录下lenet_solver.prototxt文件,将solver_mode:GPU改为      solver_mode:CPU,修改后结果如下所示:
[html]  view plain copy
  1. # solver mode: CPU or GPU  
  2. solver_mode: CPU  

    修改时可以使用vi编辑命令(ubuntu14.0.4下也可以直接双击打开,修改后保存即可),如果是只读文件,不能编辑,可以用sudo命令,比如:

[html]  view plain copy
  1. sudo vi lenet_solver.prototxt  

     先进入命令模式,使用a进入编辑模式,修改完之后,使用esc退出编辑模式,进入末行模式,再使用“:wq”保存修改并退出(“:q!”为退出但不保存修改)
   修改完成后,再在根目录下(即/caffe-master目录)执行下面的命令进行训练:

[html]  view plain copy
  1. $ sudo sh ./examples/mnist/train_lenet.sh  


   最终训练完的模型存储为一个二进制的protobuf文件: lenet_iter_10000
  至此,Caffe安装的所有步骤完结。

注:如果进入到mnist目录下执行这个sh命令,会出现错误。即这样操作

[html]  view plain copy
  1. cd ./examples/mnist  
  2. sudo sh ./train_lenet.sh  
会有一个caffe-master/.build_release/tool/caffe找不到或不存在的错误。

7.使用MNIST数据集进行测试

得到训练模型 lenet_iter_10000,利用命令行的方法对模型进行测试。
在caffe官网给出来了三种编译方式 命令行、python、matlab.这里使用的是命令行的方法

1.bash下建立.sh执行文件(脚本)  先cd到 ./caffe-master/examples/mnist文件夹下,命令行输入

 备注:脚本的书写可参考Caffe官网tutorial/interfaces中TEST的讲解
[html]  view plain copy
  1. touch test_lenet.sh #生成.sh文件
  2. sudo vim test_lenet.sh #进入.sh文件键入内容
  3. #键入的内容为
  4. #!/usr/bin/env sh
  5. "空行"
  6. ./build/tools/caffe test --model=examples/mnist/lenet_train_test.prototxt --weights=examples/mnist/lenet_iter_10000.caffemodel -iterations 100
    备注:因为没有用GPU所以官网指导文档中的"gpu 0"这部分参数就没有添加进去
  7. 保存.sh文件  按ESC键 然后键入:wq 
因为编辑器的问题,自动换行了,所以这里插入了图片
2.将目录返回到caffe-master目录下 一路 cd ..
[html]  view plain copy

  1. sudo sh ./examples/mnist/test_lenet.sh   

最后放两张测试成功的图片
训练过程


测试过程



8.编译python wrapper
安装python
编译
(1)安装   Anaconda,到caffe官网指导文档中安装指导页面,进入Anaconda官网,下载相应版本

(2)到下载目录,执行
bash Anaconda2-2.4.1-Linux-x86_64.sh   (自己下载的是什么版本就用什么版本)
(3)cd到根目录下,执行
sudo vim ~/.bashrc
对文件进行如下修改(文件最后添加就可以)
[plain]  view plain  copy
  1. # add library path  
  2. LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH  
  3. export LD_LIBRARY_PATH  
(4) 安装pip和python-dev ,执行
[plain]  view plain  copy
  1. sudo apt-get install python-dev python-pip  

(5)cd到caffe-master/python目录下,执行
[plain]  view plain  copy
  1. for req in $(cat requirements.txt); do sudo pip install $req; done  

(6)cd到caffe-master目录下,编译执行
[plain]  view plain  copy
  1. sudo make pycaffe  



9.编译matlab wrapper
安装matlab(参考之前的博文)
编译
(1)安装matlab
(2)修改Makefile.config 在caffe-master目录下

(3)cd到caffe-maste目录下,编译执行
[plain]  view plain  copy
  1. sudo make matcaffe  

一、检查自己电脑是否具有GPU
通常Caffe在计算时有两种模式可以选择,CPU或GPU,使用GPU处理图像速度会更快,但往往有的计算机没有GPU,配置太低,所以只能选择CPU,作者的电脑不支持GPU,因此选择CPU安装的版本。
输入:
lspci | grep -i nvidia
结果1
如果未显示任何内容,则证明你的电脑不支持GPU。
结果2
如果显示如下图内容:
Caffe安装教程:Ubuntu16.04(CPU)
则表明版本是GTX 650,支持GPU,可以去http://developer.nvidia.com/cuda-gpus去验证,支持CUDA,本文只描述CPU模式的caffe安装,如果要安装GPU模式的caffe,请自行搜索。
 
二、依次安装依赖包
依次执行以下语句,安装依赖包:
sudo apt-get install libprotobuf-dev 
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev 
sudo apt-get install libopencv-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
sudo apt-get install libatlas-base-dev
 
三、下载caffe
可直接使用Git下载caffe,如果没有Git,请先安装Git,作者新装的Ubuntu16.04没有Git,所以先安装Git,执行如下语句:
sudo apt-get install git
安装结束后下载caffe,执行以下命令:
git clone git://github.com/BVLC/caffe.git
这样你就可以在根目录下看到有个caffe目录了
Caffe安装教程:Ubuntu16.04(CPU)
 
四、编译caffe
1.进入caffe目录
cd caffe/
2.生成Makefile.config文件,这里是将caffe目录下自带的Makefile.config.example文件复制一份并更名为Makefile.config,命令如下:
cp Makefile.config.example Makefile.config
此时目录下就会有Makefile.config文件,如下图:
Caffe安装教程:Ubuntu16.04(CPU)
3.修改Makefile.config文件中的配置
1)编辑Makefile.config文件
sudo gedit Makefile.config
2)去掉CPU_ONLY前面的#号
Caffe安装教程:Ubuntu16.04(CPU)
使得CPU_ONLY := 1
3)配置引用文件路径(主要是HDF5的路径问题)
原来的路径配置如下图:
Caffe安装教程:Ubuntu16.04(CPU)
修改为如下图:
Caffe安装教程:Ubuntu16.04(CPU)
新增的内容为:
/usr/include/hdf5/serial
/usr/lib/x86_64-linux-gnu/hdf5/serial
4)执行编译
sudo make all
sudo make test
sudo make runtest
执行玩runtest后,会有结果显示:
Caffe安装教程:Ubuntu16.04(CPU)
显示1098个用例执行成功,结果PASSED!
注意:如果执行结果失败,则需要执行语句sudo make clean,然后解决掉问题重新编译
 
五、编译python接口
通常为了更好的调用caffe,我们往往需要写代码,caffe具有Python和C++接口,我们较为常用Python接口,这里我将展示如何编译Python接口。
1)安装pip
因为Ubuntu16.04默认安装的是python2.7,没有pip,所以需要先安装pip,命令如下:
sudo apt-get install python-pip
2)安装Python接口依赖库
在caffe根目录下,有个python文件夹,文件夹里面有个requirements.txt,里面有需要的依赖库和版本信息,按照其安装即可,在安装前,需要先安装fortran编辑器(gfrotran),因为安装scipy库时需要它,命令如下:
sudo apt-get install gfortran
cd ~/caffe/python
for req in $(cat requirements.txt); do pip install $req; done
安装结束后,可以执行如下语句验证:
sudo pip install -r requirements.txt
可以看到,安装成功的,都会显示Requirement already satisfied,没安装成功的,会继续进行安装。
3)将caffe根目录下的python文件夹加入到环境变量
先打开配置文件bashrc
sudo gedit ~/.bashrc
在文件的最后面添加
export PYTHONPATH=/home/moqi/caffe/python:$PYTHONPATH
如下图:
Caffe安装教程:Ubuntu16.04(CPU)
注意,这里路径根据每个人电脑则不一样,例如,我的下载的caffe在/home/moqi/下面,所以路径为/home/moqi/caffe/python,你可以自行进入自己的caffe文件夹里的python目录下,输入pwd查看路径。
然后执行更新配置(有时更新不起作用时,可以重启电脑就会有效):
sudo ldconfig
4)编译python接口
cd ~/caffe/
make pycaffe
5)验证python接口
进行python环境,引入caffe包,如果没有报错则安装成功!
如下图:
Caffe安装教程:Ubuntu16.04(CPU)
至此,caffe安装成功!
 
六、题外话
因为系统或者安装机器的不同,可能会出现一些不一样的问题,出现问题,请粘贴问题自行搜索,都是有答案的,切忌眼高手低。

猜你喜欢

转载自blog.csdn.net/MrCharles/article/details/80245668