# coding=utf-8
from __future__ import division
import os
import caffe
import numpy as np
#import datetime
import time
import cv2
root = '/home/x306/xn/caffe-master/'
deploy = root + 'examples/facetestquestions/finetuning_deploy.prototxt'
#Different models correspond to different deploy.prototxt
caffe_model = root + 'examples/facetestquestions/model/mnin_plant_pre_iter_30000.caffemodel'
#Replace trim or original model
mean_file = root + 'examples/facetestquestions/plant_mean.npy'
labels_filename = root + 'examples/facetestquestions/synset_words.txt'
dir = root + 'examples/facetestquestions/test/'
for class_name in os.listdir(dir):
#for index,name in enumerate(classes):
class_path = dir+class_name+"/"
for filename in os.listdir(class_path):
img_path = class_path + filename
image = cv2.imread(img_path)
caffe.set_mode_gpu()
filelist = []
filenames = os.listdir(dir)
for fn in filenames:
fullfilename = os.path.join(dir, fn)
filelist.append(fullfilename)
net = caffe.Net(deploy, caffe_model, caffe.TEST)
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2, 0, 1))
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))
transformer.set_raw_scale('data', 255)
transformer.set_channel_swap('data', (2, 1, 0))
#f=open(root + 'examples/facetestquestions/plant_test.txt','r')
#lines=f.readlines()
#f.close()
#def time_1():
# begin = datetime.datetime.now()
# sum = 0
# for i in xrange(10000000):
# sum = sum + i
# end = datetime.datetime.now()
# return end - begin
#sts=[]
#for line in lines:
# for st in line.split():
# sts.append(st)
#print(sts)
#for st in sts:
# print(st[0:-1])
j = 0
x = 0
num = 0
i = 0
startall = time.time()
#for i in range(0, len(filelist)):
# start = time.time()
# img = filelist[i]
for class_name in os.listdir(dir):
#for index,name in enumerate(classes):
class_path = dir+class_name+"/"
for filename in os.listdir(class_path):
start = time.time()
img_path = class_path + filename
print filename
im = caffe.io.load_image(img_path)
net.blobs['data'].data[...] = transformer.preprocess('data', im)
out = net.forward()
labels = np.loadtxt(labels_filename, str, delimiter='/t')
prob = net.blobs['prob'].data[0].flatten()
index1 = prob.argsort()[-1]
index2 = prob.argsort()[-2]
index3 = prob.argsort()[-3]
index4 = prob.argsort()[-4]
#sts = []
#for line in lines:
# for st in line.split():
# sts.append(st)
#stc = sts[i]
#i = i + 1
#num = len(sts)
#stri = 'noplant'
#if labels[index1] == stri:
# x = x + 1
if class_name == labels[index1]:
j = j + 1
print labels[index1], '--', prob[index1]
print labels[index2], '--', prob[index2]
#print labels[index3], '--', prob[index3]
#print labels[index4], '--', prob[index4]
end = time.time()
print str(end - start)
endall = time.time()
number = 60
print 'TP=', j
print 'FN=', number - j
print 'TPR=', j/number
print 'The average processing time is:', (endall - startall)/len(filelist)
训练好的caffemodel对图像进行批量测试并输出其TP、FN、TRP以及测试平均使用时间。
猜你喜欢
转载自blog.csdn.net/xunan003/article/details/80377451
今日推荐
周排行