从看起来最好玩的cifar10开始。
cifar10数据集包括60000张32*32*3的图片,这些图片分为10类,分别是飞机、汽车、鸟、猫、狗、鹿、青蛙、马、船、卡车。
数据集下载地址:http://www.cs.toronto.edu/~kriz/cifar.html
下载二进制文件,解压后可以看到文件夹里有6个.bin文件,是60000张图片,每个batch包括10000张图片;
batches.meta.txt双击打开后可以看到里面有10类,注意这一行不要回车分开,另外不要回车,保证除了这一行下面没有其他的东西。
在\caffe-master\examples\cifar10下面新建一个cifar10_binary文件夹存放.bin文件,将batches.meta.txt拷到\caffe-master\examples\cifar10下面
将图片转化为lmdb格式(leveldb也可以):我这里新建了一个bat文件夹,把脚本文件都放在这里面,另外我全部用的是绝对路径,保证不在路径上犯错误(脚本文件只要新建一个文本文件,复制下面的内容,在把名字改成XXX.bat就可以双击运行了),然后可以看到在\caffe-master\examples\cifar10下面生成了lmdb文件(leveldb个格式只要把lmdb改成leveldb就可以)
E:\caffe\caffe-master\Build\x64\Release\convert_cifar_data.exe E:\caffe\caffe-master\examples\cifar10\cifar10_binary E:\caffe\caffe-master\examples\cifar10 lmdb
然后是mean文件,同样写个脚本,生成数据均值文件
E:\caffe\caffe-master\Build\x64\Release\compute_image_mean.exe -backend=lmdb E:\caffe\caffe-master\examples\cifar10\cifar10_train_lmdb E:\caffe\caffe-master\examples\cifar10\mean_train.binaryproto
E:\caffe\caffe-master\Build\x64\Release\compute_image_mean.exe -backend=lmdb E:\caffe\caffe-master\examples\cifar10\cifar10_test_lmdb E:\caffe\caffe-master\examples\cifar10\mean_test.binaryproto
用vs2013打开cifar10_quick_train_test.prototxt(网络模型描述文件)和cifar10_quick_solver.prototxt(超参数配置文件),cifar10_quick_train_test.prototxt中可以看到所用网络的相关信息,在cifar10_quick_solver.prototxt中我们可以修改参数调整网络,在这里不做太多修改。
上面选择cifar10_quick_train_test.prototxt和cifar10_quick_solver.prototxt训练起来快一点,也可以选择cifar10_full_train_test.prototxt和cifar10_full_solver.prototxt,只要注意quick对应quick,full对应full,不要弄混了。
修改cifar10_quick_train_test.prototxt文件路径(改成自己放图片的路径),如果前面生成的是leveldb文件,则还要把backend: LMDB改成backend: LEVELDB
修改cifar10_quick_solver.prototxt文件,不用GPU的改成CPU,我这里把快照格式注释掉了,如果不注释训练生成的是.h5文件,这个也是可以的
改好保存后写脚本训练
E:\caffe\caffe-master\Build\x64\Release\caffe.exe train --solver=E:\caffe\caffe-master\examples\cifar10\cifar10_quick_solver.prototxt
pause
训练好了会生成两个文件
首先要自己做一张32*32的图片,在网上下载一张图片(比如一只猫),打开画图软件编辑,缩放为32*32就可以了,将这张图片放在cifar10文件夹下,编写脚本进行分类。
E:\caffe\caffe-master\Build\x64\Release\classification.exe E:\caffe\caffe-master\examples\cifar10\cifar10_quick.prototxt E:\caffe\caffe-master\examples\cifar10\cifar10_quick_iter_4000.caffemodel E:\caffe\caffe-master\examples\cifar10\mean_train.binaryproto E:\caffe\caffe-master\examples\cifar10\batches.meta.txt E:\caffe\caffe-master\examples\cifar10\test.jpg
pause
分类结果:
狗:0.7682
马:0.1101
猫:0.1008
可以看到,上面的图片是一只猫。猫:???这个模型到底对猫有什么误解,让我先哭会
另外附上错误总结:http://www.cnblogs.com/aimhabo/p/8721357.html,可以作为参考