Caffe在Linux下的安装,编译,实验

第一部分:Caffe 简介

caffe是有伯克利视觉和学习中心(BVLC)开发。作者是伯克利博士贾杨清。

caffe是一个深度学习(deep learning)框架。其具有易读、快速和模块化思想。

第二部分:Caffe安装与配置

2.1 配置环境:ubuntu 14.04LTS, 使用Homebrew进行安装。暂不使用GPU,所以使用CPU-ONLY模式。不使用Python,所以没有下关于Python的任何支持库。

2.2 支持库

2.2.1 利用Homebrew 安装所需要的库,其中包括:boost snappy leveldb protobuf gflags glog szip lmdb homebrew/science/opencv

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.2:apt-get 简介:

apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

2.3 所需要的库简介:

2.3.1 snappy

Snappy 是一个 C++ 的用来压缩和解压缩的开发包。其目标不是最大限度压缩或者兼容其他压缩格式,而是旨在提供高速压缩速度和合理的压缩率。Snappy 比 zlib 更快,但文件相对要大 20% 到 100%。在 64位模式的 Core i7 处理器上,可达每秒 250~500兆的压缩速度。

2.3.2 leveldb

Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法.

2.3.3 gflags

gflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口,可以替代getopt。

gflags使用起来比getopt方便,但是不支持参数的简写。

2.3.4 glog

Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。

2.3.5 szip

szip是一个快速,优良,跨平台的开源数据压缩程序。

2.3.6 lmdb

lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎。

2.3.7 hdf5

Hierarchical Data Format(HDF),可以存储不同类型的图像和数码数据的文件格式,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。大多数普通计算机都支持这种文件格式。

2.3.8 opencv

OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#,Ch, Ruby的支持。

2.3.9 protobuf

protocolbuffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

2.3.10 Boost

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。

第三部分 Caffe编译

3 使用Make编译Caffe

在caffe$的路径下:

#caffe文件夹中默认含有一个示例Makefile,只要去复制修改这个文件就可以了

cp Makefile.config.example Makefile.config

然后打开Makefile.config进行修改,笔者这里没有GPU,所以使用CPU-ONLY模式。所以反注释掉了 CPU_ONLY := 1

make all

make test

make runtest

经过以上之后Caffe就算是编译成功了!

第四部分 利用Caffe在MNIST数据集上进行LeNet训练

4.1 MNIST简介

MNISTs是一个手写数字电子版的数据集,其包含60000张的训练集,10000张的测试集,均为32*32格式。

4.2 LeNet简介

LeNet是一个用来进行手写数字分类的网络,作者是Yann LeCun。具体可以查询:

​http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf​

在这里使用时把原方法中的sigmoid激活函数改成了ReLU激活函数。

4.3 数据集准备

下载所需要的数据并且转换为所需的数据格式

cd $CAFFE_ROOT

./data/mnist/get_mnist.sh

./examples/mnist/creat_mnist.sh

4.4 MNIST网络的定义

网络定义在了lenet_train_test.prototxt中。Caffe中的模型都是以Google Protobuf方式定义的。

4.4.1 定义名字

name: "LeNet"

4.4.2 定义数据层

layer {

 name: "mnist"

 type: "Data"

 transform_param {

   scale: 0.00390625

 }

 data_param {

   source: "mnist_train_lmdb"

   backend: LMDB

   batch_size: 64

 }

 top: "data"

 top: "label"

}

4.4.2 定义卷积层

layer {

 name: "conv1"

 type: "Convolution"

 param { lr_mult: 1 }

 param { lr_mult: 2 }

 convolution_param {

   num_output: 20

   kernel_size: 5

   stride: 1

   weight_filler {

     type: "xavier"

   }

   bias_filler {

     type: "constant"

   }

 }

 bottom: "data"

 top: "conv1"

}

4.4.3 定义池化层

layer {

 name: "pool1"

 type: "Pooling"

 pooling_param {

   kernel_size: 2

   stride: 2

   pool: MAX

 }

 bottom: "conv1"

 top: "pool1"

}

4.4.4 定义全连接层

layer {

 name: "ip1"

 type: "InnerProduct"

 param { lr_mult: 1 }

 param { lr_mult: 2 }

 inner_product_param {

   num_output: 500

   weight_filler {

     type: "xavier"

   }

   bias_filler {

     type: "constant"

   }

 }

 bottom: "pool2"

 top: "ip1"

}

4.4.5 定义ReLU层

layer {

 name: "ip2"

 type: "InnerProduct"

 param { lr_mult: 1 }

 param { lr_mult: 2 }

 inner_product_param {

   num_output: 10

   weight_filler {

     type: "xavier"

   }

   bias_filler {

     type: "constant"

   }

 }

 bottom: "ip1"

 top: "ip2"

}

4.4.6 定义损失层

layer {

 name: "loss"

 type: "SoftmaxWithLoss"

 bottom: "ip2"

 bottom: "label"

}

4.5 定义Solver

4.5.1 Solver简介

Solver通过协调Caffe中的Net的前向推断计算和反向梯度计算,来对参数进行更新,从而达到减小loss的目的

4.5.2 定义MNIST Solver

定义在$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt:

# The train/test net protocol buffer definition

net: "examples/mnist/lenet_train_test.prototxt"

# test_iter specifies how many forward passes the test should carry out.

# In the case of MNIST, we have test batch size 100 and 100 test iterations,

# covering the full 10,000 testing images.

test_iter: 100

# Carry out testing every 500 training iterations.

test_interval: 500

# The base learning rate, momentum and the weight decay of the network.

