我目前使用的是来自pjreddie.com的自定义版本YOLO v2,用Tensorflow和Keras编写。我成功地让模型在100个epoch内完成了训练,使用了10000张训练图像和2400张测试图像,这些图像是我随机生成的,并附带相关的JSON文件,全部在Titan X GPU上使用CUDA进行处理。我只希望检测两个类别。然而,在训练过程中,损失函数逐渐降低,但测试准确率却徘徊在3%以下。所有图像似乎都被转换成了黑白。模型在使用训练数据时对其中一个类别的表现尚可,因此模型似乎出现了过拟合。我该如何修改代码以提高模型的准确性?
回答:
好的,事实证明YOLOv2在未见过的数据上表现非常好,但前提是未见过的数据必须与训练时使用的图像大小相同。如果YOLO是在400×400和300×300的图像上训练的,就不要用800×800的图像来测试它。此外,Keras的准确率测量对于检测来说是没有意义的。它可能会显示2%的准确率,但实际上可能已经检测到了所有对象。使用相同大小的未见数据解决了这个问题。