我使用SSD-Caffe分支here生成了LMDB数据库。我已经成功生成了VOC LMDB trainval / test LMDB目录,并且能够训练模型。
但是,我想知道如何访问数据库的内容。基于答案here,我正在使用以下代码:
import caffe
import lmdb
import PIL.Image
from StringIO import StringIO
import numpy as np
lmdb_file = 'data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb/'
cursor = lmdb.open(lmdb_file, readonly=True).begin().cursor()
datum = caffe.proto.caffe_pb2.Datum()
for key, value in cursor:
print(key)
datum.ParseFromString(value)
ss = StringIO()
ss.write(datum.data)
ss.seek(0)
print(np.array(PIL.Image.open(ss)))
但是,它失败了。 key
变量似乎是正确的(我得到的值类似于'00000000_VOC2007/JPEGImages/002378.jpg'
。但是,value
变量给出了一个字节串,例如:'\n\xee\xa7\t\x08\x03\x10\xf7\x02\x18\xf4\x03"\xd5\xa7\...'
。这在{{1} }:
PIL.Image.open(ss))
我应该注意,LMDB数据库包含(1)jpg图像和(2)边界框注释。我都想恢复!
谢谢!