繼上一篇完成模型的訓練後,接著我們就可以對模型進行測試,確認是否能準確地抓到車牌框吧!
predict_and_plot
的副程式,可以對輸入進的圖片進行處理。import cv2
import matplotlib.pyplot as plt
from ultralytics import YOLO
def predict_and_plot(path_test_car):
# 使用模型對測試的圖片做預測
results = model.predict(path_test_car, device='cpu')
# 使用cv2讀取圖片
image = cv2.imread(path_test_car)
# 將影像從BGR轉為RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 從結果提取出邊界框和標籤
for result in results:
for box in result.boxes:
# 獲取邊界框的座標
x1, y1, x2, y2 = map(int, box.xyxy[0])
# 獲取邊界框的信心分數
confidence = box.conf[0]
# 在圖片上繪製邊界框
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
#在圖片周圍繪製信心分數
cv2.putText(image, f'{confidence*100:.2f}%', (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)
# 使用matploblib繪製出影像
plt.imshow(image)
plt.axis('off')
plt.show()
predict_and_plot(r'c:/Users/使用者/Documents/projects/Car_License/Modle/test/images/Cars323.png')
可以得出下圖的結果,可以看到車牌的邊界框順利的辨識出來了。以下會多放幾張不同角度及距離的測試圖片。
可以看到,距離越遠,角度越刁鑽,準確率就會大幅的下降,可見選擇好的訓練素材的重要性。接著會試著將模型進行微調,測試能否再提高準確率,那我們下篇見。