caffe学习之convert_imageset:图片格式转lmdb/leveld格式
2017-07-18 12:59
495 查看
caffe中data_layer的输入数据的格式是lmdb或者leveld格式的。(hdf5_data_layer等layer暂不考虑)但是我们面对的原始数据往往是.jpg/.png格式的,所以需要进行一定的处理才能作为输入数据。
在这里主要用到的工具便是caffe源码中已经写好的一个工具caffe/tools/convert_imageset.cpp,只需对图片做一些处理便可自动帮你将图片格式转成lmdb或leveld格式。
下面就介绍下如何使用这个工具。
train.txt里面放着你的训练集
至于怎么生成train.txt需要你自己写对应的脚本生成,这里变不做介绍。
将会把CAFFEROOT/data/img/目录下的,并且在CAFFEROOT /train.txt(路径要对)中所定义的所有图片,全都转化成lmdb(默认)格式,并保存在CAFFEROOT$/data/lmdb_data/my_lmdb目录下,运行后,你会发现在此目录下多了data.mdb和lock.mdb两个文件。
规范的格式如下:
convert_imageset : 可执行文件的命令
[FLAGS]: 可选参数,下面会讲
ROOTFOLDER/ : 图片保存的目录(绝对路径或者相对路径对应上即可)
LISTFILE .txt : 文件的位置(绝对路径或者相对路径对应上即可)
DB_NAME : 保存lmdb之后的文件位置(绝对路径或者相对路径对应上即可)
从源代码中即可看到参数一共有gray、shuffle、backend、resize_width、resize_height、check_size、encoded、encode_type几种。
gray: 是否是灰度图,默认不是
shuffle: 是否需要对图片数据打乱,默认不需要
backend: 保存的格式,默认lmdb
resize_width: resize图片的宽度,因为caffe对于每个batch的图片size大小需要一致
resize_height: resize图片的高度
check_size: 是否检查图片大小是否一致,默认不检查
encoded: 是否将原始的图片放入lmdb或者leveld中,默认否
encode_type: encoded为ture时,需要注明原始图片的格式是什么,‘.jpg,.png’等等
在这里主要用到的工具便是caffe源码中已经写好的一个工具caffe/tools/convert_imageset.cpp,只需对图片做一些处理便可自动帮你将图片格式转成lmdb或leveld格式。
下面就介绍下如何使用这个工具。
第一步,生成train.txt文件
根据自己的图片数据集,生成对应的train.txt文件。文件里的内容,每一行有两个字段,分别为:图片名和label,比如:train.txt里面放着你的训练集
pic1.jpg 1 pic2.jpg 2 pic3.jpg 2 pic4.jpg 3 ...
至于怎么生成train.txt需要你自己写对应的脚本生成,这里变不做介绍。
第二步,输入相关命令生成lmdb或leveld文件
先上一个例子,比如命令行下输入以下命令:CAFFEROOT$ ./build/tools/convert_imageset data/img/ train.txt data/lmdb_data/my_lmdb
将会把CAFFEROOT/data/img/目录下的,并且在CAFFEROOT /train.txt(路径要对)中所定义的所有图片,全都转化成lmdb(默认)格式,并保存在CAFFEROOT$/data/lmdb_data/my_lmdb目录下,运行后,你会发现在此目录下多了data.mdb和lock.mdb两个文件。
规范的格式如下:
convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME
convert_imageset : 可执行文件的命令
[FLAGS]: 可选参数,下面会讲
ROOTFOLDER/ : 图片保存的目录(绝对路径或者相对路径对应上即可)
LISTFILE .txt : 文件的位置(绝对路径或者相对路径对应上即可)
DB_NAME : 保存lmdb之后的文件位置(绝对路径或者相对路径对应上即可)
[FLAGS]参数:
DEFINE_bool(gray, false, "When this option is on, treat images as grayscale ones"); DEFINE_bool(shuffle, false, "Randomly shuffle the order of images and their labels"); DEFINE_string(backend, "lmdb", "The backend {lmdb, leveldb} for storing the result"); DEFINE_int32(resize_width, 0, "Width images are resized to"); DEFINE_int32(resize_height, 0, "Height images are resized to"); DEFINE_bool(check_size, false, "When this option is on, check that all the datum have the same size"); DEFINE_bool(encoded, false, "When this option is on, the encoded image will be save in datum"); DEFINE_string(encode_type, "", "Optional: What type should we encode the image as ('png','jpg',...).");
从源代码中即可看到参数一共有gray、shuffle、backend、resize_width、resize_height、check_size、encoded、encode_type几种。
gray: 是否是灰度图,默认不是
shuffle: 是否需要对图片数据打乱,默认不需要
backend: 保存的格式,默认lmdb
resize_width: resize图片的宽度,因为caffe对于每个batch的图片size大小需要一致
resize_height: resize图片的高度
check_size: 是否检查图片大小是否一致,默认不检查
encoded: 是否将原始的图片放入lmdb或者leveld中,默认否
encode_type: encoded为ture时,需要注明原始图片的格式是什么,‘.jpg,.png’等等
相关文章推荐
- 【深度学习】【caffe实用工具3】笔记25 Windows下caffe中将图像数据集合转换为DB(LMDB/LEVELDB)文件格式之convert_imageset
- 深度学习caffe应用笔记--如何将图片转换为lmdb格式
- Caffe学习:build/tools/convert_imageset
- caffe学习之conver_imageset.bin的使用方法,caffe下图片转lmdb格式类型数据总结
- caffe 学习笔记之convert_imageset
- caffe如何将图片数据写成lmdb格式
- caffe用python加载数据,包含各类数据类型(LMDB,image,HDF5等共五种全部格式))--caffe学习(3)
- Caffe学习:pycaffe利用caffemodel进行分类=>裁剪图片
- caffe 图片格式
- 学习Java6(五) 图片格式的转换
- 深度学习caffe平台--制作自己.lmdb格式数据集及分类标签文件
- 学习笔记(番外篇)——python批量转换图片格式
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- CAFFE学习笔记(四)将自己的jpg数据转成lmdb格式
- caffe-将图片转化为siamese网络需要的数据库格式
- 深度学习caffe平台--制作自己.lmdb格式数据集及分类标签文件
- [Python模块学习]用imghdr模块识别图片格式
- Caffe图片训练分类研究、深度学习图片分类
- linux caffe 将图片转为lmdb格式
- Caffe下将图片转换为lmdb格式