1.在caffe根目录data文件夹下存放图像数据
数据需要尺寸归一化。训练集和测试集分别为train和test文件夹,对应的train.txt,test.txt格式如下: ./train/pic_name.jpg 0|1,./test/pic_name.jpg 0|1
2.利用caffe/tools/bin/Release/convert_imageset.exe将原始数据转换到leveldb或lmdb。
转换好处是提高了I/O速率,lmdb类型更为高效,ubuntu下通过测试,但是在windows中可能还有兼容问题,可能是caffe版本的原因,可以转换lmdb,后面计算lmdb均值会有问题。这里在windows下转换到leveldb。
ROOTFOLDER——数据集路径
LISTFILE——对应的标记txt
DB_NAME——转换的数据格式
在根目录examples下编写脚本create_leveldb.bat
<span style="font-size:24px;">set EXAMPLE=../../examples/Planthopper
set DATA=../../data/Planthopper
set TOOLS=../../tools/bin/Release
set TRAIN_DATA_ROOT=../../examples/Planthopper/train/
set VAL_DATA_ROOT=../../examples/Planthopper/test/
set gray=true
set shuffle=true
set backend=leveldb
set resize_width=32
set resize_height=64
set GLOG_logtostderr=1
echo "Creating train leveldb..."
"%TOOLS%/convert_imageset.exe" -gray=%gray% -shuffle=%shuffle% -backend=%backend% -resize_width=%resize_width% -resize_height=%resize_height% %DATA% %DATA%/train.txt %EXAMPLE%/planthopper_train_leveldb
echo "Creating test leveldb..."
"%TOOLS%/convert_imageset.exe" -gray=%gray% -shuffle=%shuffle% -backend=%backend% -resize_width=%resize_width% -resize_height=%resize_height% %DATA% %DATA%/test.txt %EXAMPLE%/planthopper_test_leveldb
echo "Done."
pause</span>
注:创建之前不能有leveldb文件夹,不然报错
可选参数设置
gray:bool类型,默认为false,如果设置为true,则代表将图像当做灰度图像来处理,否则当做彩色图像来处理
shuffle:bool类型,默认为false,如果设置为true,则代表将图像集中的图像的顺序随机打乱
backend:string类型,可取的值的集合为{"lmdb", "leveldb"},默认为"lmdb",代表采用何种形式来存储转换后的数据
resize_width:int32的类型,默认值为0,如果为非0值,则代表图像的宽度将被resize成resize_width
resize_height:int32的类型,默认值为0,如果为非0值,则代表图像的高度将被resize成resize_height
check_size:bool类型,默认值为false,如果该值为true,则在处理数据的时候将检查每一条数据的大小是否相同
encoded:bool类型,默认值为false,如果为true,代表将存储编码后的图像,具体采用的编码方式由参数encode_type指定
encode_type:string类型,默认值为"",用于指定用何种编码方式存储编码后的图像,取值为编码方式的后缀(如'png','jpg',...)