start = time.time()
fo = open(resultname, “w”)
task = n2cube.dpuCreateTask(kernel, 0)
print("\n")
height, width, channel, mean = preprocess.parameter(task, KERNEL_CONV_INPUT)
#print(“outputMean = %f”%mean[0])
for i in range(imagenumber):
path = os.path.join(image_folder, listimage[i])
img = cv2.imread(path)
softmax = predict_label(img, task, scale, mean, height, width, channel)
TopK(softmax,listimage[i],fo)
fo.close()
n2cube.dpuDestroyTask(task)
end = time.time()
fps = float(imagenumber/(end-start))
latency = 1000/fps
print("\n%.2f FPS\n" % fps)
print(“latency = %f ms\n” % latency)
def TopK(softmax,imagename,fo):
q = queue.PriorityQueue()
for i in range(len(softmax)):
q.put((-softmax[i],i))
print(imagename)
for i in range(top):
ki = q.get()
print("ki[0] = %f ki[1] = %d"%(-ki[0],ki[1]))
print('top{} prob = {} name = {}'.format(i, -ki[0],lines[ki[1]]))
fo.write(imagename+" "+str(ki[1])+"\n")
cnt = [i for i in range(outputchannel)]
def TopK(softmax,imagename, cnt, fo):
print(imagename)
pair = zip(softmax, cnt)
pair = sorted(pair, reverse=True)
softmax_new1, cnt_new = zip(*pair)
for i in range(top):
fo.write(imagename+" "+str(cnt_new[i])+"\n")
print("cnt_new = %d" % cnt_new[i])
print("softmax_new1 = %f" % softmax_new1[i])'''
def TopK(softmax,imagename, cnt, fo):
print(imagename)
for i in range(top):
num = np.argmax(softmax)
fo.write(imagename+" "+str(num)+"\n")
print("num = %d" % num)
print("softmax = %f" % softmax[num])
softmax[num] = 0
int maxArrayIntCount(float* arr, int size)
{
int nCount = 0;
for (int i = 1; i < size; i++)
{
if (arr[i] > arr[nCount])
{
nCount = i;
}
}
return nCount;
}
void TopK(float *d, int size, int k, string imageName) {
//void TopK(const float *d, int size, int k, vector &vkinds, string imgname) {
// cout << "Load image : " << imageName << endl;
int num;
for (auto i = 0; i < k; ++i) {
num = maxArrayIntCount(d, size);
out << imageName << " " << num << endl;
d[num] = 0;
// cout << "number = " << num << endl;
}
}