在安装完caffe之后就可以使用caffe来训练数据。由于caffe中比较常用的数据格式是LMDB,而我们一般获取到的数据为jpg或者png等图片格式,因此我们在正式转换之前,需要利用caffe自带的工具将图片文件转换成LMDB格式
一、工具介绍
caffe自带了一个将图片转换成LMDB格式的工具,当编译成功caffe后,在如下目录$CAFFE_HOME/build/tools(其中变量CAFFE_HOME表示caffe安装的目录)中会看到一个可执行文件convert_imageset,它可以将图片文件转换成LMDB格式的数据。它的用法如下:
convert_imageset [FLAGS] [根目录]/ [文件列表文件] [DB名称]
各块参数说明如下:
FLAGS 标识位,它可以有如下参数:
- –backend 转换结果格式{lmdb, leveldb}。参数类型:string。默认值: “lmdb”
- –check_size 当该选项打开时,会检查所有的数据是否是相同尺寸大小。参数类型:bool。默认值:false
- –encode_type 以何种方式编码图片(个人理解是表示将读取的图片二进制数据以何种编码格式传存储在数据库中){‘png’, ‘jpg’, …}。参数类型:string。默认值:”“
- –encoded 当该选项打开时,只有对应编码格式的图片会被存储(个人理解应该是配合encode_type参数做图片类型筛选)。参数类型:bool。默认值:false
- –gray 当该选项打开时,所有的图片被当作灰度图处理。参数类型:bool。默认值:false
- –resize_height 调整图片高度。参数类型:int32。默认值:0
- –resize_width 调整图片宽度。参数类型:int32。默认值:0
- –shuffle 是否搅乱顺序。该参数打开时,在存储数据时不会按照列表文件提供的顺序存储,而是随机打乱并存储
根目录 结合第三个参数列表文件中的文件信息读取源文件,记得该参数最后加斜杠表示目录
- 文件列表文件 存储文件列表。格式如下
文件路径 标签号
其中文件路径表示相对于第二个参数根目录的相对路径,比如:
test/0200357.jpg 2
test/0300981.jpg 3
test/0400577.jpg 4
test/0000123.jpg 0
test/0200367.jpg 2
test/0101073.jpg 1
test/0500669.jpg 5
test/0500671.jpg 5
- DB名称 生成的DB文件名称。执行成功后,会在脚本执行的目录下生成一个文件夹,名称即为该参数。
二、使用过程
1.首先准备数据
文件夹格式可以如下图:
其中train文件夹中存储有图片文件,train.txt为文件列表文件
2.生成文件
在数据文件所在目录下执行如下命令:
$CAFFE_ROOT/build/tools/convert_imageset --shuffle --resize_height=256 --resize_width=256 ./ train.txt img_train_lmdb
执行过程中输出如下图:
执行成功后会在当前目录生成一个img_train_lmdb的文件夹: