【深度学习】笔记10:Ubuntu16.04环境下配置caffe的步骤(无GPU版本)

/**********************************************************************************************
*文件说明:
*       Ubuntu14.04+caffe+python接口的配置+无GPU
*时间地点:
*        陕西师范大学----2016.10.25  
**********************************************************************************************/
1.  安装【build-essentials】
   1---安装开发所需要的一些基本的包,
   2---sudo apt-get install build-essential
   1---如果上面的命令运行不了的话,那么请执行下面的命令,更新本地的数据库:
   2---sudo apt-get update
2--安装[git]
   sudo apt-get install git
3--安装[vim]
   sudo apt-get install vim
4. 安装【BLAS】(Basic Linear Algebar Subprograms)(基本线性代数子程序)
   1---卷积神经网络中用到的数学计算主要是:矩阵,向量的计算,Caffe中调用了BLAS中相应的方法.
   2---最常用的BLAS实现方法有:ATLAS,MKL,OpenBLAS等,Caffe可以选择其中的任何一种
   3---本文选择安装ATLAS,然后你要将caffe根目录下的Makefile.config中的配置改为相应的atlas
   4---sudo apt-get install libatlas-base-dev
   5---对应的Makefile.confi配置如下所示:
       # BLAS choice:
       # atlas for ATLAS (default)
       # mkl for MKL
       # open for OpenBlas
       BLAS := atlas
