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