在Python中读取Caffe LMDB数据

时间:2018-11-29 02:03:16

标签: python caffe stringio lmdb

我使用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)边界框注释。我都想恢复!

谢谢!

0 个答案:

没有答案