zoukankan      html  css  js  c++  java
  • Caffe学习系列(一)Ubuntu16.04下搭建编译Caffe环境,并运行MNIST示例(仅CPU)

    前言:学习深度学习是从本科毕业设计开始,如今学习了不少理论知识,利用Caffe框架要付诸实践了,记录下来学习过程,也算是心路历程。

    刚开始搭建Caffe环境遇到很多的问题,先放弃安装GPU相关的环境了,先在CPU下训练,尽管跑训练速度很慢,但以后再解决GPU的问题。

     正文:

    1、安装必要依赖包:

    sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
    sudo apt-get install --no-install-recommends libboost-all-dev
    sudo apt-get install libatlas-base-dev
    sudo apt-get install python-dev
    sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

    PYTHON需要2.7版本,这是操作系统本身已经安装好的. 输入python2.7 --version 会显示具体的版本号说明安装了.

    2、下载Caffe

       首先安装git工具:

    sudo apt-get install git

       然后下载caffe包:

    git clone https://github.com/BVLC/caffe.git

       接下来进入caffe目录下(我讲caffe下载到/home下了)。

    cd caffe/

        进入里面的PYTHON文件夹,然后输入

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

       如果没有pip,得先安装一下:      sudo apt install python-pip

    3、安装Caffe

      进入caffe根目录,使用模板写个Makefile.config. 具体就是先复制一下模板, 再改一些内容

    cp Makefile.config.example Makefile.config

       首先,#CPU MODE下,在CPU_ONLY := 1前面的#要去掉.    (因为仅在CPU下跑Caffe)

     然后,在其中找到如下内容,两个路径要改成这样:(添加后面的两个hdf5的路径, 否则编译时报hdf5错误)

    # Whatever else you find you need goes here.

    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/hdf5/serial

    现在准备就绪,开始安装Caffe:

    依次执行下列命令:

    make pycaffe
    
    make all
    
    make test
    
    make runtest

    当我执行make pycaffe命令的时候,报了错:fatal error: numpy/arrayobject.h没有那个文件或目录

    其实numpy已经是安装的,anaconda2里面有,Python中import numpy也没有问题,但就是在此处报错,解决方法:

    sudo apt-get install python-numpy

    然后再执行一遍 make pycaffe命令就行了。

      显示所有的TESTS PASSED,说明已经安装好了。

    如果遇到:fatal error: hdf5.h: 没有那个文件或目录”,解决办法如下:

    Makefile.config文件的第85行,添加/usr/include/hdf5/serial/INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。

    将# Whatever else you find you need goes here.下面的
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
    修改为:
    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

    Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hlhdf5_serial,也就是把下面第一行代码改为第二行代码。

    LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
     
    
    LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
    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

    之后继续编译就行了。

    4、配置python

    在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。

    因为前面配置有报错,所以执行一下一下语句查看:

    sudo pip install -r python/requirements.txt

    结果打印如下:

    UndefinedEnvironmentName: 'extra' does not exist in evaluation environment.
    You are using pip version 8.1.1, however version 9.0.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.

    显示scikit-image错误, 那就安装一下scikit-image就好了。

      按照提示,执行一下语句:

    pip install --upgrade pip

      然后执行:

    pip install scikit-image

     去到Caffe根目录里面的python文件夹, 把当前路径记录下来(pwd). 然后在终端下输入以下命令(把记下的路径改在相应地方),回车

    export PYTHONPATH=/path/caffe/python:$PYTHONPATH

     这时候应该可以了,试验一下:

    # python
    Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import caffe
    >>> 

    import caffe后回车,没有报错,说明python环境已经搭建好。

    问题:

    当我再进入系统的时候import caffe失效

    直接使用export 时 只是在当前的登录窗口中有效,一旦关闭就会失效

    解决如下:

    $注意:  /path/to/caffe/python 这是你的caffe的路径下面的python
    
     
    
    我查了一下Ubuntu中有很多文件可以存放
    
     
    
    PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
    
    添加到
    
     
    $sudo vim /etc/profile 
    
     
    
    PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
    
     export 添加完成后记得要
    
    source profile

    解决目前的困难。

     更新:在我远程控制时,出现如下错误:

    这个错误一般是因为你在远程登陆服务器,而caffe python中 matplotlib是绘图功能,需要在图形界面才行,这时候可以在import之前加入如下代码解决:

    打开 {caffe_root}/python/caffe/__init__.py
    
    Add the following lines to the top:
    
    import matplotlib
    matplotlib.use('Agg')

    解决当前困难。

    5、训练MNIST集

     将终端定位到Caffe根目录
     然后执行脚本文件,下载MNIST数据库并解压缩
     

    ./data/mnist/get_mnist.sh

      我由于网络问题没有收到HTTP返回,所以按照脚本里的代码,根据网址在网上下载压缩包,cp到mnist文件夹下,使用脚本里的解压命令依次解压。

    然后,将其转换成Lmdb数据库格式

    ./examples/mnist/create_mnist.sh

      然后训练网络

    ./examples/mnist/train_lenet.sh

       训练的时候可以看到损失与精度数值

       可以看到最终训练精度是0.9911

       成功完成。

                   分享只为更好的记录~

                             by  still、

  • 相关阅读:
    一、区块链,这次不容错过
    二、常用固件升级
    2.监控利器nagios手把手企业级实战第一部
    四、NOSQL之Redis持久化缓存服务基础实战第三部
    三、NOSQL之Memcached缓存服务实战精讲第二部
    linux重装docker-compose后无法执行docker-compose命令
    mongodb启用auth,使用密码登录
    Vue的三个点es6知识,扩展运算符
    关于同一台服务器上两个PHP项目相互访问超时的问题
    ffmpeg生成视频封面图
  • 原文地址:https://www.cnblogs.com/ygh1229/p/6528134.html
Copyright © 2011-2022 走看看