大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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()
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187771.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...