4. 安装【OpenCV】
   1---OPenCv,我想就不用我多介绍了,学计算机视觉的同学都应该知道,世界上最流行的计算机视觉库,包含大量的
       图像处理函数.Caffe使用OpenCv中的函数完成一些图像存取和预处理功能
   2---先下载Github的安装版本(https://github.com/jayrambhia/Install-OpenCV),下载之后由于是zip格式的
       文件,需要使用shell的解压命令unzip,解压的格式如下所示:
       unzip -d UNZIP_PATH FILENAME.zip
            1---unzip----shell的解压指令
            2----d UNZIP_PATH---解压到指定的目录下,UNZIP_PATH就是你解压的路径名(绝对路径名)
            3---FILENAME.zip----者当然就是你将要解压的文件了
            4---这里,我建议安装OpenCv2.4.9,我已经安装成功(https://github.com/bearpaw/Install-OpenCV,
            5---下载成功后,进行解压
            6---切换到OPenCv的目录下----cd Install-OpenCV/Ubuntu/2.4/
            7---给当前目录下的所有.sh脚本添加可执行权限:chmod a+x *.sh
            8---安装OpenCv2.4.9:sudo ./opencv2_4_9.sh
5. 安装【dependencies】
       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
       2--Boost库(libboost-all-dev):
               1--Boost库是一个功能强大,跨平台,开源且免费的库,被称为"C++的标准库",使用了很多现代的编程技术
               2--Boost库的内容包含:
                    1--字符串处理
                    2--正则表达式
                    3--容器
                    4--数据结构
                    5--并发编程,函数式编程,泛型编程,设计模式等
               3--Caffe中主要使用了:
                    1--Boost中的只能指针
                    2--Boost实现了C/C++和python的交互编程
       3---HDF5(Hierarchical Data File)
              1--HDF5是美国国家高级计算机应用中心(NCSA)为了满足各种领域研发的一种高效存储和分发科学数据的
                    新型数据格式
              2--它可以存储不同类型的图像和数据文件
              3--Caffe的训练模型可以保存为HDF5格式或者ProtoBuffer格式(默认)
       4--ProtoBuffer是一种和硬盘文件读取的协议接口,Caffe中使用它权值和模型参数的载体
       5--LMDB和LevelDB库
              1---LMDB(Lightning Memory-Mapped Database Manger)(闪电般的内存映射行数据库管理器)
              2---LMDB在caffe中的主要作用就是就是提供数据管理,它可以将形形色色的原始数据(JPEG图片,二进制
                  数据)转换为统一的Key-Value存储,以便Caffe的DataLayer获取这些数据
              3---LevelDB是caffe的早起数据库管理器,现在已经被LMDB逐渐替代
       6--GLOG库
              1---GLOG库主要是Google开发的用于记录[应用程序日志的实用库]
              2---GLOG提供基于C++标准输入输出流形式的接口,记录时可以选择不同的日志级别
              3---方便将重要日志和普通的日志分开
              1---GLOG在caffe中主要起到记录日志的作用,便于开发者查看Caffe训练中产生的中间输出
              2---并根据这些信息决定如何调整参数来[控制收敛]
              3---从日志文件,我们能够非常方便的看到程序运行的流程,边缘跟踪源码,定位问题
              4---GLOG的使用方法可以参考Caffe源码中的tools/caffe.cpp            
6. 配置和编译【Caffe】
       1--下载Caffe源代码:git clone https://github.com/bvlc/caffe
       2---切换到caffe目录下:
              cd ./caffe
       3---给caffe的配置文件重命名:
              mv Makefile.config.example Makefile.config
       4---如果你的电脑没有GPU,请修改配置文件
              vim Makefile.config
        # CPU-only switch (uncomment to build without GPU support).
          CPU_ONLY := 1
       5---编译caffe:
          make -j
	主要修改的部分为:
	1. 将# CPU_ONLY = 1前面的#去掉 并按“tab”键,(默认从tab处执行),因为这里没有安装GPU,
           需要使用CPU运行。
	2. BLAS := atlas, 这是默认设置,如果不是安装的这个,则需要修改。具体修改,该语句上面
           有注释提示。
	3. 设置MATLAB_DIR的路径:如我的是/usr/local/MATLAB/R2014a
/**************************************************************************************************************
*注意: 
*需要说明的一点是:
*      全程的所有软件和库的安装,最好在(登陆用户下进行),不要在root权限下安装,不然后面有可能出现一系列的问题
**************************************************************************************************************/
/**************************************************************************************************************
*(一)第一部分:caffe框架及其依赖库请具体参照以下博客:
*http://m.blog.csdn.net/article/details?id=51803797
*http://www.cnblogs.com/sunshineatnoon/p/4535329.html
*http://caffe.berkeleyvision.org/installation.html
*http://www.cnblogs.com/empty16/p/4828476.html
**************************************************************************************************************/
/**************************************************************************************************************
*(二)第二部分:caffe的python可视化接口使用下面博客的安装方法
*http://www.cnblogs.com/sunshineatnoon/p/4535329.html
**************************************************************************************************************/
/**************************************************************************************************************
*(三)依照上面的教程安装之后,会有一个bug,可以参考下面的博客进行解决
*    1--遇见的bug为:No module named google.protobuf.internal
*    2--错误原因:说明你没有添加goole.protobuf,internal的位置
*    3--解决方法:
*               首先,在你的登陆用户(区别于超级用户root)下,输入python命令,进入python shell
*               其次,依次输入以下python代码:
                     import sys
                     sys.path.append("/usr/lib/python2.7/dist-packages")
                     import caffe
     4--如果没有错误report,则说明python可视化接口配置成功
*    5--参考博客如下所示:
*          http://www.cnblogs.com/taokongcn/p/4341290.html
**************************************************************************************************************/


1 基本信息

本机安装环境是,VMWare Workstation 10 安装64位的虚拟机Ubuntu 16.04

1.1 Ubuntu 系统信息

charles@charlesubuntuserver:~$ cat /etc/issue
Ubuntu 16.04.2 LTS \n \l

charles@charlesubuntuserver:~$ uname -a
Linux charlesubuntuserver 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

1.2 Caffe 地址

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

2 安装过程

2.1 安装依赖

安装这些依赖的过程中,一次安装没有全部安装成功,解决方法是:经过sudo apt-get update之后,再继续安装。

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 libgflags-dev libgoogle-glog-dev liblmdb-dev 

2.2 配置及编译Caffe

从git中clone出源码后,修改Makefile.config:

cp Makefile.config.example Makefile.config  
vi Makefile.config 

找到#CPU_ONLY := 1,取消注释(我设置为CPU模式)
找到

# Whatever else you find you need goes here.  
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include  
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib  

修改为

# 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  

如果是32位的Ubuntu,那么库路径应该是/usr/lib/i386-linux-gnu/hdf5/serial,若不确定,可以find 下libhdf5.a

随后进行编译:

make all  
make test  
make runtest 

安装好以后我们就可以试着在mnist上跑一下lenet了。

1.首先获取mnist数据

cd caffe
./data/mnist/get_mnist.sh

2.然后创建lenet

./examples/mnist/create_mnist.sh

注意一定要在caffe的根目录下运行以下命令,否则会报“ build/examples/mnist/convert_mnist_data.bin: not found”的错误,参见这里

3.训练cnn

没有gpu的话要记得把caffe/examples/mnist/lenet_solver.prototxt中的solver_mode设置成solver_mode: CPU。然后在根目录下执行:

./examples/mnist/train_lenet.sh

准确率可以达到0.9912

因为caffe的tutorial上有很大一部分是python的,所以后来又安装了一下python的接口。

因为caffe的tutorial上有很大一部分是python的,所以后来又安装了一下python的接口。

1.首先安装python

2.安装pip

sudo apt-get install python-pip python-dev build-essential 

3.运行以下代码安装必要的依赖项:

sudo pip install -r ./python/requirements.txt

4.这里我运行了make clean以及其他编译的caffe的命令,重新编译了一次caffe,但我不确定是不是必须的。

5.在caffe的根目录下运行:

make pycaffe

这里遇到了一个问题:

virtual memory exhausted: Cannot allocate memory
make: *** [python/caffe/_caffe.so] Error 1

按照这里的方法增加linux虚拟机的内存就可以解决了。

6.把caffe/python的路径加到python路径中:

运行python进入python shell,然后运行下列命令:

import sys
sys.path.append("path/to/caffe/python/")
exit()

7. 这时候再次进入python shell,运行import caffe就没有报错了。

 

参考

[1]http://blog.csdn.net/fengbingchun/article/details/45535741

[2]http://caffe.berkeleyvision.org/install_apt.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值