如何搭建caffe环境已经在之前的文章中介绍了,有需要的可以自行回顾。
一、准备数据集
首先是准备好要用到的图片数据集,目前随机选用了五类水果:苹果、草莓、香蕉、火龙果、猕猴桃来作为图像识别的测试案例(事实证明,这个看似随机的选择在后续暴露出了caffe使用会遇到的问题,有点巧了)。图片是我从百度图片中随机挑选下载的,总共250张,其中每类50张,分割为10张测试集和40张训练集。
选择完图片集后先对其进行预处理。这里使用了美图秀秀的图片裁剪工具,将每张图都变为256*256的大小。其实我也不想用这么奇怪又笨拙的操作的,主要是因为在使用caffe的图像转换工具convert_imageset时发现:如果图片的长宽都大于256,那么可以顺利转换;如果其中之一小于256,则会报错。对于这个问题暂时还没找到解决方法,所以为了保证达到预期目标只能先强行迈过这一关了。。。
在使用caffe处理图片之前,要先对其进行规则编号。编号分别以1,2,3,4,5开头,各为一类。这里推荐一个便捷的批量处理工具Advanced Renamer,可以快速将图片分批编号。编号完成后将图片存入caffe根目录下的data文件夹中,其中训练图片的目录为data/re/train/,测试图片的目录为data/re/test/。
二、转换为lmdb格式
首先在examples下创建新的文件夹myfile,
sudo mkdir examples/myfile/
用于存放配置文件和脚本文件。
然后运行
sudo vi examples/myfile/create_filelist.sh
用于生成图片的txt清单文件。
编辑create_filelist.sh,写入以下代码并保存:
#!/usr/bin/env sh
DATA=data/re/
MY=examples/myfile
echo "Create train.txt..."
rm -rf $MY/train.txt
for i in 1 2 3 4 5
do
find $DATA/train -name $i*.jpg | cut -d '/' -f4-5 | sed "s/$/ $i/">>$MY/train.txt
done
echo "Create test.txt..."
rm -rf $MY/test.txt
for i in 1 2 3 4 5
do
find $DATA/test -name $i*.jpg | cut -d '/