python读取lmdb文件_LMDB 的 Python 接口使用方法

MXNet中对classification任务提供了把训练图像数据转换成一个大的二进制文件的方法,但是,对于其它任务例如语义分割等,并没有提供类似的功能。这里,介绍一下如何使用LMDB的Python接口把语义分割训练数据的图像和标签转换成LMDB的文件。首先,这里简要介绍一下问什么要把图像文件转换成大的二进制文件。

为什么要转换

为什么要把很多图像文件转换成一个大文件?

简单来说,是因为读写小文件的速度太慢。那么, 不禁要问,图像数据也是二进制文件,单个大的二进制文件例如LMDB文件也是二进制文件,为什么单个图像读写速度就慢了呢?这里分两种情况解释。

机械硬盘的情况:机械硬盘的每次读写启动时间比较场,例如磁头的寻道时间占比很高,因此,如果单个小文件读写,尤其是随机读写单个小文件的时候,这个寻道时间占比就会很高,最后导致大量读写小文件的时候时间会很浪费;

NFS的情况:在NFS的场景下,系统的一次读写首先要进行上百次的网络通讯,并且这个通讯次数和文件的大小无关。因此,如果是读写小文件,这个网络通讯时间占据了整个读写时间的大部分。

固态硬盘的情况下应该也会有一些类似的开销,目前没有研究过。

LMDB 的使用方法

LMDB 是一个key value 内存映射的数据库。内存映射的意思就是说,LMDB在使用的时候,会把磁盘上的数据映射到内存中,因此,只顺序读写的情况下,相当于直接在内存中操作数据,因此速度很快。另外,在网络训练场景中存储的LMDB数据是一个二进制文件,因此,也克服了上一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值