Windows Caffe 学习笔记(三)在Caffe上训练和测试自己的数据

来源:互联网 发布:animate cc 2015 mac 编辑:程序博客网 时间:2024/04/28 23:31

本文是学习Caffe官方文档"ImageNet Tutorial"时做的,同样由于是Windows版本的原因,很多shell脚本不能直接使用,走了不少弯路,但是收获也不少。比如:如何让shell脚本在Windows系统上直接运行、如何去用Caffe给图像resize来统一大小,如何去构建train.txt和val.txt等等。具体流程均记录如下。


正文:

1.准备数据

我从网上下载了两类图片,一类为猫,一类为鸟,分别存在名为bird和cat的文件夹里,每类60张(50张做为训练集,10张做为测试集)。【分开存放,在做train.txt时,方便打标签。等做完标签再将100张训练图片一起放在新建的train文件下里,下面会详述。】

猫:(已经过批量重命名。ps:我选图还是比较讲究的,不好看的、不清楚的、不奇怪的我不选,哈哈)


鸟:(已经过批量重命名)



2.构建train.txt和val.txt


首先是重命名图片,从搜索引擎下载下来的图片的名称都是则乱无章,我们需要用批量重命名的方法去先给它们命名。

批量重命名可以通过一个bat文件实现,代码如下:



修改其中的“bird”位置,运行。比如,我将“bird”改为“Cat”,运行bat文件,效果如下:




可以看到图片名字被统一的修改了,并且生成了一个list文件夹,通过txt文件的查找-替换,给每个文件打上标签(比如Cat为0,Bird为1),截图如下:


下面的工作自己做就行了,将cat和bird的txt文档,合在一起,组成train.txt。同理,完成val.txt。我的train.txt和val.txt的截图如下(我标签用了1和2):




3.数据处理


数据处理要进行三项:1.将图片统一转化成256X256大小。2.将数据转化为LEVELDB格式。3.求数据均值。

看了一些博客,在将图片统一转化成256大小这儿曲线救国,想了很多方法。其实第1步和第2步可以一起完成,只要调用examples\imagenet\create_imagenet.sh就可以一起完成。但是shell脚本在Windows下如何运行呢?是可以的,只需要安装Git即可在Windows环境下运行shell脚本!Git下载链接:https://git-scm.com/downloads/

根据具体情况,对create_imagenet.sh,做一些修改(需要修改处均用红色方框标出,五角星处即是caffe自带的resize图片的地方,一定要设为true):




打开git,运行create_imagenet.sh即可,查看文件夹,出现imagenet_train_leveldb和imagene_val_leveldb:



接下来是进行第三步,求图像均值了。在进行这一步时,我使用\examples\imagenet\make_imagenet_mean.sh时,是成功求得了均值文件imagenet_mean.binaryproto,但在之后训练时,一直报错,提示均值文件无法读取。故还是换用了compute_image_mean.exe,来求得均值文件,具体步骤,之前的文章已经记录了,不再赘述。

再从\models\bvlc_reference_caffenet中,将train_val.prototxt和solver.prototxt复制过来,这样所有文件都准备齐全了:



4.配置训练所需文件


首先,根据具体情况修改,train_val.prototxt:





修改solver.prototxt:




关于solver里面的参数,我认为应该根据具体情况就修改就好了,这一部分我还不是很熟悉,慢慢积累吧。


5.进行训练


写一个bat文件,进行训练即可!bat文件代码如下:



6.训练结果


因为我的电脑配置很低很低。。所以训练起来很慢,我调小了很多参数,训练了两天还是没训完。。。贴一张训练中的截图吧:


 

7.总结


这次主要是为了自己感受一下用Windows Caffe训练自己数据的整个过程,也没有去追求准确率,也没有考虑去跟踪训练过程去调参等等。这些经验方面的知识,接下来慢慢继续积累吧。经过这次学习,起码能把整个过程跑下来了,收获很多。

参考文档:

1.Caffe官方文档:Imagenet Tutorial

2.BAT文件实现照片批量命名

3.Caffe训练自己的数据


2 0
原创粉丝点击