本文参考“学习笔记 3 用自己的数据训练和测试“CaffeNet(薛开宇)”和caffe官网点这里。
主要讲述——如何用自己准备的图片数据并使用caffe来训练CNN模型,用于图片分类,类似于caffe官网例程ImageNet。
本文主要分为以下几部分:
- 数据准备
- 计算图像均值
- 定义网络
- 模型训练
1.数据准备
在 caffe_master/data 中新建文件夹 myself,在myself/train/cat文件里存放训练猫的图片 40 张(名称为cat1~cat40),在myself/train/dog文件里存放训练狗的图片 40 张(名称为cat1~cat40),在myself/val文件里测试狗的图片 10 张和测试猫的图片10张。
根据训练和测试的图片生成train.txt文件和val.txt文件,此文件里包含文件名和分类标签(标签从0开始,0,1,2....)。
可在train文件夹路径下,使用find -name *.jpeg |cut -d '/' -f2-3 >train.txt脚本命令来生成train.txt文件。val.txt的生成方法类似。
train.txt如图所示:
我们还需要把图片大小变成256*256的,我们可以使用lightweight mincepie package ,也可以使用如下的shell命令:
for name in /path/to/imagenet/val/*.JPEG; do
convert -resize 256x256\! $name $name
done
我们更可以不在这一步缩放,在下一步创建leveldb数据时,将examples/imagenet/create_imagenet.sh
的RESIZE设置为true来更改大小。
生成leveldb格式数据:在caffe-master/examples里创建文件夹myself,将imagenet文件夹里的create_imagenet.sh复制到该文件夹下进行修改,主要修改训练和测试路径的位置,然后在命令行的caffe-master路径下,运行 ./examples/myself/create_imagenet.sh 。运行完毕,将在myself里生成myself_train_leveldb和myself_val_leveldb。
2.计算图像均值