base_lr: 0.01

momentum: 0.9

weight_decay: 0.0005

# The learning rate policy

lr_policy: "inv"

gamma: 0.0001

power: 0.75

# Display every 100 iterations

display: 100

# The maximum number of iterations

max_iter: 10000

# snapshot intermediate results

snapshot: 5000

snapshot_prefix: "examples/mnist/lenet"

# solver mode: CPU or GPU

solver_mode: GPU

4.6 训练与测试模型

运行脚本,这个脚本已经写了所有的训练和测试

cd $CAFFE_ROOT

./examples/mnist/train_lenet.sh

屏幕上闪过类似于如下的信息:

I1203 net.cpp:66] Creating Layer conv1

I1203 net.cpp:76] conv1 <- data

I1203 net.cpp:101] conv1 -> conv1

I1203 net.cpp:116] Top shape: 20 24 24

I1203 net.cpp:127] conv1 needs backward computation.

这是解释了网络中的每一层都是如何工作的。

最终得到了如下信息:

I1203 solver.cpp:84] Testing net

I1203 solver.cpp:111] Test score #0: 0.9897

I1203 solver.cpp:111] Test score #1: 0.0324599

I1203 solver.cpp:126] Snapshotting to lenet_iter_10000

I1203 solver.cpp:133] Snapshotting solver state to lenet_iter_10000.solverstate

I1203 solver.cpp:78] Optimization Done.

网络迭代了10000次,最终accurary是0.9897,loss是0.0324599

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Linux安装Caffe,您需要按照以下步骤进行操作: 1. 安装依赖项:Caffe需要一些依赖项,如CUDA、cuDNN、OpenCV等。您需要先安装这些依赖项。 2. 下载Caffe源代码:您可以从Caffe的GitHub页面上下载源代码。 3. 编译Caffe:在下载源代码后,您需要编译Caffe。您可以使用make命令来编译Caffe。 4. 配置环境变量:为了能够在任何地方使用Caffe,您需要将Caffe的路径添加到系统的环境变量中。 5. 测试Caffe:在安装和配置Caffe后,您可以使用一些示例代码来测试Caffe是否正常工作。 以上是安装Caffe的基本步骤。但是,由于Caffe安装过程可能会因为不同的操作系统和依赖项而有所不同,因此您需要根据自己的情况进行相应的调整。 ### 回答2: Caffe是一款开源的深度学习框架,它基于计算图模型来实现深度学习算法,并提供了丰富的工具包和库函数,适用于许多常见的深度学习任务,如图像分类、图像分割、物体检测等。 在Linux操作系统中安装Caffe有以下几个步骤: 1. 准备依赖项 在安装Caffe之前,需要安装一些依赖项。首先,需要安装一些必要的系统库,如Boost、HDF5、OpenBLAS等。其次,还需要安装一些Python的库,如NumPy、SciPy等。可以使用以下命令安装: sudo apt-get install libboost-all-dev libhdf5-serial-dev libopenblas-dev python-dev python-numpy python-scipy 2. 下载Caffe Caffe源代码可以从官方网站或GitHub上下载,可以使用以下命令下载: git clone https://github.com/BVLC/caffe.git 3. 编译Caffe 在下载源代码后,需要编译安装Caffe。首先,需要为Caffe配置依赖项,执行以下命令: cd caffe cp Makefile.config.example Makefile.config make all 如果编译过程中出现错误,可以通过修改Makefile.config来解决错误。 4. 测试Caffe Caffe安装完成后,可以执行以下命令来测试Caffe是否正常工作: make test make runtest 如果Caffe正常工作,将输出所有测试用例的运行结果,并不会报错。 5. 安装Caffe的Python接口 Caffe提供了Python接口,让Python开发者可以方便地使用Caffe。要使用Python接口,需要安装Python包,可以使用以下命令安装: cd python sudo pip install -r requirements.txt sudo python setup.py install 安装完成后,可以在Python中导入Caffe的模块,开始使用Caffe进行深度学习。 总之,在Linux操作系统中安装Caffe比较简单,只需要依次执行上述步骤即可完成。安装完成后,可以开始使用Caffe进行深度学习,从而实现更多有趣的应用。 ### 回答3: Caffe是一款非常流行的深度学习框架,可以用于训练和测试各种神经网络模型,如卷积神经网络(CNN)和循环神经网络(RNN)等。在Linux系统中安装Caffe可以使用户能够更好地进行深度学习研究和应用。下面是安装Caffe的具体步骤。 1.安装依赖库 在安装Caffe之前,需要先安装一些依赖库。可以使用以下命令安装: sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler 2.下载并安装Caffe 下载Caffe的源代码,并解压缩: git clone https://github.com/BVLC/caffe.git cd caffe 在进行编译之前,需要先编辑Makefile.config文件,将以下内容取消注释并设置为正确的路径: # CPU_ONLY := 1 # OPENCV_VERSION := 3 # 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 然后执行以下命令编译: make all make test make runtest make pycaffe 最后,执行以下操作将Caffe安装到/usr/local/caffe目录下: sudo make install 3.测试安装安装完成之后,可以使用以下命令测试Caffe是否正常工作: cd caffe ./build/examples/mnist/train_lenet.sh 如果一切正常,将会输出模型训练和测试的结果。 以上就是在Linux系统中安装Caffe的具体步骤。虽然安装过程可能会比较复杂,但只要按照以上步骤一步步操作,便可以顺利地完成安装。在安装过程中有任何问题,可以参考Caffe官方网站或者开源社区的相关文档和资料,或者搜索相关问题的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值