m0_64092111 2024-05-08 05:46 采纳率: 0%
浏览 4
已结题

mmocr的训练错误,结果全为0

我的训练为什么是这样子的,训练完一轮的评估效果全是0,我用的数据集是mmocr给的mini_icdar2015没有问题
训练代码也是mmocr给的python tools/train.py configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py
是在conda环境下,mmcv、mmdet也都安装好了的,用基本的推理器也没问题

05/08 05:20:46 - mmengine - INFO - prediction score threshold: 0.30, recall: 0.0000, precision: 0.0000, hmean: 0.0000

05/08 05:20:46 - mmengine - INFO - prediction score threshold: 0.40, recall: 0.0000, precision: 0.0000, hmean: 0.0000

05/08 05:20:46 - mmengine - INFO - prediction score threshold: 0.50, recall: 0.0000, precision: 0.0000, hmean: 0.0000

05/08 05:20:46 - mmengine - INFO - prediction score threshold: 0.60, recall: 0.0000, precision: 0.0000, hmean: 0.0000

05/08 05:20:46 - mmengine - INFO - prediction score threshold: 0.70, recall: 0.0000, precision: 0.0000, hmean: 0.0000

05/08 05:20:46 - mmengine - INFO - prediction score threshold: 0.80, recall: 0.0000, precision: 0.0000, hmean: 0.0000

05/08 05:20:46 - mmengine - INFO - prediction score threshold: 0.90, recall: 0.0000, precision: 0.0000, hmean: 0.0000

05/08 05:20:46 - mmengine - INFO - Epoch(val) [1][100/100] icdar/precision: 0.0000 icdar/recall: 0.0000 icdar/hmean: 0.0000 data_time: 0.2973 time: 1.317
4

  • 写回答

8条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-08 05:46
    关注

    引自免费微信小程序:皆我百晓生

    面对你描述的问题,即在使用MMOCR进行训练时,一轮训练后评估结果显示所有指标均为0,这通常意味着模型没有学到有效信息,无法正确预测数据集中的目标。以下是一些可能的解决步骤和检查点,希望能帮助到你:

    1. 数据验证

    确保你的数据集mini_icdar2015已经正确处理并符合MMOCR的预期格式。这包括:

    • 标注格式:确认标注文件是否正确无误,路径是否与配置文件中设置的一致。
    • 图像路径:检查所有图像文件路径是否正确,且图像可被访问。
    • 数据增强:若配置中启用了数据增强,确保其没有导致数据严重失真,以至于模型无法识别。

    2. 配置检查

    重新审视配置文件configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py

    • 训练参数:确认学习率(lr)、批次大小(batch_size)、迭代次数等设置是否合理。
    • 数据加载:检查数据集路径、类别数、训练/验证集划分是否正确配置。
    • 损失函数:确认损失函数的配置是否正确,特别是权重是否平衡。

    3. 模型初始化

    有时候模型初始化不当也可能导致训练失败。虽然MMOCR使用的模型通常是经过良好设计的,但可以尝试:

    • 预训练权重:确认是否正确加载了预训练模型的权重,特别是对于骨干网络。
    • 随机初始化:如果从头开始训练,确认初始化方法是否合适。

    4. 训练日志分析

    深入分析训练过程的日志,注意观察是否有异常警告或错误信息,比如梯度爆炸或消失的迹象。

    5. 深入检查训练流程

    • 梯度问题:检查是否有梯度消失或爆炸的问题,可以通过记录梯度的均值和标准差来辅助判断。
    • 学习率调整:考虑使用学习率衰减策略,如果初始学习率过高可能导致模型无法收敛。

    实操建议

    你可以尝试以下代码片段来检查数据加载器是否正常工作,这有助于确认数据处理环节是否有问题:

    from mmocr.datasets import build_dataset
    
    # 使用你的配置文件路径替换这里的路径
    cfg = 'configs/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015.py'
    dataset = build_dataset(cfg.data.train)
    
    # 打印前几个样本的元数据以检查
    for i in range(5):
        print(dataset[i])
    

    结论

    如果上述检查都没有发现明显问题,可能需要更细致地调试,比如通过可视化训练过程中的特征图、梯度分布等,或者在开发者社区寻求帮助,查看是否有其他人遇到过类似问题。同时,确保MMOCR及其依赖库都是最新版本,有时软件包之间的兼容性问题也会导致这类现象。

    希望这些建议能帮助你定位问题所在,并顺利解决问题。如果有任何更具体的错误信息或者需要进一步指导,请随时告知。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算