文件格式之lmdb

匿名 (未验证) 提交于 2019-12-03 00:22:01

LMDB:是一种极大减少IO开销的数据管理方式,特别是对于样本多,但是都是小样本的情况特别合适。该数据格式采用的是一种字典的格式。


使用caffe对数据进行处理时,需要将图片转化为lmdb格式的。

求助百度百科,无词条,求助wikipedia,成功,地址.
lmdb 是Lightning Memory-Mapped Database的缩写。
LMDB示例文件为

它包含一个数据文件和一个锁文件。

python 操作

参考教程1,教程2教程3
python module Ϊlmdb
直接通过pip进行安装

pip install lmdb
  • 1

读 LMDB

import caffe import lmdb import numpy as np import cv2 from caffe.proto import caffe_pb2  lmdb_env = lmdb.open('lmdb_data') lmdb_txn = lmdb_env.begin() lmdb_cursor = lmdb_txn.cursor() datum = caffe_pb2.Datum()  for key, value in lmdb_cursor:     datum.ParseFromString(value)      label = datum.label     data = caffe.io.datum_to_array(datum)      #CxHxW to HxWxC in cv2     image = np.transpose(data, (1,2,0))     cv2.imshow('cv2', image)     cv2.waitKey(1)     print('{},{}'.format(key, label)) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

д

import lmdb import numpy as np import cv2 import caffe from caffe.proto import caffe_pb2  #basic setting lmdb_file = 'lmdb_data' batch_size = 256  # create the lmdb file lmdb_env = lmdb.open(lmdb_file, map_size=int(1e12)) lmdb_txn = lmdb_env.begin(write=True) datum = caffe_pb2.Datum()  item_id = -1 for x in range(1000):     item_id += 1      #prepare the data and label     data = np.ones((3,64,64), np.uint8) * (item_id%128 + 64) #CxHxW array, uint8 or float     label = item_id%128 + 64      # save in datum     datum = caffe.io.array_to_datum(data, label)     keystr = '{:0>8d}'.format(item_id)     lmdb_txn.put( keystr, datum.SerializeToString() )      # write batch     if(item_id + 1) % batch_size == 0:         lmdb_txn.commit()         lmdb_txn = lmdb_env.begin(write=True)         print (item_id + 1)  # write last batch if (item_id+1) % batch_size != 0:     lmdb_txn.commit()     print 'last batch'     print (item_id + 1)
文章来源: 文件格式之lmdb
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!