首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户2442861的专栏

    python lmdb使用

    Caffe…… Anyway,LMDB和SQLite/MySQL等关系型数据库不同,属于key-value数据库(把LMDB想成dict会比较容易理解),键key与值value都是字符串。 安装: pip install lmdb 使用时import lmdb。 4.2 操作流程 概况地讲,操作LMDB的流程是: 通过env = lmdb.open()打开环境 通过txn = env.begin()建立事务 通过txn.put(key, value)进行插入和修改 /usr/bin/env python import lmdb env = lmdb.open("students"); 运行一下,查看当前目录的变化: ? /usr/bin/env python import lmdb env = lmdb.open("students"); txn = env.begin(write = True); txn.put

    3.1K22发布于 2018-09-19
  • 来自专栏01ZOO

    Lmdb、Boltdb 和 mmap

    lmdb 简介 LMDB 是 Lightning Memory-Mapped Database 的简称, 简单来说,就是使用 mmap 技术实现的一般是基于 b+ tree 的 kv 数据库 lmdb 读一般是直接使用 mmap【只读 mmap】, 操作简化,利用系统对 mmap 的cache 优化 写可以使用 mmap【optional】, 无须 cache 层,极大的简化了实现逻辑 lmdb 使用 同时为了更有效的使用磁盘空间,同时也避免了后台的 compaction/garbage collection 阶段【基于 lsm tree 的实现都会有这个阶段】:lmdb 只有保存最多两个版本的 version [image.png] bolt 可以看成是 lmdb 的一个 go 版本实现,目前活跃的是 etcd 的分支 bbolt,作为 etcd 的存储引擎使用。 Bolt 专注于简单性和易用性,例如,LMDB 允许执行一些不安全的操作,如直接写操作。 Bolt 选择禁止可能使数据库处于损坏状态的操作。 读使用 mmap,写则通过文件读写【写时机可控】。

    4K11发布于 2021-02-21
  • 来自专栏用户2442861的专栏

    Caffe中LMDB的使用

    官方的extract_feature.bin很好用,但是输出的特征是放在LMDB里的。以前嫌LMDB麻烦,一直都图方便直接用ImageDataLayer来读原始图像。 许多example中提供的输入数据是LMDB格式。使用extract_features.bin提取特征时支持的输出格式之一也是LMDBLMDB在Caffe的IO功能中有相当重要的地位。 LMDB数据库只有一个文件,你的介质有多块,就能复制多快,不会因为文件多而慢如蜗牛。 Caffe中的LMDB数据 接下来要介绍Caffe是如何使用LMDB存放数据的。 存放进LMDB的就是Datum序列化生成的字符串。 Caffe中读写LMDB的代码 要想知道Caffe是如何使用LMDB的,最好的方法当然是去看Caffe的代码。 然后,创建数据库环境,创建并打开数据库: if (db_backend == "lmdb") { // lmdb LOG(INFO) << "Opening lmdb " << db_path;

    2.1K10发布于 2018-09-19
  • 开源:LMDB 操作工具:lmcmd

    什么是 LMDB LMDB(Lightning Memory-Mapped Database)是一种高效的键值存储数据库,基于内存映射(memory-mapping)技术,提供快速的读写操作 LMDB 具有以下特点: 高效性:内存映射文件方式提高了数据存取效率。 事务性强:支持多版本并发控制(MVCC),保证数据一致性。 LMDB 在机器学习、数据存储等场景中应用广泛,尤其适合需要快速存取的数据集和模型。 2. 同时,我没有找到一个现成的管理工具来便捷地操作 LMDB 数据库(或许是有的,但没有找到)。 它是一个基于 Python 的交互式控制台,支持对 LMDB 数据库进行基本的键值操作,数据导入导出,查找等功能。 3.

    49610编辑于 2025-07-22
  • 来自专栏mythsman的个人博客

    利用Caffe与lmdb读写图像数据

    简述 lmdb是一种轻量级的数据库,caffe中主要就是使用lmdb模块来进行图像数据集的保存。 事实上如果仅仅看lmdb的用法是无法直接应用于图像文件的处理的。由于caffe是将图像以他自带的数据类型的形式传入lmdb中的,因此我们必须结合caffe的数据类型才能完成读取和使用。 # create the leveldb file lmdb_env = lmdb.open(lmdb_file, map_size=int(1e12))#生成一个数据文件,定义最大空间 lmdb_txn lmdb_txn.commit() lmdb_txn = lmdb_env.begin(write=True) #commit之后,之前的txn就不能用了,必须重新开一个。 lmdb_env = lmdb.open('lmdb_data')#打开数据文件 lmdb_txn = lmdb_env.begin() #生成句柄 lmdb_cursor = lmdb_txn.cursor

    68540编辑于 2022-11-14
  • 来自专栏SnailTyan

    使用Python合并lmdb文件

    由于Caffe使用的存储图像的数据库是lmdb,因此有时候需要对lmdb文件进行操作,本文主要讲解如何用Python合并lmdb文件。没有lmdb支持的,需要用pip命令安装。 pip install lmdb 代码及注释如下: # coding=utf-8 # filename: merge_lmdb.py import lmdb # 将两个lmdb文件合并成一个新的lmdb def merge_lmdb(lmdb1, lmdb2, result_lmdb): print 'Merge start!' # env代表Environment, txn代表Transaction # 打开lmdb文件,读模式 env_1 = lmdb.open(lmdb1) env_2 = lmdb.open 的目录 result_lmdb = fr.readline().strip() fr.close() merge_lmdb(lmdb1, lmdb2, result_lmdb)

    2.2K10发布于 2019-05-25
  • 来自专栏全栈程序员必看

    Python读写LMDB文件「建议收藏」

    LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。 在python中使用lmdb: linux中,可以使用指令‘pip install lmdb’ 安装lmdb包。 1. LMDB数据的添加、修改、删除 import lmdb # map_size定义最大储存容量,单位是kb,以下定义1TB容量 env = lmdb.open(". 查询lmdb数据库内容 import lmdb env = lmdb.open(". 读取已有lmdb文件内容 import lmdb env_db = lmdb.Environment('trainC') # env_db = lmdb.open(".

    2.4K10编辑于 2022-11-10
  • 来自专栏全栈程序员必看

    LMDB使用说明_ldd教程

    http://rayz0620.github.io/2015/05/25/lmdb_in_caffe/ 官方的extract_feature.bin很好用,但是输出的特征是放在LMDB里的。 Caffe中DataLayer默认的数据格式是LMDB。许多example中提供的输入数据是LMDB格式。使用extract_features.bin提取特征时支持的输出格式之一也是LMDBLMDB在Caffe的IO功能中有相当重要的地位。因此,搞明白如何存取Caffe的LMDB数据,对于我们使用Caffe是很有帮助的。 LMDB数据库只有一个文件,你的介质有多块,就能复制多快,不会因为文件多而慢如蜗牛。 Caffe中的LMDB数据 接下来要介绍Caffe是如何使用LMDB存放数据的。 存放进LMDB的就是Datum序列化生成的字符串。 Caffe中读写LMDB的代码 要想知道Caffe是如何使用LMDB的,最好的方法当然是去看Caffe的代码。

    1.7K10编辑于 2022-11-10
  • 来自专栏Yunfeng's Simple Blog

    Caffe中lmdb和leveldb格式数据的读取

    Caffe支持的数据库格式包括lmdb和leveldb,可能很多人是因为caffe才知道这两个库的,但其实这两个库也是非常出名的工具。 下面就展示下在Caffe里面用Python接口调用生成的LMDB或者LEVELDB格式的文件的代码吧。 LMDB 操作方式 具体方式见如下代码: import lmdb env = lmdb.open('pool5-lmdb', readonly=True) txn = env.begin() for

    1K20发布于 2019-12-25
  • 来自专栏全栈程序员必看

    LMDB笔记_pdf怎么做笔记

    本文记录在了解LMDB过程中接触的知识点。 LMDB基本架构 一个比较官方的解释:lmdb的基本做法是使用mmap文件映射,不管这个文件存储实在内存上还是在持久存储上。 lmdb的所有读取操作都是通过mmap将要访问的文件只读的映射到虚拟内存中,直接访问相应的地址.因为使用了read-only的mmap,同样避免了程序错误将存储结构写坏的风险。 lmdb把整个虚拟存储组织成B+Tree存储,索引和值读存储在B+Tree的页面上.对外提供了关于B+Tree的操作方式,利用cursor游标进行。可以进行增删改查。 解读 慢慢解读上面这段话。 参考:http://wiki.dreamrunner.org/public_html/C-C++/Library-Notes/LMDB.html https://www.cnblogs.com/kevingrace

    95130编辑于 2022-11-11
  • 来自专栏AIUAI

    Caffe2 - (十六) 创建 LMDB 数据库

    Caffe2 - 创建 lmdb Caffe2 提供了将数据转换为 lmdb 的 Demo. ## @package lmdb_create_example # Module caffe2.python.examples.lmdb_create_example print_function from __future__ import unicode_literals import argparse import numpy as np import lmdb import caffe2_pb2 from caffe2.python import workspace, model_helper ''' 基于随机生成的 image data 和 labels,创建 lmdb LMDB_MAP_SIZE = 1 << 40 # MODIFY env = lmdb.open(output_file, map_size=LMDB_MAP_SIZE) checksum write checksums dont match" def main(): parser = argparse.ArgumentParser(description="Example LMDB

    1.1K80发布于 2019-02-18
  • 来自专栏全栈程序员必看

    PyTorch使用LMDB数据库加速文件读取

    PyTorch使用LMDB数据库加速文件读取 文章目录 PyTorch使用LMDB数据库加速文件读取 背景介绍 具体操作 LMDB主要类 `lmdb.Environment` `lmdb.Transaction 具体操作 LMDB主要类 pip install lmdb lmdb.Environment lmdb.open() 这个方法实际上是 class lmdb.Environment(path, map_size ['lmdb_save_path'] meta_info = { 'name': opt['name']} if not lmdb_save_path.endswith('.lmdb'): raise ValueError("lmdb_save_path must end with 'lmdb'.") if os.path.exists(lmdb_save_path): print('Folder '), "wb")) print('Finish creating lmdb meta info.') def test_lmdb(dataroot, index=1): env = lmdb.open

    3.6K20编辑于 2022-11-11
  • 来自专栏数据分析与挖掘

    有效地读取图像,对比opencv、PIL、turbojpeg、lmdb、tfrecords

    LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。 定义最大储存容量,单位是kb,以下定义1TB容量 env = lmdb.open(". 将图像转换为lmdb格式的数据: import os from argparse import ArgumentParser import cv2 import lmdb import numpy as = lmdb.open(self.path) # open the environment by path lmdb_txn = lmdb_env.begin() # start reading lmdb_cursor = lmdb_txn.cursor() # create cursor to iterate through the database

    3.7K10发布于 2020-08-26
  • 来自专栏机器学习、深度学习

    VOC2012 分割数据 转 lmdb 格式 python 代码

    参考 caffe 将三通道或四通道图片转换为lmdb格式,将标签(单通道灰度图)转换为lmdb格式 http://blog.csdn.net/c_qianbo/article/details/53375476 import numpy as np import sys from PIL import Image import lmdb import random import os sys.path.append ) trainlist = f.readlines() f.close() random.shuffle(trainlist) # creating images lmdb in_db = lmdb.open('/home/guest/caffe/VOC2012ext_val_img_lmdb',\ map_size=int(1e12)) with in_db = lmdb.open('/home/guest/caffe/VOC2012ext_val_label_lmdb',\ map_size=int(1e12)) train_images_root

    93940发布于 2019-05-27
  • 来自专栏10km的专栏

    windows下msvcmingw静态编译 lmdb的CMakeLists.txt

    LMDB的全称是Lightning Memory-Mapped Database,闪电般的内存映射数据库,在github可以找到源码 https://github.com/LMDB/lmdb/tree (mdb_stat MDB_STAT_SRCS) LMDB_ADD_EXE(mdb_copy MDB_COPY_SRCS) LMDB_ADD_EXE(mdb_dump MDB_DUMP_SRCS) LMDB_ADD_EXE (mdb_load MDB_LOAD_SRCS) IF ( BUILD_TEST ) LMDB_ADD_EXE(mtest mtest.c) LMDB_ADD_EXE(mtest2 mtest2 .c) LMDB_ADD_EXE(mtest3 mtest3.c) LMDB_ADD_EXE(mtest4 mtest4.c) LMDB_ADD_EXE(mtest5 mtest5 \VC\vcvarsall.bat" x86_amd64 rem $lmdb_source_root 为lmdb源码的根目录 rem cd $lmdb_source_root\libraries\liblmdb

    2.7K60发布于 2018-01-03
  • 来自专栏SnailTyan

    用caffe将自己的图像数据转换成lmdb

    lib,生成lib文件,供其他的函数使用,如下图: 生成caffe.lib后,在编译convert_imageset.cpp时可以在附加依赖项中加上caffe.lib,在C++预处理器中加上USE_LMDB 和USE_OPENCV,如图 成功生成convert_imageset.exe后,准备将自己的图像数据变为lmdb格式。 1、准备自己的图像数据,放到一个文件夹下,例如NSP_Logo_HOG,我的文件夹,然后生成一个描述文件pos_hog.txt,内容是图像文件名和图像类别,然后准备一个保存lmdb数据的文件夹traindb

    41320编辑于 2022-05-09
  • 来自专栏全栈程序员必看

    lmdb数据库的读取与转换(二) —— 数据集操作

    数据集的lmdb 将数据集转换成lmdb实际上就是一条条地将img和label的key-value形式写进lmdb中 img数据在lmdb中是以二进制形式存储的 遍历lmdb中的数据 import cv2 import lmdb import numpy as np env = lmdb.open('. 中读取图片 import cv2 import lmdb import numpy as np env = lmdb.open('. import numpy as np env = lmdb.open('. 中写入数据 写入图片和label import lmdb image_path = './4.jpg' label = 'cat' env = lmdb.open('lmdb_dir') cache

    2.3K30编辑于 2022-11-10
  • 来自专栏SnailTyan

    lmdb编译过程中出现无法解析的外部符号 NtCreateSection

    在为Caffe编译lmdb.lib的过程中,碰到了下面的问题、 error LNK2019: 无法解析的外部符号 NtClose,该符号在函数 mdb_env_map 中被引用 D:\google-jar mdb_env_map 中被引用 D:\google-jar \liblmdb\mdb.obj 主要原因在于缺少了ntdll.lib文件,可以去网上百度一下去下载,然后添加到附加依赖项重新编译lmdb

    1.4K10编辑于 2022-05-09
  • windows 10+ubuntu16.04全程配置CPU版本的caffe ssd并训练自己的数据研究报告

    \data\VOCdevkit\VOC2012然后JPEGImages放进去自己的jpg文件,Annotations放进自己的标注文件 删除D:\caffe-ssd-microsoft\myproj/lmdb 里面的train_lmdb文件夹和test_lmdb文件夹,不然生成lmdb会提示错误 bat文件夹里面有个xml2txt.py,这个是将图片转为txt文件,dos窗口切换到bat目录,执行python 即可生成train_lmdb和test_lmdb,注意双击前确保train_lmdb和test_lmdb文件夹不要存在,否则会报错 双击bat文件夹里面的starttrain.bat即可开始训练、 在ubunutu 里面的train_lmdb文件夹和test_lmdb文件夹,不然生成lmdb会提示错误 打开xml2txt.py修改里面用户名,我的是fut改改用户名就可以了,用替换的方法就可以,然后终端切换到script 即可生成lmdb,生成的文件在lmdb里面查看 终端切换到script目录,执行python test_lmdb_gen.py即可生成lmdb,生成的文件在lmdb里面查看 终端切换到script目录,

    18110编辑于 2025-07-18
  • windows下Caffe转换图像到lmdb提示MDB_MAP_FULL: Environment mapsize limit reached解决方案

    ,没有windows下解决方案,其实就是更改默认的MAP SIZE即可,方法: 进入caffe-windows文件夹,在我的电脑搜索db_lmdb,找到db_lmdb.cpp文件然后打开它看到如下代码 We will reduce lmdb size to make tests pass. static_assert(sizeof(size_t) >= 8, "LMDB size overflow."); #else const size_t LMDB_MAP_SIZE = 1099511627776 //const size_t LMDB_MAP_SIZE = 104857600;    // 100 MB    const size_t LMDB_MAP_SIZE = 524288000;     static_assert(sizeof(size_t) >= 8, "LMDB size overflow."); #else const size_t LMDB_MAP_SIZE = 1099511627776

    15400编辑于 2025-07-18
领券