实验记录 2025/10/13

news/2025/10/13 22:11:19/文章来源:https://www.cnblogs.com/1764782550-rzs/p/19139499

  2025/10/13

使用配置:

yolo11s.yaml
from ultralytics import YOLOdef main():# 1. 并非加载预训练模型(这里用 YOLO11n,也可以换成 yolov11s、best.pt 等)#    而是让YAML 定义自己的网络结构model = YOLO(model=r"ultralytics/cfg/models/11/yolo11s.yaml")#model = YOLO(model=r"runs/detect/yolo11-tea-new4/weights/last.pt")#model = YOLO(model=r"yolo11s.pt")# 2. 开始训练model.train(data=r"datasets/teaDiseases/data.yaml",  # 数据集配置文件epochs=300,        # 训练轮数(建议 100+)imgsz=640,         # 输入图片大小batch=32,          # batch sizeworkers=8,device=0,          # GPU 设备,CPU 就写 "cpu"name="yolo11-tea-yolo11s",  # 改名更清晰lr0=0.001,                  # 稍微调高初始学习率,m模型可承受lrf=0.01,cos_lr=True,cache='ram',                # 避免IO问题patience=50,optimizer='AdamW',          # 更平滑、稳定(尤其适合小数据)weight_decay=0.0005,        # 常规正则项hsv_h=0.015,hsv_s=0.7,hsv_v=0.4,degrees=5,translate=0.1,scale=0.5,shear=0.1,flipud=0.0,fliplr=0.5,mosaic=1.0,mixup=0.2,                  # 增强策略,适合病斑类任务val=True,plots=True)# 3. 训练完成后验证模型metrics = model.val(plots=True, iou=0.5)  # 注意 iou=0.5 可与论文对齐print("验证结果:", metrics)# 4. 可选:导出为 ONNX/TorchScript 等格式# model.export(format="onnx")if __name__ == "__main__":main()

数据集使用增强之后的数据集:

train_aug_10_13
train: ../train_aug_10_13/images
val: ../val_10_13/images
test: ../test/imagesnc: 3
names: ['algal leaf spot', 'brown blight', 'grey blight']roboflow:workspace: bryan-setyawan-zsjssproject: tea-leaves-diseasesversion: 39license: CC BY 4.0url: https://universe.roboflow.com/bryan-setyawan-zsjss/tea-leaves-diseases/dataset/39

