infer.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import glob
  2. import numpy as np
  3. import threading
  4. import time
  5. import random
  6. import os
  7. import base64
  8. import cv2
  9. import json
  10. import paddlex as pdx
  11. # 待预测图片路径
  12. image_name = 'dataset/JPEGImages/hard_hat_workers1049.jpg'
  13. # 预测模型加载
  14. model = pdx.load_model('output/yolov3_darknet53/best_model')
  15. # 读取图片与获取预测结果
  16. img = cv2.imread(image_name)
  17. result = model.predict(img)
  18. # 解析预测结果,并保存到txt中
  19. keep_results = []
  20. areas = []
  21. f = open('result.txt', 'a')
  22. count = 0
  23. for dt in np.array(result):
  24. cname, bbox, score = dt['category'], dt['bbox'], dt['score']
  25. if score < 0.5:
  26. continue
  27. keep_results.append(dt)
  28. count += 1
  29. f.write(str(dt) + '\n')
  30. f.write('\n')
  31. areas.append(bbox[2] * bbox[3])
  32. areas = np.asarray(areas)
  33. sorted_idxs = np.argsort(-areas).tolist()
  34. keep_results = [keep_results[k]
  35. for k in sorted_idxs] if len(keep_results) > 0 else []
  36. print(keep_results)
  37. print(count)
  38. f.write("the total number is :" + str(int(count)))
  39. f.close()
  40. # 可视化保存
  41. pdx.det.visualize(
  42. image_name, result, threshold=0.5, save_dir='./output/yolov3_darknet53')