Чтение данных Caffe LMDB в Python - PullRequest
0 голосов
/ 29 ноября 2018

Я сгенерировал базу данных LMDB, используя вилку SSD-Caffe здесь .Я успешно сгенерировал каталоги VCD LMDB trainval / test LMDB и могу тренировать модель.

Однако я хочу знать, как получить доступ к содержимому базы данных.Основываясь на ответе здесь , я использую этот код:

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\...'. Это выдает ошибку в PIL.Image.open(ss)):

*** IOError: cannot identify image file <StringIO.StringIO instance at 0x7f32749a1dd0>

Следует отметить, что база данных LMDB содержит как (1) изображения jpg, так и (2) аннотации ограничивающего прямоугольника. Я хотел бы восстановить оба!

Спасибо!

...