本文主要介绍官方给出的caffe-windows的配置及如何训练mnist数据集,介绍的比较基础,大神请绕道
1、环境:windows 10\CUDA7.5\cuDNN\VS2013
2、GPU计算环境准备(没有GPU的同学可以跳过此步)
(1)首先下载并安装CUDA7.5,下载界面如图1:
图 1:CUDA7.5的下载界面
(2)下载cuDNN,注意要下载cuDNN v4版本,下载界面如图2:
图 2:cuDNN的下载界面
官网下载cuDNN需要先注册,而且要填一些调查表,也可以在我上传的资源中下载。下载后解压会有三个文件夹bin、include、lib。将这三个文件夹复制到cuda的安装目录中:\NVIDIA GPU ComputingToolkit\CUDA\v7.5。(cuda的安装目录中也有这三个文件夹,将这三个文件夹分别与原来存在的文件夹合并,如3图所示)。
图 3:CUDA 7.5 安装的根目录
3、caffe-windows准备
(1)下载官方caffe-windows并解压,将 .\windows\CommonSettings.props.example备份,并改名为CommonSettings.props。如图4所示:
图 4:修改后的CommonSettings.props文件
(2)关于CommonSettings.props文件的一点说明。
$(SolutionDir)..\Build false true 7.5 false false compute_35,sm_35;compute_52,sm_52 $(SolutionDir)\scripts cublas.lib;cuda.lib;curand.lib;cudart.lib cudnn.lib;$(CudaDependencies) $(CuDnnPath)\cuda\lib\x64;$(LibraryPath) $(CuDnnPath)\cuda\include;$(IncludePath) $(BuildDir)\$(Platform)\$(Configuration)\ $(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\ $(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath) $(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath) C:\Miniconda2\ $(PythonDir)\libs;$(LibraryPath) $(PythonDir)\include;$(IncludePath) C:\Program Files\MATLAB\R2014b $(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath) $(MatlabDir)\extern\include;$(IncludePath) CPU_ONLY;%(PreprocessorDefinitions) USE_CUDNN;%(PreprocessorDefinitions) USE_CUDNN WITH_PYTHON_LAYER;BOOST_PYTHON_STATIC_LIB;%(PreprocessorDefinitions) MATLAB_MEX_FILE;%(PreprocessorDefinitions) false true _SCL_SECURE_NO_WARNINGS;USE_OPENCV;USE_LEVELDB;USE_LMDB;%(PreprocessorDefinitions) true Full NDEBUG;%(PreprocessorDefinitions) MultiThreadedDLL true true true UseLinkTimeCodeGeneration true Disabled _DEBUG;%(PreprocessorDefinitions) MultiThreadedDebugDLL true
4、编译caffe-windows
编译用vs2013打开.\windows\Caffe.sln 并将解决方案的配置改为release,点菜单栏上的“生成->生成解决方案”,会将整个项目全部生成,这个时间会比较长(由于官方caffe-windows 的版本使用了NuGet管理第三方开发包,所以需要在vs2013上安装NuGet,官方网站下载速度比较慢,可以在我的资源里下载)。生成成功之后的文件都在.\Build\x64\Release中。
PS:生成时可能遇到的错误:errorC2220: 警告被视为错误 - 没有生成“object”文件 (..\..\src\caffe\util\math_functions.cpp)。这个错误可参考Sunshine_in_Moon 的解决方案。
5、测试
1)下载MNIST数据集,MNIST数据集包含四个文件,如表1所示:
表1:MNIST数据集及其文件解释
文件 |
内容 |
|
训练集图片 - 55000 张 训练图片, 5000 张 验证图片 |
|
训练集图片对应的数字标签 |
|
测试集图片 - 10000 张 图片 |
|
测试集图片对应的数字标签 |
2)转换 训练\测试数据
a) 中的四个文件放到 . \examples\mnist\mnist_data文件夹下。
b) 在caffe-windows安装的根目录下,新建一个convert-mnist-data-train.bat文件转换为训练数据,并在文件中添加代码:
Build\x64\Release\convert_mnist_data.exe --backend=lmdbexamples\mnist\mnist_data\train-images.idx3-ubyteexamples\mnist\mnist_data\train-labels.idx1-ubyte examples\mnist\mnist_data\mnist_train_lmdb
pause
其中--backend=lmdb 表示转换为lmdb格式,若要转换为leveldb将其改写为--backend=leveldb 即可。
再新建一个convert-mnist-data-test.bat转换测试数据,代码为:
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
Ps:(1)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
(2)如果感觉很麻烦,也可以直接下载我转换好的MNIST文件(leveldb和lmdb)。
3)运行测试
(1)将第2)步中转换好的训练\测试数据集(mnist_train_lmdb\ mnist_train_lmdb或mnist_train_leveldb\mnist_train_leveldb)文件夹放在.\examples\mnist中。
(2)在caffe-windows根目录下新建一个run.bat,文件中代码:
Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt
pause
保存并双击运行,如果运行成功,说明caffe配置成功了。
注意:使用leveldb或lmdb格式的数据时,需要将lenet_train_test.prototxt 文件里面的data_param-> source和data_param-> backend相对应,如图5红框所标注处。图 5:lenet_train_test.prototxt文件中需要注意与训练\测试数据对应的部分
4)训练自己的数据
这部分可以参考下面的几个博客:
1.在caffe上跑自己的数据
2.windows下caffe训练自己的数据
References
BVLC/caffe
从零到一:caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel
Windows+VS2013爆详细Caffe编译安装教程
【caffe-Windows】caffe+VS2013+Windows无GPU快速配置教程