读取leveldb(.ldb)使用caffe提取的特征

时间:2016-07-12 09:38:53

标签: caffe leveldb

我使用以下命令进行特征提取: ./build/tools/extract_features.bin models / bvlc_reference_caffenet / bvlc_reference_caffenet.caffemodel examples / _temp / imagenet_val.prototxt fc7 examples / _temp / features 10 leveldb GPU 0 我使用以下代码来阅读leveldb功能: https://15519285443829437810.googlegroups.com/attach/b71d5c99c447fc2a/main.cpp?part=0.1&view=1&vt=ANaJVrHM26ydsY5Z2ognvhBaFtDzXnE_SiVf19DLkrNpf9Q34t5O4bJWy0nHH_HBnBAVx5wZusXd1joX93JBK0_r7XKEIc-5odz9_HPHV1RUo8MD3zNHgoY

一切正常,我现在有一个.ldb文件。 我怎么能读到这个.ldb文件?我可以将其更改为.text吗?

1 个答案:

答案 0 :(得分:1)

我使用了以下代码:

import caffe
import leveldb
import numpy as np
from caffe.proto import caffe_pb2
db = leveldb.LevelDB('/home/deep/rahim/caffe-master/examples/_temp/features')
datum = caffe_pb2.Datum()

for key, value in db.RangeIter():
    datum.ParseFromString(value)

    label = datum.label
    data = caffe.io.datum_to_array(datum)

    image = np.transpose(data, (1,2,0))

    np.save('feature.txt',image)

然后将feature.txt.npy传递给以下代码,将.npy转换为.txt:

import struct
import numpy as np
import os

def parseNPY(path, fileJustName):
    # load from the file
    inputFile = os.path.join(path, fileJustName + ".npy")
    matrices = np.load(inputFile)

    outputfile = os.path.join(path, fileJustName)
    for m in range(matrices.shape[0]):
        # file name for this matrix
        outFileFull = outputfile + "-" + str(m) + ".txt"
        # output matrix to a numbered file
        np.savetxt(outFileFull, matrices[m], fmt="%i", delimiter="\t")


 mypath = "/home/deep/rahim/caffe-master/python/"

 for path, paths, filenames in os.walk(mypath):
 # translate all filenames.
 for filename in filenames:
    fileJustName, fileExtension = os.path.splitext(filename)
    if fileExtension == ".npy":
        print(os.path.join(path, fileJustName))
        parseNPY(path, fileJustName)