对于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所需要的依赖库

命令:

  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配置后,我们输入命令:

  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接口,输入命令:

  1. make pycaffe

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

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

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

  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目录,然后输入命令:

  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就好了。

然后我们运行脚本:

  1. ./examples/mnist/train_lenet.sh

这个时候,如果成功的话,就会开始跑起来:

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

  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):

  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
如果显示如下图内容:
则表明版本是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
1.进入caffe目录
cd caffe/
2.生成Makefile.config文件,这里是将caffe目录下自带的Makefile.config.example文件复制一份并更名为Makefile.config,命令如下:
cp Makefile.config.example Makefile.config
此时目录下就会有Makefile.config文件,如下图:
3.修改Makefile.config文件中的配置
1)编辑Makefile.config文件
sudo gedit Makefile.config
2)去掉CPU_ONLY前面的#号
使得CPU_ONLY := 1
3)配置引用文件路径(主要是HDF5的路径问题)
原来的路径配置如下图:
修改为如下图:
新增的内容为:
/usr/include/hdf5/serial
/usr/lib/x86_64-linux-gnu/hdf5/serial
4)执行编译
sudo make all
sudo make test
sudo make runtest
执行玩runtest后,会有结果显示:
显示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在/home/moqi/下面,所以路径为/home/moqi/caffe/python,你可以自行进入自己的caffe文件夹里的python目录下,输入pwd查看路径。
然后执行更新配置(有时更新不起作用时,可以重启电脑就会有效):
sudo ldconfig
4)编译python接口
cd ~/caffe/
make pycaffe
5)验证python接口
进行python环境,引入caffe包,如果没有报错则安装成功!
如下图:
至此,caffe安装成功!
 
六、题外话
因为系统或者安装机器的不同,可能会出现一些不一样的问题,出现问题,请粘贴问题自行搜索,都是有答案的,切忌眼高手低。

基于VGGnet的人脸识别系统-ubuntu 系统下的Caffe环境搭建(CPU)的更多相关文章

  1. 【嵌入式硬件Esp32】Ubuntu 1804下ESP32交叉编译环境搭建

    一.ESP32概述EPS32是乐鑫最新推出的集成2.4GWi-Fi和蓝牙双模的单芯片方案,采用台积电(TSMC)超低功耗的40nm工艺,拥有最佳的功耗性能.射频性能.稳定性.通用性和可靠性,适用于多种 ...

  2. Vmware Ubuntu 虚拟机下Android开发环境搭建

    概况: 1.安装jdk: 2.安装adt-bundle: 1.安装jdk 先下载linux下的jdk,我下的是 jdk-7u13-linux-i586 :然后解压,为方便,建个文件夹--/home/x ...

  3. 践行初心|方正璞华爱心捐赠人脸识别测温系统WelComID

    近日,方正璞华向金鸡湖社区卫生服务中心捐赠了人脸识别测温系统.该设备集人员识别.体温检测等功能于一体,在人员进出的时候完成体温的检测,从而判断是否有异常人员等问题,有效节省人力成本.减少人员接触风险, ...

  4. 基于MATLAB的人脸识别算法的研究

    基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...

  5. 基于 OpenCV 的人脸识别

    基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...

  6. 基于 HTML5 的人脸识别技术

    基于 HTML5 的人脸识别技术 https://github.com/auduno/headtrackr/

  7. 基于node.js人脸识别之人脸对比

    基于node.js人脸识别之人脸对比 Node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O ...

  8. 【计算机视觉】基于OpenCV的人脸识别

    一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...

  9. java基于OpenCV的人脸识别

    基于Java简单的人脸和人眼识别程序 使用这个程序之前必须先安装配置OpenCV详细教程见:https://www.cnblogs.com/prodigal-son/p/12768948.html 注 ...

随机推荐

  1. NX二次开发-UFUN批量操作图层状态UF_LAYER_set_many_layers_status

    NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_layer.h> UF_initialize ...

  2. Java-Class-@I:org.springframework.beans.factory.annotation.Autowired

    ylbtech-Java-Class-@I:org.springframework.beans.factory.annotation.Autowired 1.返回顶部   2.返回顶部 1. pack ...

  3. 3. Image Structure and Generation

    名词 Extensible Linking Format(ELF) 3.1 The structure of an ARM ELF image ARM ELF映像包含sections, regions ...

  4. CodeForces 1152D Neko and Aki's Prank

    说明 Catalan(i) 表示卡特兰数的第 i 项. 题目链接:http://codeforces.com/problemset/problem/1152/C 题目大意 有 n 个左括号和 n 个右 ...

  5. .net 超链接传值,传过去始终是null

    今天做了一个删除功能,通过点击列表中的删除超链接,通过get请求,跳转到一个处理程序执行删除操作 . 因为不熟悉各种报错 , <%="<td> <a class='d ...

  6. 【POJ】1321棋盘问题

    题目链接:http://poj.org/problem?id=1321 题意:见题干,很清楚了. 题解:简单dfs,参照八皇后 代码: #include<iostream> #includ ...

  7. neo4j 基本概念和Cypher语句总结

    下面是一个介绍基本概念的例子,参考链接Graph database concepts: (1) Nodes(节点) 图谱的基本单位主要是节点和关系,他们都可以包含属性,一个节点就是一行数据,一个关系也 ...

  8. Python学习笔记(一)——输入与输出

    输出:——print() Python中的输出使用print()完成 >>> 在屏幕中输出Hello World >>> print('Hello World') ...

  9. CSIC_716_20191028【爬小破站】

    1.爬取小破站的弹幕 2.展示爬取内容 打开网页,用教的方法找到cid 和header import requests from bs4 import BeautufulSoup import pan ...

  10. 【JZOJ1667】【BZOJ1801】【luoguP2051】中国象棋

    description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮.请问有多少种放置方法?中国象棋中炮的行走方式大家应该很清楚吧. analysis \(DP\),容 ...