您的位置:首页 > 编程语言 > MATLAB

caffe 提取可视化特征遇到keyerror(即用matlab显示提取特征)

2016-05-10 12:27 796 查看
首先感谢http://blog.csdn.net/lcj_cjfykx/article/details/47272193这篇博客 我的大部分都是从这篇博客改过来的

但是遇到一个keyerror问题 我将leveldb2mat.py做了一些修改
结果也很正确 为了互相学习 我将代码发给大家同时希望我们可以互相讨论 对于有的人问特征29040这个怎么计算出来的 我找过一篇博客大家看看也就知道怎么做的了

leveldb2mat.py代码

import leveldb

import feat_helper_pb2

import numpy as np

import scipy.io as sio

import time

import collections

def main(argv):

leveldb_name = sys.argv[1]

print "%s" % sys.argv[1]

batch_num = int(sys.argv[2]);

batch_size = int(sys.argv[3]);

window_num = batch_num*batch_size;

start = time.time()

if 'db' not in locals().keys():

db = leveldb.LevelDB(leveldb_name)

datum = feat_helper_pb2.Datum()

it = db.RangeIter()

ft = np.zeros((int(sys.argv[6]), int(sys.argv[4])))

#featureFile=sys.argv[5]

#output = open(featureFile, 'wb')

print "%s" %it

for key,value in it:

print "%d" %int(sys.argv[6])

if int(key)==int(sys.argv[6]):

break

datum.ParseFromString(db.Get(key))

#if

print "%s" %key

print "%d" %len(datum.float_data)

#str = ' '.join(str(i) for i in datum.float_data)

#output.write(str)

#output.write("\n")

#print "%s" %value.size()

ft[int(key), :] = datum.float_data

#for im_idx in range(window_num):

#datum.ParseFromString(db.Get(im_idx))

#ft[im_idx, :] = datum.float_data

#sort_features = collections.OrderedDict(sorted(ft.items()))

#for k, arr in sort_features.iteritems():

print 'time 1: %f' %(time.time() - start)

sio.savemat(sys.argv[5], {'feats':ft})

print 'time 2: %f' %(time.time() - start)

print 'done!'

#output.close()

#leveldb.DestroyDB(leveldb_name)

if __name__ == '__main__':

import sys

main(sys.argv)

原先需要五个参数但是现在需要六个参数

例如第六个参数就是有多少图片需要提取特征

python
latelevel2mat.py examples/mytestextractFeature/feature/fivepicfeatures_conv 1 10 290400

examples/mytestextractFeature/feature/fivefeatures.mat 5

第六个参数就是我新添加了 提取前五幅图像特征,

对了我现在只是做了五幅图像的 没有做500幅图像往上的 如果有人做了 也希望讨论可以找我讨论

我把第五幅图像的特征贴上了

效果如下:



原图是一张飞机
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: