Deep learning ImageDataLayer和LMDB数据层之间的速度

Deep learning ImageDataLayer和LMDB数据层之间的速度,deep-learning,caffe,Deep Learning,Caffe,Caffe支持LMDB数据层和ImageDataLayer。 从一些数据集创建LMDB数据库需要一些时间和大量空间。 相比之下,ImageDataLayer只使用非常方便的txt文件。 我的问题是,这两种图层之间有很大的速度差异吗? 多谢各位 是的,速度差确实很大。LMDB针对高速批处理进行了优化。LMDB旨在从给定的键值更快地获取数据。此外,数据以未压缩格式存储,这使得机器很容易读取数据并直接将其传递到GPU进行处理 在ImageDataLayer中,我们必须从文本文件中读取图像细节,并使用O

Caffe支持LMDB数据层和ImageDataLayer。 从一些数据集创建LMDB数据库需要一些时间和大量空间。 相比之下,ImageDataLayer只使用非常方便的txt文件。 我的问题是,这两种图层之间有很大的速度差异吗?
多谢各位

是的,速度差确实很大。LMDB针对高速批处理进行了优化。

LMDB旨在从给定的
键值
更快地获取数据。此外,数据以未压缩格式存储,这使得机器很容易读取数据并直接将其传递到GPU进行处理

在ImageDataLayer中,我们必须从文本文件中读取图像细节,并使用OpenCV将图像读取到内存中。这种图像解压缩在计算上很昂贵

但最佳性能可能并不总是针对LMDB层,它在很大程度上取决于机器的配置。考虑256个图像批量大小和大小为227×227×3的图像的例子。还要考虑使用一个非常好的GPU和高端I8处理器机器。此处,LMDB格式的单个图像可能占用151KB。一整批可能占用37MB。如果GPU能够每秒执行10批,则硬盘的读取速度应为370MB/s。如果您使用的是普通SATA或外部硬盘,由于硬盘的限制,在读取如此大的数据块时会出现瓶颈

如果caffe不能以要求的速度获取数据,瓶颈会使整个培训过程更加缓慢。同时,如果您正在读取256个图像并使用多核版本的OpenCV,则数据预取的处理可能比读取LMDB更有效

如果您已将LMDB数据存储在SSD上,则不会出现上述情况

请记住“接受”您最喜欢的答案,以便StackOverflow可以适当地存档问题。