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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用的表单元素有哪些_h5新增的表单元素属性

    常用的表单元素有哪些_h5新增的表单元素属性这里是修真院前端小课堂,每篇分享文从【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】八个方面深度解析前端知识/技能,本篇分享的是:【常见的表单元素有哪些?各有什么属性?】大家好,我是IT修真院北京分院第23期学员。今天小课堂的主要内容是,input表单的应用,还有在html5中新增的属性。表单元素是允许用户在表单中(比如:文…

    2025年8月12日
    3
  • 本地Mysql忘记密码的修改方法(windows)[通俗易懂]

    本地Mysql忘记密码的修改方法(windows)[通俗易懂]你是否有忘记密码的尴尬你是否有连Mysql的安装路径都忘了的尴尬别问我是怎么知道的,哈哈哈话不多说,步入正题吧!如果你记得mysql的安装路径的话,直接跳过步骤1231.键盘Windows+R,输入services.msc然后回车;2.找到Mysql,右键Mysql找到属性,打开就能看到可执行文件的路径了;PS:可以切换到大写,然后一直按MMM…(祖传妙方)3.进入bin目录下,按住shift+鼠标右键,点击打开“在此处打开Powershe.

    2022年6月16日
    36
  • 到底是谁?BCH近期出现大量未知算力

    到底是谁?BCH近期出现大量未知算力到底是谁?BCH近期出现大量未知算力

    2022年4月22日
    44
  • VMware虚拟机安装Ubuntu系统步骤详解

    VMware虚拟机安装Ubuntu系统步骤详解Ubuntu系统介绍VMware安装Ubuntu步骤一.Ubuntu系统的下载二.VMwareworkstation的下载安装三.配置Ubuntu虚拟机系统VMware安装Ubuntu系统Ubuntu系统介绍Ubuntu是一个以桌面应用为主的Linux操作系统。作为Linux发行版中的后起之秀,UbuntuLinux在短短几年时间里就成长为从L…

    2022年4月12日
    41
  • 【分发糖果】【加密解密】[通俗易懂]

    【分发糖果】【加密解密】[通俗易懂]1.分发糖果原题地址:https://leetcode-cn.com/problems/candy/solution/fen-fa-tang-guo-by-leetcode/老师想给孩子们分发糖果,有N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻的孩子中,评分高的孩子必须获得更多的…

    2022年6月8日
    35
  • https加密原理(转)

    https加密原理(转)HTTP、HTTPS在我们日常开发中是经常会接触到的。我们也都知道,一般Android应用开发,在请求API网络接口的时候,很多使用的都是HTTP协议;使用浏览器打开网页,也是利用HTTP协议。看来HTTP真是使用广泛啊,但是,HTTP是不安全的。利用网络抓包工具就可以知道传输中的内容,一览无余。比如我经常会使用Fiddler来抓包,搜集一些有趣的API接口。那么…

    2022年5月20日
    37

发表回复

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

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