作成した LMDB データベースから画像とラベル データをロードしたいと考えています。対応するイメージとラベルのペアに一意のキーを割り当て、それらを LMDB に追加します (例: image-000000001、label-000000001)。画像を保存する際に、 を使用して画像の numpy-array を文字列に変換しますimage.tostring()
。LMDB をロードしているときに、生成したキーを渡すだけで非常に簡単にラベルを取得できることがわかりますが、画像データはエンコードされた方法で表示されます。をしてもうまくいきnumpy.fromstring(lmdb_cursor.get('image-000000001'))
ません。
ここに表示されます-具体的には@Ghilas BELHADJによる2番目の回答は、 Caffe-datumオブジェクトを使用して最初にデータをロードし、次にを使用して画像をフェッチする必要がありますdatum.data
。しかし、「データ」タグと「ラベル」タグを使用して画像とラベルを整理するような構造はありません。PythonでそのようなLMDBからnumpy画像の形式でデータを正しく読み取るにはどうすればよいですか?
Lua では、これは次のように実現できます。
local imgBin -- this is the object returned from cursor:get(image-id)
local imageByteLen = string.len(imgBin)
local imageBytes = torch.ByteTensor(imageByteLen):fill(0)
imageBytes:storage():string(imgBin)
local img = Image.decompress(imageBytes, 3, 'byte')
img = Image.rgb2y(img)
img = Image.scale(img, imgW, imgH)
Pythonでこれを行う方法がわかりません。