yolov8 选择并保存best.pt的依据 (附带修改记录,) + 设置早停

本文介绍了如何在Ultralytics库的`metrics.py`和`detect/val.py`文件中修改模型的评估指标权重,如P,R,mAP@0.5和mAP@0.75,以及如何在训练过程中输出定制的指标并设置早停epoch的耐心值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ultralytics/utils/metrics.py文件中 修改各个指标的影响权重

    def fitness(self):
        """Model fitness as a weighted combination of metrics."""
        w = [0.25, 0.25, 0.35, 0.15]  # weights for [P, R, mAP@0.5, mAP@0.75]
        return (np.array(self.mean_results()) * w).sum()

P, R, mAP@0.5, mAP@0.75,并且设权重为w = [0.25, 0.25, 0.35, 0.15]了,如果需要修改,就像我一样先改上面的权重。再按照下面修改:  设置你要评估的指标


    def mean_results(self):
        """Mean of results, return mp, mr, map50, map."""
        return [self.mp, self.mr, self.map50, self.map75]

还是这个文件,代码在上面,改成你需要的指标。在这就已经改完了。

在ultralytics/models/yolo/detect/val.py文件中     训练结束时输出你想要的指标结果

    def get_desc(self):
        """Return a formatted string summarizing class metrics of YOLO model."""
        return ("%22s" + "%11s" * 6) % ("Class", "Images", "Instances", "Box(P", "R", "mAP50", "mAP75)")

像我一样把结果输出的地方也改了(改不改都可以,改了就会像下面一样显示你要评估的指标了)

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      7/300       4.2G       4.77      4.595      1.872         15        640: 100%|██████████| 22/22 [00:06<00:00,  3.39it/s]
                 Class     Images  Instances      Box(P          R      mAP50     mAP75): 100%|██████████| 3/3 [00:00<00:00,  5.38it/s]
                   all         86        109      0.493       0.55      0.392     0.0121
  0%|          | 0/22 [00:00<?, ?it/s]
      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      8/300       4.2G      4.761      4.212      1.763          6        640: 100%|██████████| 22/22 [00:06<00:00,  3.34it/s]
                 Class     Images  Instances      Box(P          R      mAP50     mAP75): 100%|██████████| 3/3 [00:00<00:00,  5.26it/s]
                   all         86        109      0.432      0.505      0.363     0.0247

再附带一个吧,设置早停epoch:ultralytics/cfg/default.yaml 中改 patience

### YOLOv8 中 `best.pt` 文件的作用与使用方法 #### 1. **`best.pt` 的作用** 在 YOLOv8 的训练过程中,`best.pt` 是指保存的最佳模型权重文件。该文件通常是在整个训练周期中表现最好的模型状态的记录。具体来说,它基于验证数据集上的性能指标来决定哪个 epoch 对应的模型是最优的。 对于目标检测任务,通常是通过计算平均精度(mAP, mean Average Precision)及其变种(如 mAP@0.5 和 mAP@0.5:0.95)作为评估标准[^2]。这些指标衡量的是预测框与真实框之间的匹配程度以及分类准确性。当某个 epoch 上的模型达到最高的综合评价得分时,其对应的权重会被保存为 `best.pt`。 #### 2. **`best.pt` 的保存位置** 默认情况下,在运行 YOLOv8 训练脚本后,生成的 `best.pt` 文件会存储于指定的日志目录下。如果未特别设置日志路径,则一般位于项目的 `runs/train/expX/weights/best.pt` 路径中,其中 `expX` 表示实验编号[^1]。例如: ```plaintext /home/ubuntu210/learn/ultralytics-main/runs/train/exp/weights/best.pt ``` 可以通过修改配置参数来自定义保存路径。比如调整 `project` 和 `name` 参数可以改变实验结果所在的根目录和子文件夹名称。 #### 3. **加载使用 `best.pt` 模型** 要利用已经训练好的 `best.pt` 来执行推理或其他操作,可采用如下方式加载模型: ```python from ultralytics import YOLO # 加载 best.pt 模型 model = YOLO('/path/to/runs/train/exp/weights/best.pt') # 使用模型进行推理 results = model.predict(source='test_images/', save=True) ``` 上述代码片段展示了如何从特定路径读取 `best.pt` 调用 `.predict()` 方法完成测试图片的目标检测工作。 #### 4. **与其他版本的区别** 虽然提到过 YOLOv5 如何依据 fitness 函数确定最佳模型权重,但在 YOLOv8 当前实现里未公开具体的 fitness 定义细节。不过两者逻辑相似——均依赖验证阶段的表现挑选最优解。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值