CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

时间:2021-05-15 03:59:26

标签: caffe 深度学习


作者:贾金让

本人博客的链接:http://blog.csdn.net/jiajinrang93
本脚本的新版打包下载地址:http://download.csdn.net/download/jiajinrang93/99762494

一.脚本实现的功能

1.将训练数据集转化为lmdb格式;
2.将测试数据集转化为lmdb格式;
3.生成mean.binaryproto文件。

二.原理简述

对于使用caffe的人来说,预处理中非常重要的一步就是格式的转换,将常用的图片(.jpg、.png等)转换为caffe使用的lmdb是非常必要的一步。

caffe中提供了将图片转化为lmdb的可执行文件,即处于caffe/build/tools目录下的convert_imageset可执行文件,不过它的使用有三个输入参数,即需要转化成lmdb的图片文件,用于转化的train.txt文件(或test.txt)以及生成lmdb的位置参数。

其中train.txt(test.txt)文件是需要我们自己生成的,对于大数据来说,手动生成非常之繁琐和麻烦。下图是train.txt的示例,可以看到不仅要在文件中存放图片的名字,还要有子路径和所属类别。

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

所以我们也需要一个脚本来自动完成这项功能。

三.程序包简介及使用说明

完整的程序包应该是下面这个样子的。

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

在运行前建议看看readme.md文件,里面也有详细的操作说明。

下面介绍各个文件夹的作用:
/data :用于存放生成的lmdb格式文件和mean文件,里面如下图:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

当然脚本没有运行时里面是没有mean文件的。
/sh :用于存放生成train.txt、test.txt、lmdb和mean的脚本文件,里面如下图:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

/tools :用于存放调用的caffe的convert_imageset和compute_image_mean两个可执行文件,需要手动从你的caffe目录下,build/toools/目录里拷贝到这里,拷贝后里面是这个样的:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

/train :用于存放你需要转换成lmdb格式的源训练图片,里面是按类分好的子文件夹,有几类就有几个文件夹,命名从0开始(例:我的训练数据有两类,男和女,那么0代表男,1代表女),如下图所示:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

其中0文件夹中存放属于该类的图片(例:男),如下:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

另一个1文件夹中存放属于该类的图片(例:女),如下:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

/test :用于存放你需要转换成lmdb格式的源测试图片,里面是暗雷分好的子文件夹,有几类就有几个文件夹,命名从0开始(例:同上,也是男女),不过这里需要注意,测试的图片不仅要按类放在各个子文件夹中,还要存放在/test文件夹下,test文件夹内部如下所示:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

其中0文件中也存放其中属于该类的图片(例:男),如下:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

另一个1文件夹中存放属于该类的图片(例:女),如下:

CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)

data_create.sh脚本文件就是我们要运行的文件。

四.运行脚本

将训练图片、测试图片和两个可执行文件都拷入对应位置后,就可以运行脚本了。
在命令行中进入create_lmdb目录,输入下列代码:
./data_create.sh
即可。
运行界面如下:
CAFFE之将图片转化为lmdb格式脚本【直接运行版】(内含生成train.txt和test.txt)
之后就会在create_lmdb目录下生成train.txt和test.txt两个文件,并且在/create_lmdb/data目录下生成mean.binaryproto,且在两个子目录中生成各自的lmdb文件。

大功告成!

本人博客的链接:http://blog.csdn.net/jiajinrang93
本脚本的新版打包下载地址:http://download.csdn.net/download/jiajinrang93/99762494