排序三种办法的性能比较

排序三种办法的性能比较

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; 
  }   
}  

你可能感兴趣的:(Ubutun,Python,AI)