使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

时间:2023-03-08 17:22:02
使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

  1.在开始之前,先简单回顾一下几个概念。

Caffe(Convolution Architecture For Feature Extraction-卷积神经网络框架):是一个清晰,可读性高,快速的深度学习框架。

CUDA(Compute Unifined Device Architecture-计算统一设备框架):是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

CuDNN( CUDA Deep Neural Network library):是NVIDIA专门针对深度神经网络设计的一套GPU计算加速库,被广泛用于各种深度学习框架,例如Caffe, TensorFlow, Theano, Torch, CNTK等。

  2.Caffe的安装可参考一下博客:

http://www.cnblogs.com/hust-yingjie/p/6525584.html

http://blog.csdn.net/zb1165048017/article/details/51549105

http://blog.csdn.net/zb1165048017/article/details/51355143

    3.安装过程出现的问题,以及解决方法,可参考:

http://www.cnblogs.com/hust-yingjie/p/6515213.html

Caffe.sln中的16个工程编译成功,会生成12个.exe,如下图所示:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

  4.下面具体介绍基于Window训练自己的模型,并进行分类

4.1 第一步:制作Label标签文件,并利用convert_imageset.exe将图片转换为Caffe的数据格式LEVELDB格式或者lmdb格式。

训练样本的标签文件TrainLabel.txt如下图所示:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

测试样本的标签文件TestLabel.txt如下图所示:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

此时需重新生成一下convert_imageset.exe文件,具体见http://www.cnblogs.com/hust-yingjie/p/6526419.html

可根据实际情况执行convert_imageset.exe文件,其参数信息可打开convert_imageset.cpp查看,下面是我执行其的批处理文件,测试样本集类似:

SET GLOG_logtostderr=1
E:\CaffeGPU\caffe-master\caffe-master\Build\x64\Release\convert_imageset.exe --backend=leveldb --resize_width=32 --resize_height=32 E:\MyCaffe E:\MyCaffe\TrainSet\TrainLabel.txt E:\MyCaffe\Trainleveldb
pause

正确执行后,你会看到如下界面:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

执行上述过程,可能出现以下两种情况,如下图所示:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

上面两种错误,都是由于路径错误导致,所以这里一定要注意。还有一种错误,解决比较简单,见下图:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

成功后,会生成一个Trainleveldb文件夹,里面有如下内容:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

4.2 第二步:基于LEVELDB文件利用compute_image_mean.exe获取均值文件Mean.binaryproto

可参考以下批处理文件执行compute_image_mean.exe,具体如下:

SET GLOG_logtostderr=1
E:\CaffeGPU\caffe-master\caffe-master\Build\x64\Release\convert_imageset.exe --backend=leveldb --resize_width=256 --resize_height=256 E:\MyCaffe E:\MyCaffe\TrainSet\TrainLabel.txt E:\MyCaffe\Trainleveldb
pause

正确执行后的效果如下图所示:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

4.3 第三步:定义网络结构并进行训练

在安装的Caffe目录下找到\models\bvlc_alexnet文件夹,里面有如下内容:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

将最后两个文件拷贝到自己的工程目录下,并做一下修改:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

如果你使用的LMDB文件格式,就不需要修改backend,否则就需修改为LEVELDB数据格式。

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

4.4 第四步:利用Caffe.exe文件训练AlexNet模型网络

基于第三步的两个文件,执行Caffe.exe文件,可参考下面批处理文件,具体如下:

E:\CaffeGPU\caffe-master\caffe-master\Build\x64\Release\caffe.exe train --solver=E:/MyCaffe/Train_Test/Alexnet/solver.prototxt
pause

正确执行的效果,如下图所示:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

可参考:http://m.blog.csdn.net/article/details?id=51001536

4.5 第五步:测试模型

上述步骤完成后,会得到两个文件,第一个caffemodel是训练完毕得到的模型参数文件,第二个solverstate是训练中断以后,可以用此文件从中断地方继续训练,具体如下所示:

使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类

后面的操作参考:http://blog.csdn.net/zb1165048017/article/details/51483206