macOS Sierra (10.12.4)系统上Caffe借助现有的模型训练自己的数据集

Caffe代码中自带一些模型的例子,这些例子在源代码的models目录下,这些都是其他项目中用来训练的配置文件,学习的时候,我们没有必要完全自己从头到尾搭建自己的网络模型,而是直接使用例子中的模型,后期在这些模型上简单调整一下,一般可以满足大多数的需求。

下面我们以models/bvlc_alexnet目录下的模型配置文件为例子,训练我们自己的神经网络。

这个目录下有四个文件,如下图:

简单介绍一下这个几个文件:
train_val.prototxt用来定义训练神经网络时候的模型信息,主要定义训练时候的神经网络应该如何构造,比如分多少层,每层的行为是什么。
solver.prototxt用来定义神经网络运行的参数,比如使用CPU还是GPU,神经网络的配置文件(train_val.prototxt)的位置,以及文件名。
deploy.prototxt用来定义使用神经网络识别图片的时候使用的网络定义文件,一般是train_val.prototxt简单修改后得到的。

介绍完成神经网络模型,我们接下来需要提供我们的训练图片,用来让神经网络根据我们指定的图片进行学习。

我们以iPad上的植物大战僵尸的资源图片为例子,让Caffe帮我们识别哪些是僵尸,哪些是植物。完整的例子可以从这里下载

简单讲一下图片目录,其中的train目录下的图片为训练的图片,而detect目录为用来测试识别的图片。

本次,我们在新建的examples/PlantsVsZombies这个目录下进行操作。操作之前请参照macOS Sierra (10.12.3)编译Caffe保证可以成功编译Caffe

注意由于我们使用现有的神经网络模型来训练数据,因此,我们只需要提供训练图片集合就可以了,不需要提供验证图片集合,这个集合是用来调教神经网络配置文件的,我们已经有了配置好的文件,就没必要再重新调教神经网络配置了。

1.生成训练图片的索引文件train.txt,里面的内容如下:

注意后面的索引编号对应我们下面的标签文件的索引序号。

2.生成标签文件labels.txt,用来描述图片的内容:

3.整合图片以及描述信息为lmdb格式,方便Caffe进行高性能的IO操作:
examples/PlantsVsZombies目录下创建create_images.sh脚本,脚本内容如下:

在代码的根目录下执行如下脚本:

4.生成图片均值文件,提高训练效率

examples/PlantsVsZombies目录下创建make_mean.sh脚本,脚本内容如下:

在代码的根目录下执行如下脚本:

5.拷贝代码中的models/bvlc_alexnet中的文件到我们自己的工程目录中,并进行修改

修改配置信息

原始内容为:

修改为:

继续调整

原始内容为:

修改后为:

本质上就是调整均值文件,数据库的路径。另外就是

这部分是分类的数量,我们目前只有两个分类,因此,把num_output:1000ImageNet1000个分类)调整为num_output:2
上面的参数,同样需要调整deploy.prototxt里面的num_output里面的参数。

6.训练神经网络
examples/PlantsVsZombies目录下创建train_alexnet.sh脚本,脚本内容如下:

代码的根目录下执行

整个执行过程差不多需要28分钟左右才算是处理完成。

7.用植物碎片验证分类结果

输出结果如下:

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注