【问题标题】:LMDB files and how they are used for caffe deep learning networkLMDB 文件以及它们如何用于 caffe 深度学习网络
【发布时间】:2015-09-07 22:15:32
【问题描述】:

我是深度学习的新手,在使用 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- 函数(在https://github.com/kyamagu/matlab-leveldb) database.put('key1', 'value1') 和 database.put('key2', 'value2') 有什么作用?我是否必须将 4 维矩阵保存在一个字段中,而将标签向量保存在另一个字段中?

【问题讨论】:

    标签: matlab image-processing computer-vision deep-learning caffe


    【解决方案1】:

    LMDB 文件和 MS Access 文件之间没有联系。

    在我看来,您有两个选择:

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

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

    /path/to/filnename.png 23
    

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

    【讨论】:

    • 非常感谢您的回答。但是这两个答案都对我没有多大帮助。我不想从目录中读取文件列表,因为我有 250k 图像,并将尝试对它们进行一系列预处理操作。我不想将它们保存在磁盘中,所以我想要的是在matlab中进行预处理操作并将预处理的文件和标签直接保存为LMDB。这可能吗?
    • 你能帮我如何使用图像数据层吗?我必须在 .prototxt 文件中使用的语法如何?我认为这对我来说是更便宜的解决方案,因为我很难生成我想要的 mdb 文件。
    • 对答案添加了一些解释
    【解决方案2】:

    Caffe 不使用 LevelDB - 但 it uses LMDB 'Lightning' db from Symas

    您可以尝试使用this Matlab LMDB 包装器 我个人没有在 Matlab 中使用 LMDB 的经验,但是有一个很好的库可以从 Python 中做到这一点:py-lmdb

    LMDB 数据库是一个 Key/Value 数据库(类似于 Java 中的 HashMap 或 Python 中的 dict)。为了存储 4D 矩阵,您需要了解 Caffe 用于将图像保存为 LMDB 格式的约定。

    这意味着将图像转换为 LMDB for Caffe 的最佳方法是使用 Caffe。

    There are examples in Caffe 关于如何将图像转换为 LMDB - 我会尝试重复它们,然后修改脚本以使用您的图像。

    【讨论】:

    • Caffe 可以同时使用 LMDB 或 LevelDB
    • 感谢您的回答,现在我了解了 caffe 的文件格式。但我不想使用 caffe 方法来创建 LMDB 文件,因为我必须将图像存储在文件夹中。我将对 245000 张图像进行一系列预处理操作,并希望在 googlenet 深度网络中对它们中的每一个进行测试。我最好的选择是进行预处理操作而不将它们保存到磁盘并直接创建 LMDB 文件。
    猜你喜欢
    • 1970-01-01
    • 2014-12-11
    • 2018-12-02
    • 2018-01-09
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2021-08-30
    相关资源
    最近更新 更多