1.整理得到自己的数据库,并生成自己数据库的列表文件.txt

2.将数据库转成lmbp格式

3.计算图像均值

4.修改网络参数

5.得到结果

1.整理得到自己的数据库

因为前面博文提到的原因,技术水平有限没办法实现主机和虚拟机之间的文件共享,就暂时先用比较麻烦的方法。现在主机上整理好需要的数据集

一共四个文件:两个图像库文件夹----测试、校正 ;两个图像库列表文件----测试、校

caffe 训练imagenet

测试图像库文件夹中根据自己的分类类别在进行分类,比如我是用的两个类别,所以在测试图像库文件夹中还有两个文件夹:分别存放两个类别的图像

caffe 训练imagenet

校正图像库文件夹中不用按照类别分类

列表文件为.txt文件,一共两个文件,其中存放的是文件名+对应的图像类别

caffe 训练imagenet

caffe 训练imagenet

特别注意:

1.train.txt和val.txt中是所有的训练图像库的数据,存放的信息为:文件名(空格)类别

2.对于train.txt一定要把上层目录也要添加到文档中,因为后面再脚本执行命令的时候,给的路径只是到/train,后面的子路径是木有,如果train.txt中不添加路径会报错找不到文件

在主机中整理好文件后,在caffe-master/data目录下新建mydata文件夹,并将文件夹的权限更改为可写(利用命令chmod go+w filename)

caffe 训练imagenet

直接将主机中的文件复制粘贴到mydata目录下即可

caffe 训练imagenet

2.将数据库转成lmbp格式

在caffe-master/examples目录下新建mytask文件并修改mytask文件的权限(sudo chomd go+w mytask),复制caffe-master/examples/imagenet目录下面的create_imagenet.sh脚本到mytask目录下(sudo cp create_imagenet.sh /caffe-master/examples/mytask ,先cd到create_imagenet.sh所在的目录下)

caffe 训练imagenet

修改create_imagenet.sh脚本的权限 (sudo chmod go+w filename),修改脚本命令

修改前的脚本命令如下

caffe 训练imagenet

修改后的脚本命令如下

caffe 训练imagenet

绿框中为修改的部分,其实就是更改相应的目录,第一步的时候生成的.txt如果没有子目录就会报错,原因就在这里

修改后保存退出,然后执行脚本。可以看到会在mytask文件下生成两个文件,bingo

caffe 训练imagenet

3.计算图像均值

直接利用/caffe-master/examples/imagenet中的计算均值的脚本make_imagenet_mean.sh,复制脚本到mytask目录下.进行如下修改,修改后运行。

caffe 训练imagenet

caffe 训练imagenet

运行后悲剧了,,,报错,,,查了原因竟然是内存溢出。。。。。醉了。。。。虚拟机果然是不给力呀。。。

后面的两步只能是理论指导了,,,个人也木有实践

4.修改网络的参数

caffe-master/model/bvlc_reference_caffenet中的所有文件拷贝到mytask目录下,并对train_val.prototxt进行修改

caffe 训练imagenet

caffe 训练imagenet

如果你细心观察train_val.prototext,你会发现他们除了数据来源不同和最后一层不同,其他基本相同。在训练中,我们用一个softmax——loss层计算损失函数和初始化反向传播,而在验证,我们使用精度层检测我们的精度。

我们还有一个运行的协议solver.prototxt已经复制过来的文件,将第一行路径改为我们的路径 “examples/myself/train_val.prototxt”,从里面可以观察到,我们将运行256批次,迭代4500000次(90期),每1000次迭代,我们测试学习网络验证数据,我们设置初始的学习率为0.01,每100000(20期)次迭代减少学习率,显示一次信息,训练的weight_decay为0.0005,每10000次迭代,我们显示一下当前状态。 

以上是教程的,实际上,以上需要耗费很长时间,因此,我们稍微改一下 

test_iter: 1000是指测试的批次,我们就10张照片,设置10就可以了。 

test_interval: 1000是指每1000次迭代测试一次,我们改成500次测试一次。 

base_lr: 0.01是基础学习率,因为数据量小,0.01就会下降太快了,因此改成0.001 

lr_policy: “step”学习率变化 

gamma: 0.1学习率变化的比率 

stepsize: 100000每100000次迭代减少学习率 

display: 20每20层显示一次 

max_iter: 450000最大迭代次数, 

momentum: 0.9学习的参数,不用变 

weight_decay: 0.0005学习的参数,不用变 

snapshot: 10000每迭代10000次显示状态,这里改为2000次 

solver_mode: GPU末尾加一行,代表用GPU进行(如果使用的CPU就改成CPU即可

caffe 训练imagenet

5.训练得到结果

将caffe-master/examples/imagenet中的train_caffnet.sh脚本拷贝到mytask目录下,修改脚本--修改目录 具体修改如下,修改完成后运行 静静等待结果即可

caffe 训练imagenet

caffe 训练imagenet

因为我的机器没办法跑,报内存溢出错误,就没办法给大家贴图了。