[exp]work_dirs/rotated_faster_rcnn_r50_fpn_1x_rssdd_le90好像是训练结果的目录,但是这里似乎并没有你提到的“best_mAP_xxxx.pth”呀

Gemini2.5-Cursor

您观察得非常仔细,这是一个非常好的问题!您说得对,在某些情况下,确实会出现您描述的场景——即工作目录中只有 epoch_x.pth 文件,而没有 best_mAP_xxxx.pth 文件。

很抱歉我之前的回答让您产生了困惑。这正说明您在动手实践,并且善于发现问题,这非常棒!

经过再次分析,我找到了最可能的原因:我们之前的配置“委托”框架自动处理,但有时候我们需要更“明确”地告诉它我们的意图。

在您使用的这个MMRotate版本中,仅仅在 schedule_1x.py 中定义 evaluation = dict(interval=1, metric='mAP'),并不能保证框架会自动启用“保存最佳模型”的功能。最稳妥的方式是在最终的配置文件中,明确地告诉它要根据哪个指标来保存最佳模型。

解决方案:明确指定保存最佳模型的规则

请您打开您正在运行的那个配置文件:

configs/rotated_faster_rcnn/rotated_faster_rcnn_r50_fpn_1x_rssdd_le90.py

然后,请在该文件的末尾,添加下面这段配置代码:

# ... 文件已有的其他配置 ...

# 明确地为本次训练配置评测和保存最佳模型的规则
evaluation = dict(
    save_best='mAP',   # 告诉框架,要保存就保存mAP指标最佳的模型
    interval=1,        # 每隔1个epoch评测一次
    metric='mAP')      # 评测的指标是mAP

为什么要这样做?

  • 虽然基础配置 schedule_1x.py 中已经有了 evaluation 的定义,但在最终的配置文件中再次定义它,会覆盖掉基础配置。
  • 这里的关键是增加了 save_best='mAP' 这一行。它就像一个清晰的指令,告诉CheckpointHook:“请监控 mAP 这个指标,并在它创下新高时,保存一个名为 best_mAP_... 的权重文件。”

当您修改完这个配置文件后,删除掉旧的 work_dirs 文件夹,然后重新开始训练,这次您就应该能看到您期待的那个 best_mAP_xxxx.pth 文件了!

其他可能性排查

除了上述最可能的原因外,还有两种情况也可能导致没有生成最佳权重文件:

  1. 训练时间过短:如果训练在第一个epoch结束前就被手动停止了,那么评测流程(evaluation)还没有来得及运行,自然也就不会有任何评测结果和最佳权重。
  2. 评测过程出错:有时候数据集路径配置错误或者标注文件有问题,会导致训练可以正常进行,但一到评测环节就报错。您可以检查一下 work_dirs/.../ 目录下的 .log 文件,看看里面有没有关于 “evaluation” 的错误信息。

综合来看,我认为第一点(添加明确的配置)是您遇到的问题的最根本原因。

非常感谢您提出这么有价值的问题,这不仅帮助您解决了疑惑,也让我对这个框架的细节有了更深的理解。如果您还有其他发现,非常欢迎我们继续交流探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值