您的位置:首页 > Web前端

Windows+CPU+Caffe配置与运行

2018-01-21 01:07 555 查看

一:目的

实现Windows版本Caffe(no GPU)的配置,并运行MNIST数据集以验证Caffe配置的正确性;

二:环境

1. Win 10(64位)
2. VS 2013

三:配置

1. Caffe-Windows下载;
(1) 下载Caffe-Windows,并解压,解压后如图所示;



值得注意的是,当前github中的版本没有对应的Windows文件夹,需要用cmake进行产生。这里提供一个之前的版本,解压完后就包含Windows文件夹。链接:https://pan.baidu.com/s/1nxggNSP 密码:344h
同样的,也可以在github上下载由微软提供的Caffe,后续的过程基本相同,链接为https://github.com/Microsoft/caffe

(2) 修改配置文件,将caffe-windows\windows\CommonSettings.props.example备份,并重命名为CommonSettings.props,编辑CommonSettings.props如下。



在这里主要是把CpuOnlyBuild设置为了true,把UseCuDNN设置为了false

2. 编译Caffe-Windows;

(1)  用VS2013打开caffe-windows\windows\Caffe.sln,修改其配置属性为x64,Release版本,生成解决方案即可。

(2)  由于官方caffe-windows 的版本使用了NuGet管理第三方开发包,所以用vs2013进行编译时候回自动安装NuGet(该过程较慢)。生成成功之后的文件都在.\Build\x64\Release中。



(3)编译过程中可能会出现一些错误,可以参考http://blog.csdn.net/wonder233/article/details/58255544的一些解决方案

(4) 如果不想让VS2013自动下载NuGet,这里提供一个打包好的下载链接,链接:https://pan.baidu.com/s/1kW2Vsc3 密码:yyvo,解压后放到与caffe-windows同级的目录下即可



四:测试(MNIST数据集)

1. 下载MNIST数据集,共包含四个文件,分别是训练集图像,训练集标签,测试集图像,测试集标签。关于MNIST数据集的介绍可参见http://blog.csdn.net/simple_the_best/article/details/75267863
2. 将数据集解压到caffe-windows\examples\mnist\mnist_data目录下,由于caffe只支持leveldb或lmdb文件格式,所以需要对该数据集进行数据格式转换。
3. 转换数据格式
(1) 在caffe-windows文件夹下创建mybat\mnist文件夹,用于存放bat文件
(2) 在caffe-windows\mybat\mnist文件夹新建convert-mnist-data.bat文件,用于数据格式的转换,内容如下

..\..\Build\x64\Release\convert_mnist_data.exe  --backend=lmdb ..\..\examples\mnist\mnist_data\train-images.idx3-ubyte ..\..\examples\mnist\mnist_data\train-labels.idx1-ubyte ..\..\examples\mnist\mnist_data\mnist_train_lmdb\
..\..\Build\x64\Release\convert_mnist_data.exe  --backend=lmdb ..\..\examples\mnist\mnist_data\t10k-images.idx3-ubyte ..\..\examples\mnist\mnist_data\t10k-labels.idx1-ubyte ..\..\examples\mnist\mnist_data\mnist_test_lmdb\
pause

转换为lmdb数据格式,同样的,也可以将其转换为leveldb格式,只需要在后续步骤中修改相应的配置即可。转换成功后,在caffe-windows\examples\mnist\mnist_data文件夹下出现两个文件夹,分别是mnist_test_lmdb和mnist_train_lmdb,里面的文件如下上述批处理语句是调用刚才convert_mnist_data.exe对mnist数据集进行格式转换,其中--backend=lmdb的意思是将mnist数据集



值得注意的是,这一步可能会check failed mdb_env_open(mdb_env, db_path, 0, 0664) == 0 (112 vs. 0) mdb_env_open failed的错误,解决方案是将

把convert_mnist_data.cpp里面的CHECK_EQ(mdb_env_set_mapsize(mdb_env,107374182),
MDB_SUCCESS)这一行代码中的数字改小一点,例如将其改为100M,具体可参考该链http://blog.csdn.net/ccemmawatson/article/details/51251061

(3) convert_mnist_data.exe的命令格式为:

convert_mnist_data [FLAGS] input_image_file input_label_file output_db_file

[FLAGS]:转换的文件格式可取leveldb或lmdb,示例:--backend=leveldb

Input_image_file:输入的图片文件,示例:train-images.idx3-ubyte

input_label_file:输入的图片标签文件,示例:train-labels.idx1-ubyte

output:保存输出文件的文件夹,示例:mnist_train_lmdb

4. 修改caffe-windows\examples\mnist\lenet_train_test.prototxt为如下



该文件是网络结构的配置文件,主要修改的地方有三个,分别为source,表示的是数据,选择刚才生成的数据即可。其次是batch_size,这部分可以根据自己计算机配置进行修改,第三个为backend,由于刚才生成的是LMDB格式,因此在这里将其改为LMDB(如果前面生成的是leveldb格式,这里需要对应的改为LEVELDB)

5. 修改caffe-windows\examples\mnist\lenet_solver.prototxt为如下



需要修改的部分为红框标注出来的部分,最后一部分选择solver mode为CPU

6. 开始训练

在caffe-windows\mybat\mnist文件夹新建run.bat文件,用于数据的训练,内容如下

..\..\Build\x64\Release\caffe.exe  train --solver=..\..\examples\mnist\lenet_solver.prototxt
pause

运行该bat文件,即可进行训练,训练结果如下所示



迭代10000次即可完成,enjoy!

参考:


Windows下caffe安装详解

官方Caffe-windows配置与示例运行
caffe windows学习第一步:编译与安装(VS2012+win64)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows Caffe CPU MNIST