我使用YOLOv4-tiny作为我从Open Images Dataset收集的26个类的自定义数据集。数据集几乎是平衡的(每个类有850个图像,但边界框的数量不同)。当我使用YOLOv4-tiny在3个班级上训练时,损失接近0.5,它相当准确。但是对于26个类别,一旦损失低于2,模型就开始过度拟合。预测也是非常不准确的。
我试图改变参数,如学习率,动量和大小,但无论我做什么,模型都会变得比以前更糟糕。使用常规的YOLOv4模型而不是YOLO-tiny也无济于事。我如何才能进一步降低损失?

发布于 2020-11-13 22:47:09
你试过training with mAP吗?您可以获取训练集的一个子集,并将其作为验证集。这可以用您制作训练和测试集的相同方式来完成。然后,您可以运行darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -map。这将跟踪您的验证集中的损失。当验证中的误差上升时,这是停止训练并防止过度拟合的时候(这称为:提前停止)。
发布于 2021-09-26 09:29:20
您需要运行(classes*2000)iterations.的培训然而,为了获得最好的分数,你需要训练你的模型至少6000次迭代(也称为max_batches)。另外,请记住,如果您使用的是黑白图像,请将channels=3更改为channels=1。一旦平均损失变成这样,你可以停止你的训练:0.XXXX。
这是我运行了6.2小时的6000次迭代的mAP图:avg loss with 6000 max_batches。
此外,您可以遵循Stéphane Charette的这篇常见问题文档here。
https://stackoverflow.com/questions/63674086
复制相似问题