在前天的文章中,已經初步訓練好了模型,接下來將進行檢視訓練的準確度以及測試模型是否能正確地抓到車牌的框線。
result.csv
檔,並利用matplotlib繪製圖形的準確率。import os
import pandas as pd
import matplotlib.pyplot as plt
from glob import glob
# 找尋最新的訓練檔
log_dir = max(glob(r'c:/Users/sywu0/runs/detect/train'), key = the_number_in_the_string)
# 從csv中讀取訓練的結果
results = pd.read_csv(os.path.join(log_dir, 'results.csv'))
results.columns = results.columns.str.strip() # 刪除多餘的空格
# 提取epochs和accuracy的指標
epochs = results.index + 1
mAP_0_5 = results['metrics/mAP50(B)'] # IoU的平均精度是0.5
mAP_0_5_0_95 = results['metrics/mAP50-95(B)'] # IoU的平均精度是0.5:0.95
#繪製epochs的accuracy
plt.figure(figsize=(10, 5))
plt.plot(epochs, mAP_0_5, label = 'mAP@0.5')
plt.plot(epochs, mAP_0_5_0_95, label = 'mAP@0.5:0.95')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.title('Accuracy Over Epochs')
plt.legend()
plt.grid(True)
plt.show()
根據上面的程式碼,可得出如下圖的結果。
最後再將模型給儲存下來。
model.save('best_license_plate_model.pt')
這樣就完成了模型的提取的部分,接著進行評估的部分。
在上面的圖片中,可以看到先前提過的mAP和mean Average Precision,用兩條曲線分別表示mAP@0.5 和 mAP@0.5:0.95,以下分別說明曲線的準確率。
綜合來說,模型的表現尚可,由於樣本數低的關係,訓練出來的結果mAP值以嚴格的判定條件下還有改進的空間,那下一篇將會進行模型的測試,我們下篇見。