Caffe中lmdb和leveldb格式數據的讀取

  • 2019 年 12 月 25 日
  • 筆記

概述

Caffe裡面的一種數據存儲和讀取方式是使用資料庫格式,將數據保存到特定的一個資料庫文件中,然後在程式碼裡面整個讀入這個資料庫文件。Caffe支援的資料庫格式包括lmdb和leveldb,可能很多人是因為caffe才知道這兩個庫的,但其實這兩個庫也是非常出名的工具。下面就展示下在Caffe裡面用Python介面調用生成的LMDB或者LEVELDB格式的文件的程式碼吧。

LMDB 操作方式

具體方式見如下程式碼:

import lmdb  env = lmdb.open('pool5-lmdb', readonly=True)  txn = env.begin()  for k, v in txn.cursor():  	print k,v    cur = txn.cursor()  k, v = cur.item()  print k,v  v = txn.get(k)  print v    import sys  sys.path.insert(0, '/data2/yunfeng/caffe20161019/python/')  import caffe  datum = caffe.proto.caffe_pb2.Datum()  datum.ParseFromString(v)  print datum.label, datum.channels, datum.width, datum.height    import numpy as np  data = caffe.io.datum_to_array(datum)  print data.shape

LEVELDB 操作方式:

import leveldb  db = leveldb.LevelDB('pool5-leveldb')  for k, v in db.RangeIter():  	print k,v    v = db.Get(k)  db.Put('new_key', 'new_value')  db.Delete('new_key')    batch = leveldb.WriteBatch();  batch.Put('hello', 'world');  batch.Put('hello again', 'world');  batch.Delete('hello');  db.Write(batch, sync = True);    import sys  sys.path.insert(0, '/data2/yunfeng/caffe20161019/python/')  import caffe  datum = caffe.proto.caffe_pb2.Datum()  datum.ParseFromString(v)  print datum.label, datum.channels, datum.width, datum.height    import numpy as np  data = caffe.io.datum_to_array(datum)  print data.shape