结果:

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size163/300      9.79G       3475      1.501      1.319         82        640: 100%|██████████| 200/200 [00:37<00:00,  5.31it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.39it/s]all        181        368      0.618      0.581      0.621      0.433Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size164/300      9.79G       3540      1.496      1.315         85        640: 100%|██████████| 200/200 [00:37<00:00,  5.31it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.20it/s]all        181        368      0.616       0.58       0.62      0.431Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size165/300      9.79G       3517      1.506       1.32        110        640: 100%|██████████| 200/200 [00:38<00:00,  5.20it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.35it/s]all        181        368      0.615      0.582       0.62       0.43Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size166/300      9.79G       3472      1.501      1.314        108        640: 100%|██████████| 200/200 [00:37<00:00,  5.34it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.08it/s]all        181        368      0.619      0.582      0.619      0.428Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size167/300      9.79G       3462      1.501       1.32         96        640: 100%|██████████| 200/200 [00:39<00:00,  5.12it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.15it/s]all        181        368      0.619       0.58      0.619       0.43Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size168/300      9.79G       3508      1.496      1.324         77        640: 100%|██████████| 200/200 [00:37<00:00,  5.28it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.31it/s]all        181        368      0.628      0.572       0.62      0.431Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size169/300      9.79G       3474      1.486      1.318         89        640: 100%|██████████| 200/200 [00:38<00:00,  5.25it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.29it/s]all        181        368      0.632      0.571       0.62      0.432Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size170/300      9.79G       3429      1.482      1.312         77        640: 100%|██████████| 200/200 [00:38<00:00,  5.17it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.41it/s]all        181        368      0.635      0.572      0.621      0.432Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size171/300      9.79G       3490       1.48       1.31         90        640: 100%|██████████| 200/200 [00:38<00:00,  5.17it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.19it/s]all        181        368      0.631      0.573      0.622      0.433Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size172/300      9.79G       3417      1.489      1.315        109        640: 100%|██████████| 200/200 [00:36<00:00,  5.49it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.39it/s]all        181        368      0.638      0.573      0.621      0.432
EarlyStopping: Training stopped early as no improvement observed in last 50 epochs. Best results observed at epoch 122, best model saved as best.pt.
To update EarlyStopping(patience=50) pass a new patience value, i.e. `patience=300` or use `patience=0` to disable EarlyStopping.172 epochs completed in 3.213 hours.
Optimizer stripped from runs/detect/yolo11-tea-yolo11s24/weights/last.pt, 19.2MB
Optimizer stripped from runs/detect/yolo11-tea-yolo11s24/weights/best.pt, 19.2MBValidating runs/detect/yolo11-tea-yolo11s24/weights/best.pt...
Ultralytics 8.3.182 🚀 Python-3.10.12 torch-2.4.0a0+07cecf4168.nv24.05 CUDA:0 (NVIDIA A100-SXM4-80GB, 32768MiB)
YOLO11s summary (fused): 100 layers, 9,413,961 parameters, 0 gradientsClass     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 3/3 [00:01<00:00,  2.61it/s]all        181        368      0.659      0.551      0.622      0.445algal leaf spot         69        203       0.74      0.562      0.717      0.526brown blight         77         89        0.7      0.525      0.608      0.422grey blight         66         76      0.538      0.566      0.542      0.386
Speed: 0.1ms preprocess, 1.1ms inference, 0.0ms loss, 1.6ms postprocess per image
Results saved to runs/detect/yolo11-tea-yolo11s24
Ultralytics 8.3.182 🚀 Python-3.10.12 torch-2.4.0a0+07cecf4168.nv24.05 CUDA:0 (NVIDIA A100-SXM4-80GB, 32768MiB)
YOLO11s summary (fused): 100 layers, 9,413,961 parameters, 0 gradients
val: Fast image access ✅ (ping: 0.0±0.0 ms, read: 2.9±2.6 MB/s, size: 47.8 KB)
val: Scanning /home/share/priv/yolo_new/ultralytics-main/ultralytics-main/datasets/teaDiseases/val_10_13/labels.cache... 181 images, 0 backgrounds, 0
WARNING ⚠️ cache='ram' may produce non-deterministic training results. Consider cache='disk' as a deterministic alternative if your disk space allows.
val: Caching images (0.2GB RAM): 100%|██████████| 181/181 [00:02<00:00, 83.24it/s] Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 6/6 [00:01<00:00,  3.37it/s]all        181        368      0.664      0.548      0.623       0.44algal leaf spot         69        203      0.739      0.558      0.716      0.523brown blight         77         89       0.71      0.522      0.607      0.416grey blight         66         76      0.543      0.566      0.545      0.382
Speed: 1.4ms preprocess, 2.4ms inference, 0.0ms loss, 0.9ms postprocess per image

小结:

指标 含义
P (Precision) 预测框中有多少是对的(查准率) 0.664
R (Recall) 实际目标中有多少被检测出来(查全率) 0.548
mAP@0.5 IoU=0.5 时的平均准确率 0.623
mAP@0.5:0.95 多阈值下的平均精度(更严格) 0.44
指标 含义 观察
box_loss ≈ 3400~3500 边框回归损失 稳定,说明模型收敛正常。
cls_loss ≈ 1.48~1.5 分类损失 较高,说明类别区分仍困难(灰斑病尤其)。
dfl_loss ≈ 1.31 分布焦点损失 稳定,说明预测框质量不错。
早停 (EarlyStopping) epoch 122 时性能最佳,172 停止 表明模型在后期不再提升,有过拟合迹象

 

指标 含义 观察
box_loss ≈ 3400~3500 边框回归损失 稳定,说明模型收敛正常。
cls_loss ≈ 1.48~1.5 分类损失 较高,说明类别区分仍困难(灰斑病尤其)。
dfl_loss ≈ 1.31 分布焦点损失 稳定,说明预测框质量不错。
早停 (EarlyStopping) epoch 122 时性能最佳,172 停止 表明模型在后期不再提升,有过拟合迹象

 

改进建议:

✅ 1. 优化数据集

  • 严格筛选验证集,不要用增强图像。

  • 验证集:应来自原始未增强数据(200–400 张左右)。

  • 测试集:可单独保留 100 张真实图像。

  • 确保三类样本在验证集中相对平衡

✅ 2. 更换更强模型

  • 改用 yolo11m.ptyolo11l.pt

     
    model = YOLO("yolo11m.pt")

    YOLO11m 约 25M 参数,能显著提升特征学习能力。

