尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【YOLO 入门到精通 07】验证与性能评估:读懂 mAP、Precision、Recall

【YOLO 入门到精通 07】验证与性能评估:读懂 mAP、Precision、Recall 【YOLO 入门到精通 07】验证与性能评估读懂 mAP、Precision、Recall标签mAP模型评估混淆矩阵PrecisionRecall过拟合难度⭐⭐⭐ |阅读时长约 55 分钟 |系列第 07/12 集前置06 训练 |下一集08 推理指南写在前面训练完不等于能用。一个 mAP 0.3 的模型上线后可能误报满天飞。验证就是给模型「体检」——用数据说话决定能不能部署。本集教你读懂每一个指标并学会从混淆矩阵定位问题类别。本集学习目标理解 IoU、Precision、Recall、mAP使用 val 模式评估模型分析混淆矩阵和 PR 曲线判断过拟合并选择最佳 conf 阈值文章目录【YOLO 入门到精通 07】验证与性能评估读懂 mAP、Precision、Recall写在前面本集学习目标7.1 为什么需要验证过拟合识别7.2 核心指标详解IoU交并比Precision Recall混淆矩阵7.3 mAP 详解7.4 执行验证输出解读7.5 可视化分析选最佳 conf7.6 模型对比7.7 错误分析逐类 AP 分析7.8 踩坑指南7.9 常见问题 FAQ7.10 本集小结7.1 为什么需要验证阶段数据目的Train训练集学习Val验证集调参、选 best.ptTest测试集最终报告过拟合识别Loss │ 训练损失 ──────────── │ ╲ │ 验证损失 ╲____╱ ← 过拟合验证损失回升 └──────────────────────→ Epoch7.2 核心指标详解IoU交并比IoU 交集面积 / 并集面积 IoU1.0 完全重合 | IoU0.5 一半重叠常用阈值| IoU0 不重叠defiou(box1,box2):# [x1,y1,x2,y2]x1,y1max(box1[0],box2[0]),max(box1[1],box2[1])x2,y2min(box1[2],box2[2]),min(box1[3],box2[3])intermax(0,x2-x1)*max(0,y2-y1)a1(box1[2]-box1[0])*(box1[3]-box1[1])a2(box2[2]-box2[0])*(box2[3]-box2[1])returninter/(a1a2-inter1e-6)Precision Recall指标公式含义低时怎么办PrecisionTP/(TPFP)预测对的占多少提高 confRecallTP/(TPFN)找到了多少真目标降低 confF12PR/(PR)综合平衡找最佳 conf混淆矩阵预测正预测负实际正TPFN漏检实际负FP误检TN7.3 mAP 详解指标含义场景mAP0.5IoU≥0.5 即算对宽松mAP0.5:0.95IoU 0.5~0.95 步长0.05 平均COCO 标准mAP0.75IoU≥0.75严格mAP50-95评价0.3较差0.3~0.5一般0.5~0.7良好0.7~0.9优秀0.9非常优秀7.4 执行验证yolo detect valmodelruns/detect/train/weights/best.ptdatamy_dataset.yamlfromultralyticsimportYOLO modelYOLO(runs/detect/train/weights/best.pt)metricsmodel.val(datamy_dataset.yaml,imgsz640,conf0.001,plotsTrue)print(fmAP50:{metrics.box.map50:.4f})print(fmAP50-95:{metrics.box.map:.4f})print(fPrecision:{metrics.box.mp:.4f})print(fRecall:{metrics.box.mr:.4f})输出解读Class Images Instances Box(P R mAP50 mAP50-95) all 50 150 0.85 0.78 0.82 0.65 cat 50 80 0.90 0.85 0.88 0.72 dog 50 70 0.80 0.71 0.76 0.587.5 可视化分析训练后在runs/detect/val/查看文件内容confusion_matrix.png类别混淆PR_curve.png精确率-召回率F1_curve.png最佳 conf 参考val_batch0_pred.jpg预测 vs 真实对比选最佳 confforconfin[0.1,0.25,0.5,0.7]:mmodel.val(datadata.yaml,confconf,verboseFalse)p,rm.box.mp,m.box.mr f12*p*r/(pr1e-6)print(fconf{conf}: P{p:.3f}R{r:.3f}F1{f1:.3f})7.6 模型对比models{n:runs/n/weights/best.pt,s:runs/s/weights/best.pt}forname,pathinmodels.items():mYOLO(path).val(datadata.yaml,verboseFalse)print(fyolo26{name}: mAP{m.box.map:.4f}, P{m.box.mp:.4f}, R{m.box.mr:.4f})模型mAP速度场景n较低最快实时m中等中等通用x最高最慢离线高精度7.7 错误分析错误表现排查定位差框偏移看 box_loss分类错张冠李戴看混淆矩阵漏检Recall 低降 conf / 增数据误检Precision 低升 conf重复框同目标多个框调 iou逐类 AP 分析metricsmodel.val(datadata.yaml)fori,apinenumerate(metrics.box.ap50):print(f{model.names[i]}: AP50{ap:.4f})# 找最差类别 → 针对性增数据worstsorted(zip(model.names.values(),metrics.box.ap50),keylambdax:x[1])[:3]print(需改进:,worst)7.8 踩坑指南坑解决只看 mAP50生产看 mAP50-95val 用训练集必须独立 val 集conf0.25 验证验证用 conf0.001 得完整 PR 曲线指标好但实战差检查 val 分布是否代表真实场景7.9 常见问题 FAQQ1mAP 多少能上线A视业务而定。安防误报代价高→重 Precision漏检代价高→重 Recall。一般 mAP50-95 0.5 可尝试部署。Q2训练和验证 mAP 差很多A过拟合。增数据、早停、减 epochs。7.10 本集小结指标关注点IoU定位准不准Precision误报多不多Recall漏检多不多mAP50-95综合性能← 第06集第08集推理指南 →
返回列表