LMDB文件及其在Caffe深度学习网络中的应用

5
我在深度学习方面很新,使用caffe深度学习网络时遇到了一些问题。基本上,我没有找到任何解释如何解决我正在处理的一系列问题和问题的文档。
请先让我解释一下我的情况。
我有数千张图像,必须对它们进行一系列预处理操作。对于每个预处理操作,我都必须将这些预处理图像保存为4D矩阵,并存储一个带有图像标签的向量。我将将此信息存储为LMDB文件,这些文件将用作输入来进行caffe googlenet深度学习。
我尝试将我的图像保存为.HD5文件,但最终文件大小为80GB,这是无法使用我拥有的内存处理的。
因此,另一个选项是使用LMDB文件,对吧?我在这种文件格式中很新手,我感谢您在理解如何在Matlab中创建它们方面的帮助。基本上,我初学者的问题是:
1-这些LMDB文件扩展名为.MDB,对吗?这个扩展名与Microsoft Access使用的扩展名相同吗?还是正确的格式为.lmdb,它们是不同的?

2- 我找到了这个创建.mdb文件的解决方案(https://github.com/kyamagu/matlab-leveldb),它能创建caffe所需的文件格式吗?

3- 对于caffe,我需要为标签和图像分别创建一个.mdb文件还是两者可以成为同一个.mdb文件的字段?

4- 当我创建一个.mdb文件时,我必须对数据库字段进行标记。我可以将一个字段标记为图像,另一个字段标记为标签吗?caffe能理解哪个字段的含义吗?

5- 函数(database.put('key1', 'value1')和database.put('key2', 'value2'))(在https://github.com/kyamagu/matlab-leveldb中),它们是做什么的?我是否需要将我的四维矩阵保存在一个字段中,将标签向量保存在另一个字段中?

2个回答

8

LMDB文件和MS Access文件之间没有连接。

据我所见,您有两个选择:

  1. 使用“convert_imageset”工具 - 它位于caffe的tools文件夹中,将一组图像文件和标签转换为lmdb。
  2. 不使用“数据层”,而是使用“图像数据层”作为网络的输入。这种类型的层以一个包含图像文件名和标签列表的文件作为源,因此您无需构建数据库(训练的另一个好处是可以使用shuffle选项并获得稍微更好的训练结果)

要使用图像数据层,请只需将层类型从Data替换为ImageData即可。源文件是包含每行一个图像文件路径和标签的文件的路径,用空格分隔。例如:

/path/to/filnename.png 23

如果您想对数据进行一些预处理,而不将预处理文件保存到磁盘中,您可以使用caffe提供的转换(镜像和裁剪)(有关信息,请参见此处http://caffe.berkeleyvision.org/tutorial/data.html),或实现自己的DataTransformer

非常感谢您的回答。但是这两个答案都没有对我有太大帮助。我不想从目录中读取文件列表,因为我有250k张图片,并将对它们进行一系列预处理操作。我不想将它们保存在磁盘上,所以我想在Matlab中进行预处理操作,并直接将预处理后的文件和标签保存为LMDB。这可能吗? - mad
你能帮我学习如何使用图像数据层吗?在我的.prototxt文件中,我必须使用什么语法?我认为这对我来说是最便宜的解决方案,因为按照我想要的方式生成mdb文件很困难。 - mad
仅返回翻译后的文本:为答案添加了一些解释 - Tal Darom

1
Caffe不使用LevelDB,但它使用Symas的LMDB“Lightning”数据库。您可以尝试使用这个Matlab LMDB包装器。我个人没有使用过Matlab和LMDB的经验,但是有一个很好的Python库可以做到这一点:py-lmdb。LMDB数据库是一个键/值数据库(类似于Java中的HashMap或Python中的dict)。为了存储4D矩阵,您需要了解Caffe将图像保存为LMDB格式的约定。这意味着将图像转换为Caffe的LMDB的最佳方法是使用Caffe进行操作。

Caffe中有关于如何将图像转换为LMDB的示例 - 我建议您尝试重复这些示例,然后修改脚本以使用您的图像。


4
Caffe可以同时使用LMDB或LevelDB。 - Tal Darom
谢谢你的回答,现在我了解了caffe的文件格式。但是我不想使用caffe的方法来创建LMDB文件,因为我必须将图像存储在文件夹中。我将对245000个图像进行一系列预处理操作,并希望在googlenet深度网络中测试每一个操作。我的最佳选择是在不保存到磁盘的情况下执行预处理操作并直接创建LMDB文件。 - mad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接