• 基于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)数据预处理
        可以用下载好的数据集,也可以重新下载,直接下载的具体操作如下:

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

    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,修改后结果如下所示:
    1. # solver mode: CPU or GPU  
    2. solver_mode: CPU  

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

    1. sudo vi lenet_solver.prototxt  

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

    1. $ sudo sh ./examples/mnist/train_lenet.sh  


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

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

    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的讲解
    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 ..
    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安装成功!
     
    六、题外话
    因为系统或者安装机器的不同,可能会出现一些不一样的问题,出现问题,请粘贴问题自行搜索,都是有答案的,切忌眼高手低。

  • 相关阅读:
    博客美化
    hello world
    mysql数据库索引
    Golang:线程 和 协程 的区别
    计算机网络详解
    Redis持久化机制
    nginx 详解
    多级缓存的分层架构
    svn忽略文件不提交至服务器的方法
    Mysql 事务及其原理
  • 原文地址:https://www.cnblogs.com/mrcharles/p/11879781.html
Copyright © 2020-2023  润新知