ImageDataLayer和LMDB数据层之间的速度

kli*_*lpr 6 deep-learning caffe

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

Ano*_*bhu 5

LMDB旨在更快地从给定数据中获取数据key value.此外,数据以非压缩格式存储,这使得机器可以轻松读取数据并直接将数据传递给GPU进行处理.

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

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

如果caffe无法以所需的速度获取数据,则瓶颈会使整个训练过程更加缓慢.同时,如果您正在读取256个图像并使用多核版本的OpenCV,则可以比读取LMDB更有效地处理数据预取.

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