cifar10数据训练样本50000张,测试样本10000张,每张为32*32的彩色三通道图片,共分为10类。
很多文章介绍得很简单,下载数据和转换数据格式,只有两行代码:
sudo sh data/cifar10/get_cifar10.sh
sudo sh examples/cifar10/create_cifar10.sh
但我还是遇到了好多坑┭┮﹏┭┮,总结一下,仅供参考,欢迎大家批评指正。
首先下载数据
sudo sh data/cifar10/get_cifar10.sh
ps:
我是在服务器上跑的,用户没有sudo权限,执行的是
chmod +x data/cifar10/get_cifar10.sh
(我这里不知道为什么不执行,那就只好打开看看get_cifar10.sh里面的内容了)
只能分步执行了,下载cifar10数据:
wget --no-check-certificate http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
解压
tar -xf cifar-10-binary.tar.gz
后面rm是删除,可以先保留,mv是移动,最后生成几个bin文件,类似这样:
data_batch_1.bin到data_batch_5.bin就是分成了5份的50000张训练集图片。test_batch.bin是测试集图片,共10000张。
batches.meta.txt里面说明整个cifar-10数据集所包括的10个事物类别。
再转换数据格式为lmdb
sudo sh examples/cifar10/create_cifar10.sh
同样的问题,还是不能执行。。。。打开create_cifar10.sh
忽略rm步,分步执行
./build/examples/cifar10/convert_cifar_data.bin data/cifar10 examples/cifar10 lmdb
然鹅失败了
试着执行下一步看看效果:
./build/tools/compute_image_mean -backend=lmdb examples/cifar10/cifar10_train_lmdb examples/cifar10/mean.binaryproto
错误是File not found: examples/cifar10/mean.binaryproto
解决:感谢https://www.cnblogs.com/beihaidao/p/6127605.html
caffe中使用的均值数据格式是binaryproto, 作者为我们提供了一个计算均值的文件compute_image_mean.cpp,放在caffe根目录下的tools文件夹里面。编译后的可执行体放在 build/tools/ 下面,我们直接调用就可以了。生成均值文件:
sudo build/tools/compute_image_mean examples/cifar10/cifar10_train_lmdb examples/cifar10/mean.binaryproto
之后再执行create_cifar10.sh里面的代码就可以啦
examples/cifar10文件夹下生成两个文件夹cifar10_train_lmdb、cifar10_test_lmdb和mean.binaryproto,即我们需要的。
节省时间进行快速迭代:
第一个阶段(迭代4000次)调用配置文件cifar10_quick_solver.prototxt, 学习率(base_lr)为0.001
第二阶段(迭代1000次)调用配置文件cifar10_quick_solver_lr1.prototxt, 学习率(base_lr)为0.0001
sudo sh examples/cifar10/train_quick.sh
我还是执行不了。。。so执行
./build/tools/caffe train --solver=examples/cifar10/cifar10_quick_solver.prototxt -gpu 1
终于好了!