Caffe for windows 训练cifar10数据集
关于如何在windows操作系统上安装和配置caffe的问题,可见链接:http://blog.csdn.net/mmmmmttttff/article/details/51023523(这里使用的是happynear版本)
我的本机环境如下:
操作系统版本 | Windows10-64.专业增强版 |
内存 | 8G |
CPU | 酷睿I7-8核 |
GPU | NVIDIA GTX960 |
CUDA | 7.0 |
CUDNN | v2.0 |
VS2013 | 64 |
(1) 安装配置成功
Happynear版本的ciffe 安装配置好之后,点击运行根目录下的run_mnist.bat脚本就可以进行训练mnist数据了。
(2)下载cifar-10-binary.tar.gz,解压后是bin后缀的二进制文件,保存到自己设置的路径下。
(3) 用VS打开.sln工程文件,可以看到如下:
注意:这里红笔标注的项目“convert_cifar_data”在happynear版本没有,是我自己添加的。很简单,重新创建一个空的win32控制台程序项目,创建之后更改为x64Release模式(因为之前都是在用这个模式,Debug模式下可能会出现一系列问题,这个确实有)之后仿照别的项目,例如”convert_mnist_data“,将一些必要的C++ include 和link需要添加的库都设置好。如图:
再将原来在root\examples\cifar10文件夹下的convert_cifar_data.cpp文件添加到该项目中,就可以编译了(只编译这一个项目就行)
(4)生成的convert_cifar_data.exe文件在bin文件夹下(和caffe.exe处在同一个目录中),这个就是我们要用的执行文件,专门处理cifar data.
(5) convert_cifar_data.exe该如何使用?这里我们可以在该目录下打开命令提示符窗口,输入convert_cifar_data.exe -help 回车,如下图所示:
红色标注部分的就是输入格式,“convert_cifar_data.exe 输入数据文件路径 输出数据文件路径 数据格式” 这里的数据格式指的是caffe支持的Leveldb和Lmdb两种格式,这里要写leveldb:
之后在文件夹data1下就可以看到:
打开文件夹查看文件,这个时候是这样的:
(6)我们还要将数据进行均值化处理,这就需要使用compute_image_mean.exe 执行文件了,调用如下:
其中-backend=”leveldb”指明数据的格式是leveldb,之后是刚才生成的训练数据集的路径,这里要注意必须是训练数据的路径,而不是val验证数据集的路径,最后是输出均值文件名,后缀是binaryproto。这里默认保存在当前路径下。
(7)配置网络文件
这个版本的网络配置文件有很多,我这里使用这个cifar10_quick_train_test.prototxt。打开之后修改一下训练数据和验证数据以及均值文件的路径即可:
注意同时也要修改设置数据的格式为LEVELDB (默认的是LMDB),保存。
(8) 训练和测试
由于上面使用了cifar10_quick_train_test.prototxt,对应的在模型训练设置文件上我们使用cifar10_quick_solver.prototxt,这里其实不需要修改内容,当然你也可以自己指定一些参数。
或者编写bat脚本或者直接在命令行窗口输入:
.\bin\caffe.exe train--solver=examples/cifar10/cifar10_quick_solver.prototxt 回车,就可以了。
要是想进行验证的话,可以修改命令为:
.\bin\caffe.exe test --model=examples/cifar10/cifar10_quick_train_test.prototxt
--weights=examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5-gpu=0
(这里使用了现在存在的model,并且使用GPU)
使用快照命令可以添加如下:
--snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate
总结:还是比较简单的步骤。确实在windows上是比较麻烦一些。只是我自己一个人研究了半天。。。