✨yolov5訓練結果生成
yolov5每次train完成(如果沒有中途退出)
都會在run目錄下生成expX目錄(X代表生成結果次數 第一次訓練完成生成exp0 第二次生成exp1......以此類推)
expX目錄下會保存訓練生成weights以及result.txt
(其中weights是訓練生成權重,可用於detect)
並以可視化的方式展示訓練結果 -> result.png
✨可視化訓練結果解析
-
GIoU:推測為GIoU損失函數均值,越小方框越准;
-
Objectness:推測為目標檢測loss均值,越小目標檢測越准;
-
Classification:推測為分類loss均值,越小分類越准;
-
Precision:精度(找對的正類/所有找到的正類);
翻譯成中文就是“分類器認為是正類並且確實是正類的部分占所有分類器認為是正類的比例”,衡量的是一個分類器分出來的正類的確是正類的概率。兩種極端情況就是,如果精度是100%,就代表所有分類器分出來的正類確實都是正類。如果精度是0%,就代表分類器分出來的正類沒一個是正類。光是精度還不能衡量分類器的好壞程度,比如50個正樣本和50個負樣本,我的分類器把49個正樣本和50個負樣本都分為負樣本,剩下一個正樣本分為正樣本,這樣我的精度也是100%,但是顯然這個分類器不太行。
- Recall:召回率(找對的正類/所有本應該被找對的正類);
翻譯成中文就是“分類器認為是正類並且確實是正類的部分占所有確實是正類的比例”,衡量的是一個分類能把所有的正類都找出來的能力。兩種極端情況,如果召回率是100%,就代表所有的正類都被分類器分為正類。如果召回率是0%,就代表沒一個正類被分為正類。
- mAP@0.5 & mAP@0.5:0.95:就是mAP是用Precision和Recall作為兩軸作圖后圍成的面積,m表示平均,@后面的數表示判定iou為正負樣本的閾值,@0.5:0.95表示閾值取0.5:0.05:0.95后取均值。
一般訓練結果主要觀察精度和召回率波動情況
(波動不是很大則訓練效果較好)
然后觀察mAP@0.5 & mAP@0.5:0.95 評價訓練結果
✨result.txt解析
yolov5-3.1中train.py第322行有如下的代碼
# Write
with open(results_file, 'a') as f:
f.write(s + '%10.4g' * 7 % results + '\n') # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls)
if len(opt.name) and opt.bucket:
os.system('gsutil cp %s gs://%s/results/results%s.txt' % (results_file, opt.bucket, opt.name))
這部分代碼應該是把每次迭代結果寫入result.txt
根據相應注釋可推測result.txt中
倒數第7列至倒數第4列是每次迭代后相應的Precision、Recall、mAP@0.5、mAP@0.5:0.95
✨參考及引用
https://blog.csdn.net/weixin_41990671/article/details/107300314
https://blog.csdn.net/hsqyc/article/details/81702437
⭐轉載請注明出處
本文作者:雙份濃縮馥芮白
原文鏈接:https://www.cnblogs.com/Flat-White/p/14724045.html
版權所有,如需轉載請注明出處。