LMDB文件以及它们如何用于caffe深度学习网络

时间:2015-06-22 12:44:37

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

我是深度学习的新手,我在使用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-d矩阵保存在一个字段中,将标签矢量保存在另一个字段中?

2 个答案:

答案 0 :(得分:7)

LMDB文件与MS Access文件之间没有任何关联。

我认为你有两种选择:

  1. 使用“convert_imageset”工具 - 它位于tools文件夹下的caffe中,用于转换图像文件列表并标记为lmdb。
  2. 而不是“数据层”使用“图像数据层”作为网络的输入。这种类型的图层采用带有图像文件名和标签列表的文件作为源,因此您不必构建数据库(培训的另一个好处 - 您可以使用随机播放选项并获得稍微更好的培训结果)
  3. 为了使用图像数据层,只需将图层类型从Data替换为ImageData。源文件是文件的路径,该文件在每行中包含图像文件的路径和按空格分隔的标签。例如:

    /path/to/filnename.png 23
    

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

答案 1 :(得分:1)

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格式的约定。

这意味着将图像转换为适用于Caffe的LMDB的最佳方法是使用Caffe进行此操作。

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

相关问题