假设你已经做好了VOC数据标签,也就是xml文件,并且已经配置好了caffe-ssd的环境

第一步,在caffe-ssd/data目录下本身自带有如下文件夹:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

然后在caffe-ssd/data目录下新建一个文件夹命名为VOCdevkit:

然后data目录下有:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

进入VOCdevkit目录内,新建VOC2007文件夹,然后再进入VOC2007文件夹内新建Annotations,ImageSets,JPEGImages三个文件夹,在ImageSets文件夹内新建一个Main文件夹

最后目录级别为:

  • caffe-ssd/data/VOCdevkit/VOC2007
  • -----------------------------------------------/Annotations
  • -----------------------------------------------/ImageSets
  • --------------------------------------------------------------/Main
  • -----------------------------------------------/JPEGImages

再将自己做的数据集所有的jpg图片全部放入JPEGImages文件夹内(下面这张路径图是windows可视之后。只是为了方便理解,我这篇博客是基于LINUX下的,Windows下应该也差不多)

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

将自己做的数据集标签(应该和放入JPEGImages文件内的图片名一样且数量一样多)xml文件全部放入Annotations文件夹内

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

Main文件夹应该有(可以用matlab脚本或者python脚本生成,我会将matlab脚本放置在下边百度云盘连接内):

下载地址:https://pan.baidu.com/s/1SmBjDglt8-7edC1tmEE7QQ 密码:0m27

训练集:     train.txt

训练验证集: trainval.txt

测试集:     test.txt

验证集:     val.txt

这些txt文件内容如下所示,记录的都是数据集的名字不包括后缀:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

好了,准备好以上工作后要正式开始将我们的VOC数据集转换为lmdb格式的工作了。

1. 首先看到caffe-ssd/data目录下,其中有我们新建的VOCdevkit文件夹还有一个VOC0712文件夹:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

进入VOC0712文件夹内,可以看到:

create_data.sh, create_list.sh, labelmap_voc.prototxt三个文件

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

create_list.sh: 用于生成训练集,测试集的文件路径txt文件和一个测试集目录名和图片大小的txt

create_data.sh: 用于生成lmdb格式的训练数据集和测试集

labelmap_voc.prototxt: 里头是标签的信息

将这三个文件复制到自己新建的VOCdevkit/VOC2007文件夹内:复制后VOC2007文件夹内文件如下

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

然后要准备修改复制过来的这三个文件

首先修改create_list.sh(改成自己的目录就行)

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式  caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式 caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

总共需要改三处。

然后改create_data.sh(改成自己的目录就行)

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式 caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式 caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

总共需要修改五处。

最后修改labelmap_voc.prototxt文件:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式   caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

除了第一个背景标签部分不要改,其他改成自己的标签就行,多的删掉,少了添加进去就行

最后,再在caffe-ssd/examples文件夹内新建一个VOC2007文件夹就行(空的):新建后examples目录内文件如下:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

2. 要开始生成lmdb的最后步骤了

先运行create_list.sh脚本 用sh create_list.sh命令不行的话,就用 . create_list.sh命令,运行完后,会在自己建的VOCdevkit/VOC2007目录内生成trainval.txt, test.txt, test_name_size.txt。

再运行create_data.sh脚本 用 sh create_data.sh 命令不行的话,就用 . create_data.sh 命令,运行完后,会在会在自己建的VOCdevkit/VOC2007目录内生成lmdb文件夹:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

lmdb文件夹内有:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

这两个文件夹内有训练集和测试集的lmdb格式的数据:

例如测试集lmdb文件夹内:

caffe-ssd 训练自己的VOC数据集(一):转换VOC xml数据为lmdb格式

到此,VOC数据集转换为lmdb格式数据集就成功了。双击666!!!

关于利用lmdb数据训练ssd,之后再更,请见 caffe-ssd 训练自己的VOC数据集(二):训练生成的lmdb数据