caffe入门学习(0):概述

Caffe的背景

按照 李沐 的说法,神经网络模型的训练: 就是把训练数据(原料)和 神经网络模型:如AlexNet(丹方) “倒进” 神经网络训练框架例如cafffe,Mxnet(炼丹炉)然后用 CPU或GPU(真火) “提炼出” 模型参数(仙丹)的过程。

Caffe就是这样一个炼丹炉,其作者是博士毕业于UC Berkeley的 贾扬清,目前已经发布了Caffe2,但功能完整性和稳定性还不如Caffe当前版本,所以Caffe仍然占据主流。

Caffe作为一个清晰而高效的深度学习框架,基于纯粹的C++/CUDA架构,可以在CPU和GPU直接无缝切换。

Caffe提供了三大接口:命令行(cmdcaffe ),python API(pycaffe),matlab API (matcaffe)。

Caffe官网http://caffe.berkeleyvision.org/

Caffe的优势

1、上手快:模型与相应优化都是以文本形式而非代码形式给出。
Caffe给出了模型的定义、最优化设置以及预训练的权重,方便立即上手。
2、速度快:能够运行最棒的模型与海量的数据。
Caffe与cuDNN结合使用,测试AlexNet模型,在K40上处理每张图片只需要1.17ms.
3、模块化:方便扩展到新的任务和设置上。
可以使用Caffe提供的各层类型来定义自己的模型。
4、开放性:公开的代码和参考模型用于再现。
5、社区好:可以通过BSD-2参与开发与讨论。

Caffe的组件

在Caffe的体系中,有4个重要的组件:

  • Blob:是Caffe中处理和传递实际数据的封装包,并且在CPU和GPU之间具有同步处理能力。从数学意义上说, blob是按 C风格连续存储的N维数组。每个blob单元存储了两块数据–data(值)和diff(梯度)。
  • Layer:是Caffe模型的本质内容和执行计算的基本单元, 是对神经网络中各种层的一个抽象。包括convolve卷积、pool池化等非线性运算,也包括normalize归一、lossess损失计算等元素级变换。同时每种 Layer 都实现了前向传播和反向传播,并通过 Blob 来传递数据。
  • Nets:是对整个神经网络的表示,由各种 Layer 前后连接组合而成,也是我们所构建的网络模型。
  • Solver:定义了针对 Net 网络模型的求解方法,记录网络的训练过程,保存网络模型参数,中断并恢复网络的训练过程。自定义 Solver 能够实现不同的网络求解方式。

说明:
Caffe的整个处理过程就是:把网络中的数据抽象成Blob, 各层网络抽象成 Layer ,整个网络抽象成Net,网络模型的求解方法抽象成 Solver。

Caffe使用步骤

1、数据处理
就是把我们的图片(jpg,png等)以及标注标签,打包在一起,处理成Caffe能支持的格式,通常包括:
● 数据库Data,比如lmdb和leveldb。
● 内存数据MemoryData
● HDF5Data/HDF5Output
● 图像数据ImageData
● 窗口WindowData
● 开发调试DummyData

2、定义网络模型
prototxt文件,就是编写你的网络有多少层,每一层有多少个特征图,输入、输出等。用图形化表示就类似这样:

这里写图片描述

3、定义网络求解
prototxt文件,这个文件主要包含了一些求解网络,梯度下降参数、迭代次数等参数。比如
这里写图片描述

4、训练模型
这个就是生成模型的过程。这里我只列举命令行方式。Python和Matlab方式参看其他。

训练示例 (参数: 求解文件)
caffe train -solver examples/mnist/lenet_solver.prototxt

# 从训练一半的模型快照中恢复训练 (参数:求解文件 快照)
caffe train -solver examples/mnist/lenet_solver.prototxt -snapshot examples/mnist/lenet_iter_5000.solversta

# 由其它训练好的模型 fine-tune  (参数:求解文件 其它训练好的模型参数) 
caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel

5、测试模型

测试 (参数: 求解文件 训练好的模型参数 )
caffe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 100

备注:除了自己训练模型外,当然也可以从网上下载别人训练好的模型来用,很多机构或牛人业开放了自己的模型。比如AlexNet,VGG,GoogLeNet,ResNet等著名的模型。

发布了155 篇原创文章 · 获赞 59 · 访问量 22万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章