✅ 3. 加强训练策略

  • 增大学习率:

     
    lr0=0.001, lrf=0.01
  • 延长训练至 400 epochs

  • 或关闭早停机制:

     
    patience=0
  • 使用余弦退火:

     
    cos_lr=True

✅ 4. 平衡类别

data.yaml 中增加权重或使用 类权重平衡(class weights)
或者对样本少的类别进行额外增强

✅ 5. 进行高质量验证

训练完成后执行:

 
model.val(data="datasets/teaDiseases/data.yaml", iou=0.5, conf=0.25, plots=True)

生成混淆矩阵与 PR 曲线,检查混淆严重的类别。


🌿 总结一句话:

你的模型已经收敛但尚未泛化。
当前瓶颈主要是:验证集代表性不足 + 数据增强过度 + 模型容量偏小
优先改善验证集和模型规模,再考虑微调参数。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

newDay09

1.今天课程比较多,晚上简单复习了面向对象的知识,背背单词 2.明天还是再补补java吧 3.感觉自己基础还是太薄弱了,课堂上很多问题答不出来

正睿25csp七连测day5

题面:这场打得很飞舞,\(40pts,rk54\)。 T1 这道题比较考验思维。 我们可以考虑每个点是从最初序列的哪个位置转移过来了(记为 \(from\))。 不难发现,如果最终序列中的几个位置的 \(from\) 相等,那么这几个位置代…

C/C++ 指针详解与各种指针定义 - 指南

C/C++ 指针详解与各种指针定义 - 指南2025-10-13 22:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…

14 10.13

上了数据结构 统一建模语言 Java跑步了背了单词

日志|前端框架Vue

Vue是一款用于构建用户界面的渐进式的JavaScript框架1)2)3)v-bindv-onv-if v-else-if v-else = v-showv-forv-实例演示vue生命周期的挂载完成提示

oop.shiyan1

实验1 源代码:1 #include<iostream>2 #include<string>3 #include<vector>4 #include<algorithm>5 6 //模版函数声明7 template<typename T>8 void output(const T& c);9 10 void …

玄机——第一章 应急响应-Linux日志分析 wp

简介 账号root密码linuxrz ssh root@IP 1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割 2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割 3.爆破用户名字典是什么?如果有多个使…

第四周第五天4.5

所用时间:180分钟 代码量(行):0 了解到的知识点: 1.无约束问题方法求解 无约束问题的核心求解方法分为解析法和数值迭代法,前者直接求导找最优解,后者通过逐步迭代逼近最优解 解析法仅适用于目标函数可微且能通…

深入解析:flutter AudioPlayer的使用问题及处理

深入解析:flutter AudioPlayer的使用问题及处理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

11 10.10

学习了看书了

12 10.11

出去玩儿了 学习了

P3330 [ZJOI2011] 看电影

思路 第一眼看去好像并没有什么思路,于是我们通过手算或者暴力搜索打了一个表, 当 \(n = 2\) 时,当 \(k\) 变化时,答案如表所示n\ k 1 2 3 41 (1, 1) (2, 2) (3, 3) (4, 4)2 (0, 1) (3, 4) (15, 16) (24, 25)3 (0,…

09 面向对象基础概念的总结

09 面向对象基础概念的总结面向对象 总结类与对象的定义 类是一个模板,是抽象的,将一些元素的共性集合在一起。 对象是具体的实例,创建对象的过程叫做实例化。方法 方法的定义: 修饰符 返回值 函数名 参数 函数体对…

20232315 2025-2026-1 《网络与系统攻防技术》实验一实验报告

一、实验目标 对一个名为pwn1的linux可执行文件: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。 注入一个自己…

CSP-S 2025 提高级模拟赛 Day6 复盘 B.连通子图

题意 给定正整数 \(k\),求构造一棵树,使得包含了1号点的连通子图个数恰好为 \(k\)。 赛时做法 没想出来,骗了个 \(n\leq60\) 的20pts部分分(输出一条长度为 \(k\) 的链,此时一定有 \(k\) 个联通子图) #include&l…

基于Java的家政服务管理优秀的系统的设计与完成-计算机毕设 附源码05300

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Android Camera openCamera - 教程

Android Camera openCamera - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

大作业第一阶段验收小组集体加5分 -

大作业第一阶段验收小组集体加5分任务二 小组:郝正一,文利,武浩翔 验收集体加5分