从您提供的信息来看,Craft模型在训练过程中的预测结果列表为空。这可能是由于模型在训练过程中没有学到任何有用的信息,或者是由于数据集的问题。为了解决这个问题,您可以尝试以下方法:
检查数据集:确保您的数据集中包含足够的有标签和无标签样本,以便模型能够学习到有效的特征。此外,检查数据集中的图像是否清晰、完整且具有代表性。
调整模型参数:尝试使用不同的超参数设置,例如学习率、批次大小等,以找到最适合您的任务的参数组合。
更换模型:如果上述方法都无法解决问题,您可以尝试使用其他预训练模型,如Faster R-CNN、YOLO等,看看它们是否能在您的任务上取得更好的效果。
增加训练轮次:您提到在第5个epoch时,训练损失开始降低。这可能意味着模型在前几个epoch中没有学到足够的信息。您可以尝试增加训练轮次,观察模型的表现是否有所改善。
[0.0180, 0.0186, 0.0196, ..., 0.0000, 0.0000, 0.0000],
...,
[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000]]
设备:cuda: 1
负样本召回率:3%
最小负样本数:5, 534
检查正样本数量:25353
检查负样本数量:127135
正样本损失:66485889256
负样本损失:22214415948837996
检查正样本数量:4121
这不是正确的。我不知道问题是否在实现的损失函数内部或其他代码部分。我会在这里附上图片和相应的gt。我的配置文件是:
wandb_opt: False
3条答案
按热度按时间ig9co6j11#
根据我的观察和理解,模型训练过程中出现较低的训练损失但没有检测框/精度/召回率较差是可以理解的,因为模型仍在训练。从日志中可以看出,模型首先输出了两个独立的检测框,而不是一开始就输出一个。在第5次迭代时,它产生了一个预期的边界框,但由于IOU小于0.5,因此未被使用,导致精度和召回率为0。训练结果与原始模型结果非常相似,至少学会了移除一个原始检测框并使用第二个具有略差IOU的框。总体而言,这导致了训练损失的提高,但由于IOU阈值,并未导致积极的检测结果。
针对上述情况,我有一些建议/确认:
hpxqektj2#
你好@masoudMZB,
我注意到你在使用提供的代码训练Craft时遇到了问题,以及你遇到的意外结果。几个月前,我也曾尝试使用EasyOCR的微调CRAFT模型。总结一下:
我在想其他人是否遇到过这个问题,找到了解决方案,或者是否有关于训练代码或损失函数潜在错误的见解。任何指导都将非常感谢!
mxg2im7a3#
大家好!
我遇到了同样的问题。有人找到解决方法了吗?