caffe学习笔记1——运行caffe自带的程序,mnist和cifar10

学习参考:http://www.cnblogs.com/denny402/category/759199.html   非常详细,非常优质的caffe入门博客

为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载。但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了。但是呢,我是在windows下用的caffe,不能直接运行.sh的shell文件,不过我们可以用Git Shell来运行它,我们只需要安装github桌面版就会安装上Git Shell。(由于windows与linux的差别,并不是caffe中提供的所有shell文件在windows中都能成功运行,此时就需要自己将shell文件改写成windows下bat文件)

注意:在caffe中运行所有程序,都必须在根目录下进行,否则会出错(因为很多文件设置时,就是假设执行目录是caffe根目录)

1、mnist实例

mnist是一个手写数字库,由DL大牛Yan LeCun进行维护。mnist最初用于支票上的手写数字识别, 现在成了DL的入门练习库。征对mnist识别的专门模型是Lenet,算是最早的cnn模型了。

mnist数据训练样本为60000张,测试样本为10000张,每个样本为28*28大小的黑白图片,手写数字为0-9,因此分为10类。

首先下载mnist数据,假设当前路径为caffe根目录,可以在Git Shell中执行  

sh data/mnist/get_mnist.sh

运行成功后,在 data/mnist/目录下有四个文件:

train-images-idx3-ubyte:  训练集样本 (9912422 bytes) 
train-labels-idx1-ubyte:  训练集对应标注 (28881 bytes) 
t10k-images-idx3-ubyte:   测试集图片 (1648877 bytes) 
t10k-labels-idx1-ubyte:   测试集对应标注 (4542 bytes)

或者直接去官网下载   http://yann.lecun.com/exdb/mnist/

将下载后的文件解压到data/mnist/目录下

 

这些数据不能在caffe中直接使用,需要转换成LMDB数据

在.\examples\mnist\下建立文件create_mnist.bat输入以下内容

echo "create test data" 
.\Build\x64\Release\convert_mnist_data.exe .\data\mnist\t10k-images.idx3-ubyte .\data\mnist\t10k-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb  
echo "create train data" 
.\Build\x64\Release\convert_mnist_data.exe .\data\mnist\train-images.idx3-ubyte .\data\mnist\train-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb 
pause 

如果出现下面错误,说明路径中已经存在mnist_train_lmdb或者mnist_test_lmdb系统无法创建目录,需要先删掉它们

 

执行成功会在examlpes\mnist\下面生成两个文件夹mnist_train_lmdb和mnist_test_lmdb,里面存放了转换好的数据

 

接下来是修改配置文件,caffe最主要的两个配置文件就是lenet_solver.prototxt和train_lenet.prototxt.

打开lenet_solver_prototxt,根据需要修改slover_model,train_lenet.prototxt这里可以不做修改

用下面命令运行这个例子

caffe.exe train --solver=.\examples\mnist\lenet_solver.prototxt 
Pause

运行结果如下

 

2、cifar10实例

cifar10数据训练样本50000张,测试样本10000张,每张为32*32的彩色三通道图片,共分为10类。

下载数据:

sh data/cifar10/get_cifar10.sh

(或者通过链接http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz下载)

运行成功后,会在 data\cifar10\文件夹下生成一堆bin文件(其中的cifar-10-binary.tar.gz是我通过链接下载的,解压后会得到哪些bin文件)

转换数据格式为lmdb:

在examples\cifar10\下建立文件create_cifar10.bat,并输入

.\Build\x64\Release\convert_cifar_data.exe .\data\cifar10 .\examples\cifar10 lmdb
pause


.\Build\x64\Release\compute_image_mean.exe -backend=lmdb .\examples\cifar10\cifar10_train_lmdb .\examples\cifar10\mean.binaryproto
pause

在caffe根目录下运行create_cifar10.bat后会在examples\cifar10\中生成两个文件夹cifar10_test_lmdb和cifar10_train_lmdb和均值文件mean.binaryproto

继续在examples\cifar10\下建立文件train_quick.bat,输入

.\Build\x64\Release\caffe.exe train --solver=examples\cifar10\cifar10_quick_solver.prototxt 


.\Build\x64\Release\caffe.exe train --solver=examples\cifar10\cifar10_quick_solver_lr1.prototxt --snapshot=examples\cifar10\cifar10_quick_iter_4000.solverstate.h5 

运行train_quick.bat开始i训练

该例子为了节省时间,进行快速训练(train_quick),

训练分为两个阶段,第一个阶段(迭代4000次)调用配置文件cifar10_quick_solver.prototxt, 学习率(base_lr)为0.001

第二阶段(迭代1000次)调用配置文件cifar10_quick_solver_lr1.prototxt, 学习率(base_lr)为0.0001

训练结果如下图

posted @ 2017-11-29 21:37  ZaneYang  阅读(619)  评论(0编辑  收藏  举报