在跑完mnist数据集后,想跑一下cifar10,发现网上介绍的资料不多,有些步骤有点麻烦,因此就参考训练mnist数据集的方法对cifar10数据进行训练,最后得到了训练结果。
一、下载数据
进入到caffe根目录,输入下面的代码下载数据:
sudo sh data/cifar10/get_cifar10.sh可以看到在cifar10文件夹下多了一些文件。
二、转换格式
下载好的原始数据为二进制文件,需要转换为leveldb或lmdb才能被caffe识别,在caffe根目录下输入下面的代码进行转换:
sudo sh examples/cifar10/create_cifar10.sh此时在examples/cifar10目录下可以看到cifar10_test_lmdb和cifar10_train_lmdb两个文件夹。
三、进行训练
在cifar10目录下可以看到train_quick.sh和train_full.sh两个文件,运行这两个文件即可开始数据的训练。
train_quick.sh文件是快速训练,最大迭代次数只有4000,而full最大迭代次数则为60000,因此quick训练速度较快,精度只有百分之七十多,full训练完成需要4个小时左右(机器不同训练时间可能不一样,且这个时间是我在用GPU的情况下的时间),精度为百分之八十多。如果你需要使用cpu进行训练,需要打开相应的模型描述文件进行修改。如:要使用quick方法进行训练,则打开train_quick.sh文件,可以看到这个文件调用了cifar10_quick_solver.prototxt模型文件,打开cifar10_quick_solver.prototxt,可以看到最后一行为设置gpu or cpu模式,此处根据需要进行修改。默认的为gpu。
输入下面代码开始训练:
sudo sh examples/cifar10/train_quick.sh如果需要full训练的话,方法是一样的。
此处如果不在caffe根目录下运行会报错,原因是.sh文件里调用了编译好的caffe可执行文件,路径是基于根目录的,因此需要在根目录下运行。
四、利用test数据进行分类
训练过程结束后,可以看到在cifar10文件夹下多了几个文件,其中cifar10_quick_iter_5000.caffemodel.h5是最终得到的模型权值数据,cifar10_quick_iter_5000.solverstate.h5保存了训练状态数据。这两个文件都是二进制数据。此处用来分类的文件为cifar10_quick_iter_5000.caffemodel.h5文件。
sudo ./build/tools/caffe.bin test -model examples/cifar10/cifar10_quick_train_test.prototxt -weights examples/cifar10/cifar10_quick_iter_5000.caffemodel.h5 -iterations 100分类过程比较快,几分钟就可以看到分类的结果,我电脑上最终得到的accuracy平均为80+%.
五、总结
跑例子只是学习的手段之一,在执行上面的每个步骤的过程中,最好理解每一步的原理再去执行会学到更多,在运行这些文件的时候建议看一下这些文件中的代码,确定一下文件之间的调用关系,熟悉caffe训练一个数据集的过程。
以上。
原文链接:https://www.f2er.com/ubuntu/355487.html