✨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
版权所有,如需转载请注明出处。