Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab LMDB文件及其在caffe深度学习网络中的应用_Matlab_Image Processing_Computer Vision_Deep Learning_Caffe - Fatal编程技术网

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

Matlab LMDB文件及其在caffe深度学习网络中的应用,matlab,image-processing,computer-vision,deep-learning,caffe,Matlab,Image Processing,Computer Vision,Deep Learning,Caffe,我对深度学习非常陌生,在使用caffe深度学习网络时遇到了一些问题。基本上,我没有找到任何文档来解释如何解决我目前正在处理的一系列问题 请让我先解释一下我的情况 我有成千上万的图像,我必须对它们进行一系列的预处理操作。对于每个预处理操作,我必须将这些预处理的图像保存为4D矩阵,并存储带有图像标签的向量。我将把这些信息存储为LMDB文件,作为caffe谷歌网深度学习的输入 我试图将我的图像保存为.HD5文件,但最终文件大小为80GB,用我现有的内存无法处理 所以,另一个选择是使用LMDB文件,对吗

我对深度学习非常陌生,在使用caffe深度学习网络时遇到了一些问题。基本上,我没有找到任何文档来解释如何解决我目前正在处理的一系列问题

请让我先解释一下我的情况

我有成千上万的图像,我必须对它们进行一系列的预处理操作。对于每个预处理操作,我必须将这些预处理的图像保存为4D矩阵,并存储带有图像标签的向量。我将把这些信息存储为LMDB文件,作为caffe谷歌网深度学习的输入

我试图将我的图像保存为.HD5文件,但最终文件大小为80GB,用我现有的内存无法处理

所以,另一个选择是使用LMDB文件,对吗?我是这个文件格式的新手,非常感谢您帮助我理解如何在Matlab中创建它们。基本上,我的新手问题是:

1-这些LMDB文件的扩展名是.MDB,对吗?此扩展与microsoft access使用的相同吗?或者正确的格式是.lmdb,它们是不同的

2-我发现这个解决方案用于创建.mdb文件(),它是否创建了caffe所需的文件格式

3-对于caffe,我应该为标签创建一个.mdb文件,为图像创建另一个文件,还是两者都可以是同一个.mdb文件的字段

4-创建.mdb文件时,我必须标记数据库字段。我可以将一个字段标记为图像,另一个字段标记为标签吗?caffe了解哪个字段的意思吗


5-database.put('key1','value1')和database.put('key2','value2')中的函数做什么?我应该在一个字段中保存我的四维矩阵,在另一个字段中保存标签向量吗?

Caffe不使用LevelDB-但是

您可以尝试使用MatlabLMDB包装器 我个人没有在Matlab中使用LMDB的经验,但是有一个很好的库可以从Python中实现这一点:

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

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


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

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

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

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

    /path/to/filnename.png 23
    

    如果您想在不将预处理文件保存到磁盘的情况下对数据进行一些预处理,您可以使用caffe提供的转换(镜像和裁剪)(参见此处了解信息)或实现自己的
    DataTransformer

    caffe可以同时使用LMDB或LevelDB感谢您的回答,现在我了解了caffe的文件格式。但我不想使用caffe方法来创建LMDB文件,因为我必须将图像存储在文件夹中。我将对245000张图像进行一系列预处理操作,并希望在googlenet deep network中对每一张图像进行测试。我最好的选择是不将预处理操作保存到磁盘,直接创建LMDB文件。非常感谢您的回答。但这两个答案对我帮助不大。我不想从目录中读取文件列表,因为我有250k个图像,将尝试对它们进行一系列预处理操作。我不想将它们保存在磁盘中,所以,我想在matlab中进行预处理操作,并将预处理的文件和标签直接保存为LMDB。有可能吗?你能帮我如何使用图像数据层吗?我必须在.prototxt文件中使用的语法是什么?我认为这对我来说是比较便宜的解决方案,因为很难生成我想要的mdb文件