数据集使用的是kaggle上的猫狗数据集。 在编译好的caffe->data目录下新建文件夹cat and dog,数据集中的train和test文件夹放到data目录下。 第一步:生成train数据的标签文件,根据图片名生成对应的标签,这里,0是cat,1是dog程序如下:
# -*- coding: utf-8 -*- """ Created on Sun Jul 9 20:26:20 2017 @author: *** """ import os def Filenametotxt(dir,file,wildcard,recursion): exts=wildcard.split(" ") for filesname in os.listdir(dir): name=filesname.split(sep='.') for exts in exts: if(filesname.endswith(exts)&bool(name[0]=='cat')): file.write(filesname+" "+"0"+"\n") else: file.write(filesname+" "+"1"+"\n") def Test(): dir="D://Caffe//caffe-master//data//cat and dog//train//" outfile="train.txt" wildcard=".jpg" file=open(outfile,'w') # if not file: # print("cannot open the file %s writing"% outfile) Filenametotxt(dir,file,wildcard,1) file.close() Test()生成的train.txt放到train目录下。 第二步:转换为caffe支持的数据格式lmdb,或者leveldb。在cat and dog目录下新建批处理文件convert_imageldb_trainset.bat,代码如下:
SET GLOG_logtostderr=1 D:/Caffe/caffe-master/Build/x64/Release/convert_imageset.exe --resize_height=208 --resize_width=208 ./train/ ./train/train.txt ./mtrainldb pause第二行代码中由五部分组成,很明显,第一部分为 convert_imageset.exe的路径(找不到的话可以搜索一下),第二部分是对图片大小resize,统一大小(不然第三步会报错)./train/为原始训练图片所在文件夹,./train/train.txt为第一步生成的标签文件,./mtrainldb为转换后的文件夹。 同理,也可以转换test下的图片,在此我没有转换,需要的话再转换。 第三步:数据预处理,计算数据的均值。采用编译好的compute_image_mean.exe代码如下:
SET GLOG_logtostderr=1 D:/Caffe/caffe-master/Build/x64/Release/compute_image_mean.exe ./mtrainldb ./train_mean.binaryproto pause目前为止,文件夹中的内容如下: 那个Python27.dll可以忽略,因为我的电脑装了27版本和35版本的,运行时提示找不到那个dll文件,我索性直接复制过来了。 第四步:训练网络配置 将examples->mnist下的lenet_solver.prototxt,lenet_train_test.prototxt复制到cat and dog目录下,并对两个文件进行修改 未完待续…………