超详细caffe安装与mnist、cifar-10训练测试教程

Windowscaffe安装详解(cpu +matcaffe+pycaffe)

 


运行环境VS2013

1、caffe下载:https://github.com/happynear/caffe-windows

2、caffe下载后解压到指定文件夹,进入caffe的windows目录(比如,D:\caffe-master\windows),将该目录下的CommonSettings.props.example复制一个并改名为CommonSettings.props,同样还是放在当前目录下。

3、上面两图为原始的CommonSettings.props.example,下面两图为需要修改的CommonSettings.props。

cpu模式的配置:

CommonSettings.props.example



CommonSettings.props


4、点击D:\caffe-master\windows该目录下的Caffe.sln用VS2013打开。这里由于别的模块用到了libcaffe,所以,首先选择libcaffe,右键生成。成功之后,再选择整个解决方案,右键生成解决方案。

5、点击caffe->caffe.cpp,按F5运行,生成如下界面,证明安装成功。同时在根目录下面会生成相应的exe,lib,dll等文件。


遇到的错误解决方法:

①错误:错误       1       errorC1083: 无法打开包括文件: “pyconfig.h”: No such file or directory(..\..\src\caffe\layer_factory.cpp)         D:\NugetPackages\boost.1.59.0.0\lib\native\include\boost\python\detail\wrap_python.hpp 50     1       libcaffe

原因:python路径不对

修改为:


②错误    298  errorC1083: 无法打开包括文件: “gpu/mxGPUArray.h”: No suchfile or directory         D:\caffe-master\matlab\+caffe\private\caffe_.cpp    16     1       matcaffe

原因:matlab版本太高,gpu相关的文件路径被改

修改前:


修改后:

③Nuget会提示下载一些东西,包括是boost,opencv2.4.10,gflags,glog,hdf5,lmdb,LevelDB,OpenBLAS,protobuf等预编译的依赖包。过程有点慢,多等会就ok。下载完成后会在caffe的同级目录生成NugetPackages的文件。

④错误 5error MSB4062: 未能从程序集 S:\NugetPackages\OpenCV.2.4.10\build\native\\private\coapp.NuGetNativeMSBuildTasks.dll 加载任务“NuGetPackageOverlay”。未能加载文件或程序集“file:///S:\NugetPackages\OpenCV.2.4.10\build\native\private\coapp.NuGetNativeMSBuildTasks.dll”或它的某一个依赖项。系统找不到指定的文件。 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。 S:\NugetPackages\OpenCV.2.4.10\build\native\OpenCV.targets 768 5libcaffe

原因:NugetPackages文件夹里的OpenCV.2.4.10的文件有误

修改:删除NugetPackages文件夹,重新生成libcaffe的解决方案。得到新的NugetPackages文件夹。(只用到CPU的情况)

⑤出现没有生成object文件的错误,双击该错误,点击确定,然后保存即可。

 

1、mnist测试(利用lenet网络)

Step1:下载mnist数据集,网址:http://yann.lecun.com/exdb/mnist/

数据特点:

将下载好的数据集解压至caffe-master\data\mnist目录下。

建立如图所示的文件夹

                                     


Step2:在caffe根目录下,新建一个create_mnist.bat,里面写入如下的脚本。然后双击该脚本运行,则在.\examples\mnist文件夹下生成lmdb文件。

.\Build\x64\Release\convert_mnist_data.exe.\data\mnist\mnist_train_lmdb\train-images.idx3-ubyte.\data\mnist\mnist_train_lmdb\train-labels.idx1-ubyte.\examples\mnist\mnist_train_lmdb

echo.

.\Build\x64\Release\convert_mnist_data.exe.\data\mnist\mnist_test_lmdb\t10k-images.idx3-ubyte  .\data\mnist\mnist_test_lmdb\t10k-labels.idx1-ubyte.\examples\mnist\mnist_test_lmdb

pause

运行结果:

         

 

