1. 前言
在深度学习中需要读取图像的数据,但是输入图像的数据存在通道数量、大小等的不同。在Caffe中便有convert_imageset工具来实现对这些数据的处理,并将这些图片转换位lmdb文件格式,从提升读取效率。
这个功能对应的源代码文件为convert_imageset.cpp。在完成编译之后会在./build/tools/下面生成对应的可执行文件。那么怎么调用它呢?其实很简单,只需要按照如下的参数进行设置就好了。
convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME
参数解释:
- [FLAGS]:图片参数组,可以设置为:
- -gray: 是否以灰度图的方式打开图片。程序调用opencv库中的imread()函数来打开图片,默认为false
-shuffle: 是否随机打乱图片顺序。默认为false
-backend:需要转换成的db文件格式,可选为leveldb或lmdb,默认为lmdb
-resize_width/resize_height: 改变图片的大小。在运行中,要求所有图片的尺寸一致,因此需要改变图片大小。 程序调用opencv库的resize()函数来对图片放大缩小,默认为0,不改变
-check_size: 检查所有的数据是否有相同的尺寸。默认为false,不检查
-encoded: 是否将原图片编码放入最终的数据中,默认为false
-encode_type: 与前一个参数对应,将图片编码为哪一个格式:‘png’,‘jpg’…
2. ROOTFOLDER/:输入图片的路径
3. LISTFILE:输入图片的txt列表文件,包含文件名以及分类号。为该文件的绝对路径
4. DB_NAME:生成的LMDB文件保存路径
2. 示例
在之前的博客中将MNIST二进制流文件转换成为了图片的形式,期间也对应生成了对应的txt记录文件其内容为:
之后便是使用该工具进行文件生成了,使用如下:
./convert_imageset -gray ~/Desktop/Caffe_Python/Image/imgs_test/ ~/Desktop/Caffe_Python/Image/imgs_test/img.txt ~/Desktop/Caffe_Python/
生成的结果: