AI视觉:检验训练的模型是否已经收敛
print(f"精确度 (Precision): {results.box.p[0]:.4f}")# 修正这里。print(f"召回率 (Recall): {results.box.r[0]:.4f}")# 修正这里。print(f"F1分数: {results.box.f1[0]:.4f}")print("💡 建议:训练已经充分,可以直接使用模型")print("\n=== 各类别性能 ===
相关代码:
from ultralytics import YOLO
def evaluate_training():
# 加载最佳模型
model = YOLO('runs/train/my_yolo11_model/weights/best.pt')
# 在验证集上评估模型
results = model.val(
data='../configs/my_dataset.yaml', # 注意路径调整
device='mps'
)
print("=== 模型评估结果 ===")
print(f"mAP50: {results.box.map50:.4f}")
print(f"mAP50-95: {results.box.map:.4f}")
print(f"精确度 (Precision): {results.box.p[0]:.4f}") # 修正这里
print(f"召回率 (Recall): {results.box.r[0]:.4f}") # 修正这里
print(f"F1分数: {results.box.f1[0]:.4f}")
# 各类别详细结果
print("\n=== 各类别性能 ===")
for i, class_name in enumerate(['cat', 'bird']): # 根据你的类别修改
print(f"{class_name}: mAP50={results.box.ap50[i]:.4f}, mAP50-95={results.box.ap[i]:.4f}")
# 性能评估
print("\n=== 性能分析 ===")
if results.box.map50 > 0.8:
print("✅ 优秀!模型性能非常好!")
print("💡 建议:训练已经充分,可以直接使用模型")
elif results.box.map50 > 0.6:
print("✅ 良好!模型性能不错")
print("💡 建议:可以继续训练或直接使用")
elif results.box.map50 > 0.4:
print("⚠️ 一般!模型有改进空间")
print("💡 建议:继续训练或调整参数")
else:
print("❌ 较差!需要优化")
print("💡 建议:检查数据质量或重新训练")
return results
if __name__ == '__main__':
evaluate_training()
结果是好是坏呢?
/Users/hogworts/miniconda3/envs/yolo11/bin/python /Users/hogworts/PycharmProjects/my-yolo-proj/scripts/evaluate_model.py
Ultralytics 8.3.217 🚀 Python-3.9.24 torch-2.8.0 MPS (Apple M2)
YOLO11n summary (fused): 100 layers, 2,582,737 parameters, 0 gradients, 6.3 GFLOPs
val: Fast image access ✅ (ping: 0.0±0.0 ms, read: 273.1±174.0 MB/s, size: 75.0 KB)
val: Scanning /Users/hogworts/PycharmProjects/my-yolo-proj/datasets/my_dataset/labels/val.cache... 4 images, 0 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 4/4 124.3Kit/s 0.0s
Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 1/1 0.9it/s 1.1s
all 4 4 0.0133 1 0.802 0.722
cat 3 3 0.0244 1 0.608 0.548
bird 1 1 0.00216 1 0.995 0.895
Speed: 1.8ms preprocess, 193.0ms inference, 0.0ms loss, 22.4ms postprocess per image
Results saved to /Users/hogworts/PycharmProjects/my-yolo-proj/scripts/runs/detect/val2
=== 模型评估结果 ===
mAP50: 0.8017
mAP50-95: 0.7219
精确度 (Precision): 0.0244
召回率 (Recall): 1.0000
F1分数: 0.0476
=== 各类别性能 ===
cat: mAP50=0.6083, mAP50-95=0.5483
bird: mAP50=0.9950, mAP50-95=0.8955
=== 性能分析 ===
✅ 优秀!模型性能非常好!
💡 建议:训练已经充分,可以直接使用模型
进程已结束,退出代码为 0
性能是不错,但是可用性很差,下面来根据这几个指标得分分析一下。
模型评估
好的模型(理想情况):
精确度 > 0.7 ✅
召回率 > 0.8 ✅
F1分数 > 0.75 ✅
mAP50 > 0.8 ✅
你的模型:
精确度 = 0.0244 ❌(严重问题)
召回率 = 1.0000 ✅(优秀)
F1分数 = 0.0476 ❌(严重问题)
mAP50 = 0.8017 ⚠️(表面好看)
- 精确度 (Precision) = 0.0244 ❌
通俗理解:模型说"我找到了目标",这个说法有多可靠?
情况:模型每说100次"我找到了目标",只有2.44次是真的
比喻:像是一个保安,看到100个人就说"这些都是小偷",结果只有2个是真的小偷
结论:非常差,模型产生了大量误报
- 召回率 (Recall) = 1.0000 ✅
通俗理解:真实的目标中,模型找到了多少?
情况:所有真实目标都被找到了,一个不漏
比喻:保安抓住了所有真正的小偷,但把很多好人也当成了小偷
结论:完美,但代价是很多误检
- F1分数 = 0.0476 ❌
通俗理解:精确度和召回率的综合评分
范围:0-1,越接近1越好
情况:0.0476非常低
结论:很差,整体检测质量不好
- mAP50 = 0.8017 ⚠️
通俗理解:在宽松标准下的整体检测准确度
情况:0.80看起来不错
但要注意:这个指标可能被高召回率拉高,掩盖了精确度问题
更多推荐




所有评论(0)