Step3:修改.. \examples\mnist\lenet_solver.prototxt,将最后一行改为solver_mode:CPU,

如下所示,左面为原始的,右面为修改后的。

    

计算均值文件:在D:\caffe-master\Build\x64\Release目录下新建bat文件mnist_mean.bat,内容如下

compute_image_mean.exeD:\caffe-master\examples\mnist\mnist_train_lmdbD:\caffe-master\examples\mnist\mean.binaryproto

pause

在..\examples\mnist目录下得到mean.binaryproto

修改此文件夹下的训练方法lenet_train_test.prototxt的前两层,就是在原来的基础上把均值文件加进去。(左图为修改前,右图为修改后)

                       

Step4:在caffe根目录下建立文件train_mnist.bat,然后输入如下的脚本,

双击运行,就会开始训练,训练完毕后会得到相应的准确率和损失率。直到出现下面的页面时,说明训练已经完成。(Optimization Done

Step5:在caffe根目录下建立文件test_mnist.bat,然后输入如下的脚本,

Build\x64\Release\caffe.exetest --model=examples\mnist\lenet_train_test.prototxt-weights=examples\mnist\lenet_iter_10000.caffemodel

pause

双击运行,显示出来结果(准确率为0.9874,损失率为0.040711):

MNIST训练生产的模型进行手写数字进行测试

Step1:制作手写数字样本。打开电脑画图工具,重新调整大小,点击像素,水平和竖直的值置为28。再点击保持纵横比。

 

将画好0到9的数字依次保存到文件夹RGBnumbers,然后用matlab软件进行格式的转换。(转换原因:画图工具中手写数字依然是三通道的RGB图像,用matlab软件将他们转换成二值图像),转换代码如下:

所有的二值图像都将保存到指定目录下的binarybmp文件夹下。

Step2:把转换好的二值图像拷贝到D:\caffe-master\examples\mnist\

在D:\caffe-master\examples\mnist下建立标签文件synset_words.txt(注意不能有空行出现,必须是10行数字,可以打乱顺序,不一定是从小到大排序):

调用classification.exe去识别某张图片,D: \caffe-master目录新建mnist_class.bat,输入如下脚本:

D:\caffe-master\Build\x64\Release\classification.exe  D:\caffe-master\examples\mnist\lenet.prototxt  D:\caffe-master\examples\mnist\lenet_iter_10000.caffemodelD:\caffe-master\examples\mnist\mean.binaryprotoD:\caffe-master\examples\mnist\synset_words.txtD:\caffe-master\examples\mnist\binarybmp\0.bmp

Pause

双击运行,得到下面的结果,至此测试结束。

2、cifar-10测试

Step1:下载cifar-10数据集,网址:http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz

然后解压到caffe-master\data\cifar10目录下。


Step2:在caffe-master根目录下建立create_cifar10.bat文件,输入以下脚本:

双击后运行,在example\cifar10文件夹下产生cifar-10的训练数据和测试数据,如下图

   

Step3:计算图像均值

在D:\caffe-master\Build\x64\Release目录下建立cifar10_mean.bat文件,输入以下脚本:

于是,在D:\caffe-master\examples\cifar10目录下产生mean.binaryproto文件。

 由于我们所采用的平台没有英伟达的GPU,故只能采用CPU进行训练,所以将cifar10_quick_solver.prototxt和cifar10_quick_solver_lr1.prototxt中的solver_mode:GPU均改为solver_mode:CPU。

左图为修改前,右图为修改后:

         

  

Step4:训练

在D:\caffe-master目录下建立train_cifar10.bat文件,输入以下脚本:

上述命令执行完毕后会在D:\caffe-master\examples\cifar10下生成cifar10_quick_iter_4000.caffemodel.h5以及cifar10_quick_iter_4000.solverstate.h5两个文件,其中cifar10_quick_iter_4000.solverstate.h5将在进一步的训练中使用到,而cifar10_quick_iter_4000.caffemodel.h5模型权值文件可用于数据集的测试(此处可不用,因为还有下面更深层的训练,会生成更深层的模型权值文件cifar10_quick_iter_5000.caffemodel.h5)。

下面将对配置文件中的内容进行简单说明或解释:

net:用于训练、预测的网络描述文件

test_iter:预测阶段迭代次数

test_interval:训练时每迭代多少次,进行一次预测

base_lrmomentumweight_delay:网络的基础学习速率、冲量和权衰量

lr_policy:学习速率的衰减策略

display:每经过多少次迭代,在屏幕上打印一次运行日志

max_iter:最大迭代次数

snapshot:每多少次迭代打印一次快照

solver_modecaffe的求解模式,根据实际情况选择GPUCPU

总结一下训练一个网络用到的相关文件:

·        1:cifar10_quick_solver.prototxt:方案配置,用于配置迭代次数等信息,训练时直接调用caffe.exe train指定这个文件,就会开始训练

·        2:cifar10_quick_train_test.prototxt:训练网络配置,用来设置训练用的网络,这个文件的名字会在solver.prototxt里指定

·        3:cifar10_quick_iter_4000.caffemodel.h5:训练出来的模型,后面就用这个模型来做分类

·        4:cifar10_quick_iter_4000.solverstate.h5:也是训练出来的,应该是用来中断后继续训练用的文件

·        5:cifar10_quick.prototxt:分类用的网络

在D:\caffe-master目录下建立train_cifar10(1).bat文件,输入以下脚本:

.\Build\x64\Release\caffe.exetrain --solver=D:/caffe-master/examples/cifar10/cifar10_quick_solver_lr1.prototxt --snapshot=D:/caffe-master/examples/cifar10/cifar10_quick_iter_4000.solverstate.h5

pause

双击运行得到下面的结果:

 

在D:\caffe-master\examples\cifar10目录下创建文件synset_words.txt,并写入以下脚本:

Step5测试:

在D:\caffe-master目录下建立文件test_cifar10.bat,并写入以下信息:

Build\x64\Release\caffe.exetest -model examples/cifar10/cifar10_quick_train_test.prototxt  -weights examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5-iterations 100

pause

双击后得到预测结果:

测试准确率为0.7147

在D:\caffe-master目录下建立文件test_cifar10(1).bat,并写入以下信息:

Build\x64\Release\caffe.exetest -model examples/cifar10/cifar10_quick_train_test.prototxt  -weightsexamples/cifar10/cifar10_quick_iter_5000.caffemodel.h5 -iterations 100

pause

双击后得到预测结果:

测试准确率为0.7544

在D:\caffe-master目录下建立文件cifar10_class.bat,并写入以下信息:

D:\caffe-master\Build\x64\Release\classification.exeD:\caffe-master\examples\cifar10\cifar10_quick.prototxt D:\caffe-master\examples\cifar10\cifar10_quick_iter_4000.caffemodel.h5D:\caffe-master\examples\cifar10\mean.binaryprotoD:\caffe-master\examples\cifar10\synset_words.txtD:\caffe-master\examples\images\cat_gray.jpg

pause

双击后得到分类结果:

猫的概率0.3202

在D:\caffe-master目录下建立文件cifar10_class(1).bat,并写入以下信息:

D:\caffe-master\Build\x64\Release\classification.exeD:\caffe-master\examples\cifar10\cifar10_quick.prototxt D:\caffe-master\examples\cifar10\cifar10_quick_iter_5000.caffemodel.h5D:\caffe-master\examples\cifar10\mean.binaryproto D:\caffe-master\examples\cifar10\synset_words.txtD:\caffe-master\examples\images\cat_gray.jpg

pause

双击后得到分类结果:

猫的概率为0.5034.

从分类结果可以看出,训练迭代次数越多,那么最后测试的准确率越高,同时分类的结果也越好。




猜你喜欢

转载自blog.csdn.net/weixin_37753215/article/details/80092789