lmdb转换「建议收藏」

lmdb转换「建议收藏」一、LMDB介绍:lmdb数据库LMDB全称为LightningMemory-MappedDatabase,就是非常快的内存映射型数据库,LMDB使用内存映射文件,可以提供更好的输入/输出性能,对于用于神经网络的大型数据集(比如ImageNet),可以将其存储在LMDB中。LMDB属于key-value数据库,而不是关系型数据库(比如MySQL),LMDB提供key-value存储,其中每个键值对都是我们数据集中的一个样本。LMDB的主要作用是提供数据管理,可以将各种

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、LMDB 介绍:lmdb 数据库

LMDB 全称为 Lightning Memory-Mapped Database,就是非常快的内存映射型数据库,LMDB使用内存映射文件,可以提供更好的输入/输出性能,对于用于神经网络的大型数据集( 比如 ImageNet ),可以将其存储在 LMDB 中。

LMDB属于key-value数据库,而不是关系型数据库( 比如 MySQL ),LMDB提供 key-value 存储,其中每个键值对都是我们数据集中的一个样本。LMDB的主要作用是提供数据管理,可以将各种各样的原始数据转换为统一的key-value存储。

LMDB效率高的一个关键原因是它是基于内存映射的,这意味着它返回指向键和值的内存地址的指针,而不需要像大多数其他数据库那样复制内存中的任何内容。

LMDB不仅可以用来存放训练和测试用的数据集,还可以存放神经网络提取出的特征数据。如果数据的结构很简单,就是大量的矩阵和向量,而且数据之间没有什么关联,数据内没有复杂的对象结构,那么就可以选择LMDB这个简单的数据库来存放数据。

LMDB的文件结构很简单,一个文件夹,里面是一个数据文件和一个锁文件。数据随意复制,随意传输。它的访问简单,不需要单独的数据管理进程。只要在访问代码里引用LMDB库,访问时给文件路径即可。

二、LMDB python 基本操作:LMDB 的基本函数

import lmdb

#打开数据库
env = lmdb.open('E:/Data/data_lmdb_release/validation')

#建立事务
txn = env.begin()

#查询数据库
print(txn.get(('num-samples').encode()))

#遍历
# for key, value in txn.cursor():
#     print(str(key).encode())
    
#关闭数据库
env.close()

三、数据集转lmdb:https://github.com/clovaai/deep-text-recognition-benchmark

该github工程下的create_lmdb_dataset.py文件即可实现。

(1)输入:图片和标注文件,标注文件的格式为:图片名称 标注内容。

(2)输出:1)image-xxxxx:图片数据,二进制格式;2)label-xxxxx:label Byte格式;3)num_samples:样本数量,Byte格式。

(3)Byte格式数据转为字符串:byte_str.decode()。

(4)二进制图片转RGB:

image = (txn.get(('image-000000001').encode()))
print(image)
img = Image.open(io.BytesIO(image)).convert('RGB') #.convert('L') 灰度图
#img = Image.open(six.BytesIO(image)).convert('RGB') #.convert('L') 灰度图
print(img)
print(np.array(img).shape)
img.show()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187771.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ICE初识

    ICE初识
    ICE:InternetCommunicationsEngine
    一种适用于异种环境的面向对象中间件平台
    他为我们提供了除DCOM,CORBA,JAVARMI,.NETRemoting,WebService,SOAPRPC以外的一种远程调用方式。
    更重要的是ICE是一种跨操作系统跨语言的远程调用方式(支持.NET1.1MONO1.0)。

    主页在:http://www.zeroc.com/index.html

    2022年6月1日
    31
  • js三目运算符多条表达式_递归算法js

    js三目运算符多条表达式_递归算法js表达式Q?A:B在Q求值为TRUE时的值为A,在Q求值为FALSE时的值为B。例如下面判断奇数偶数的例子: varnumbuer=5; if(numbuer%2!=0){ document.write(“该数为奇数”); } else{ document.write(“该数为偶数”); }改写为三元表达式时…

    2025年7月5日
    0
  • Codeforces 432E Square Tiling(结构体+贪婪)

    Codeforces 432E Square Tiling(结构体+贪婪)

    2022年1月5日
    34
  • 用js来实现那些数据结构01(数组篇01-数组的增删)

    在开始正式的内容之前,不得不说说js中的数据类型和数据结构,以及一些比较容易让人混淆的概念。那么为什么要从数组说起?数组在js中是最常见的内存数据结构,数组数据结构在js中拥有很多的方法,很多初学者记

    2022年3月25日
    54
  • 一天入门51单片机教程

    一天入门51单片机教程本套教程共3节课程,熟悉这3节课程的话,你已经入门51单片机了。下面是内容正文单片机学习的第一步,什么是单片机最小系统?我来打个比喻吧.我们都知道,人的大脑是可以控制眼耳口鼻,手脚,全身等等,这就说明,大脑是我们人体的控制中心,人体能控制的地方,都是由大脑管理的..而单片机就像我们的大脑,作为一个控制中心,去控制我们想要控制的东西...为什么要控制呢?好像一成不变枯燥的工作,如果是人处理的话,做的时间长一点,他会说累,说无聊,而单片机则不会,只要你给它编写好程序,它会默默无闻地重复

    2022年5月16日
    38
  • git如何移除某文件的版本控制

    git如何移除某文件的版本控制

    2021年10月20日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号