caffe下训练自己的图片

深度学习使用的框架有很多,我第一个接触的是caffe。现在比较广泛使用的应该是TensorFlow。不管使用什么框架,都只是一个工具而已。如果原理懂了,每个框架几乎都是差不多的。学习的目的肯定是要用到自己的实际项目中,训练自己的模型等。所以本篇介绍一下在windows下如何用caffe去训练自己的图片。

第一,准备数据

既然是训练自己的图片,这里的数据肯定是你自己的。每个人都不一样。为了简单,我就在我电脑里已有的图片中,随便抽出了两类。一类是bus,另一类是horse。(忘了在哪儿下的这些图片了,尴尬…)
bus图片:
这里写图片描述
horse图片:
这里写图片描述

第二,生成标签

随便用什么方法(cmd命令也可以,python脚本也行),只要生成如下的标签就可以。前面是图片的名字,后面是对应的标签。比如1是bus,0是horse。
* 注意:这里要生成训练数据和测试数据,可以分别起名为train.txt,test.txt
这里写图片描述

第三,生成lmdb

在这里需要用到VS2015和Cmake编译如下的exe文件。具体编译方法,我找时间补充在Windows下配置caffe里。

编译过后,利用cmd进入这个目录并执行如下命令生成训练用lmdb:

conver_imageset.exe \
--shuffle \
--resize_height=32 \
--resize_width=32 \
your_image_path \
path/train.txt \
path/img_train_lmdb

第一个参数,要执行的exe文件
第二个参数,是否要打乱顺序,如果要打乱就加这个参数
第三个,第四个参数,要resize的图片尺寸,这里我要用网络模型cifar,所以resize到了32
第五个参数,是放图片的路径
第六个参数,是生成的train.txt的路径和文件名
第七个参数,是要把生成的lmdb保存到什么地方。
测试用lmdb也是一样的,只需要把第五个参数到第七个参数更改一下就可以。(补充,还有–gray参数,如果想要生成单通道的lmdb可以加这个参数)。最后就会生成如下的文件夹:

第四,生成均值文件

还是在编译后的目录下,用cmd执行如下命令:

compute_image_mean.exe  path/img_train_lmdb  path/mean.binaryproto

第一个参数,要执行的exe文件
第二个参数,生成的lmbd文件路径
第三个参数,要把生成的均值文件保存在什么地方。

第五,准备prototxt文件

caffe根目录下有一个example/cifar文件夹,进入后我们用下面标记起来的两个文件cifar10_quick_solver.prototxt 和 cifar10_quick_train_test.prototxt。

(1)更改cifar10_quick_solver.prototxt文件

下面是我改的文件,上面全都加了中文注释。特别要说明的是这里的iter和在其他地方所看到的epoch不是一回事。我刚开始就把这两个混淆了。 (这里的net和snapshot请改为自己的路径)
这里写图片描述

(2)更改cifar10_quick_train_test.prototxt文件
这个文件里写的就是网络结构,我们只需要微调一下就可以。第一个地方就是下面标记的几个地方,均值文件的路径还有lmdb的文件。
batch_size可以通过数据量以及内存的大小去调整。
这里写图片描述
还有就是ip2层中的输出要改一下,因为cifar10分为10类,我们这里就只涉及两类(bus, horse)。所以,改为2即可。
这里写图片描述

这样,我们的训练准备工作就都完成了。

第六,训练和测试

在上面编译好的路径下,用cmd命令执行如下命令:

caffe.exe train -solver examples/cifar10/cifar10_quick_solver.prototxt

运行后不出意外的话,就会开始训练,如果报错,就要具体问题具体分析了。

最后的accuracy为:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值