Caffe 初识,揭开面纱

这一段时间把caffe官网上的例子跑了一下,对caffe有了一个大概的了解。如果你想对caffe有个比较清晰的了解,建议认真阅读官网上的资料,尤其在caffe资料极少的情况下,这种方法是最有效的途径,可以让你少走许多弯路,不要上来就在网上随便找个教程配置环境,上来就想跑例子。。博主就是赤裸裸的例子,在配置环境的时候浪费了好多时间

一、caffe的基本组成 

一个caffe的工程主要包含两个部分:网络模型,参数配置,分别对应***.prototxt , ****_solver.prototxt文件。

网络模型:即定义你网络的每一层,下图是用caffe中 /python/draw_net.py画出的的siamese的模型,非常清晰

层包含:

DATA: 一般指输入层,包含数据路径,批处理数据大小batch_size,scale表示数据表示在[0,1],0.00390625即 1/255

CONVOLUATION:卷积层,blobs_lr:1 , blobs_lr:2分别表示weight 及bias更新时的学习率,这里权重的学习率为solver.prototxt文件中定义的学习率真,bias的学习率真是权重学习率的2倍,这样一般会得到很好的收敛速度。

num_output表示滤波的个数,kernelsize表示滤波的大小,stride表示步长,weight_filter表示滤波的类型

POOLING: 池化层

INNER_PRODUCT: 其实表示全连接,不要被名字误导

RELU:激活函数,非线性变化层 max( 0 ,x ),一般与CONVOLUTION层成对出现

SOFTMAX

参数配置文件:

***_solver.prototxt文件定义一些模型训练过程中需要到的参数,比较学习率,权重衰减系数,迭代次数,使用GPU还是CPU等等

训练出的模型被存为***.caffemodel,可供以后使用。

 

二、使用caffe训练模型包含以下几个步骤:

  1. 准备数据
  2. 重建lmdb/leveldb文件,caffe支持三种数据格式输入:images, levelda, lmdb
  3. 定义.prototxt , solver.prototxt文件
  4. 训练模型

三、caffe中比较有用且基础的接口

1、训练模型,比如使用mnist的例子

./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt

2、观察各个阶段的运行时间可以使用

./build/tools/caffe time --model=models/bvlc_reference_caffenet/train_val.prototxt

3、使用已有模型提取特征

./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt conv5 examples/_temp/features 10

conv5表示提取第五个卷积层的特征, examples/_temp/feaures表示存放结果的目录

4、对已有模型进行find-tuning,比如我们现在有一个1000类的分类模型,但目前我们的需求仅是20类,此时我们不需要重新训练一个模型,只需要将最后一层换成20类的softmax层,然后使用已有数据对原模型进行fine-tuning即可

 ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0

如果使用cpu模式,那么最后的-gpu省略

5、还有一个是python下面的接口,draw_net.py可以根据.prototxt文件将模式用图示的方法表示出来,博文开始的模型图即用该接口所绘

./python/draw_net.py ./examples/siamese/mnist_siamese.prototxt   ./examples/siamese/mnist_siamese.png

第一个参数为模型文件,第二个参数为所绘模型图的保存地址

 

四、运行caffe自带例子需要注意的问题

1、需要在caffe_root路径下执行所有操作,因为所有的操作都是基于该路径的,如数据的路径等

2、建议在sudo权限下执行,一般用户权限下执行时有时会报错

3、在运行程序前确定你的环境配置正确,以免在后面浪费时间,环境配置见caffe + ubuntu14.04 + cuda 6.5 无gpu配置

 

 

posted @ 2015-01-23 17:27  dupuleng  阅读(11539)  评论(1编辑  收藏  举报