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