我正在自定义数据集上训练YOLO(使用Darknet的Alexey AB实现(。它有三类图像,其中第一类有45k个图像,其余两类有大约1k个图像。
在训练它6k次迭代之后,损失在1.5到2之间。然而,当我尝试在视频上运行它时,它只检测到类1。
我想知道这是什么原因,是因为数据集中图像数量的不平衡吗?有办法解决这个问题吗?
是的,首先您有一个不平衡的数据集。建议每个类的图像数>2000(根据存储库上的说明(。
我建议您在训练时使用测试集并跟踪平均精度以及损失。如果平均精度较低,则可以假设并非所有类都能得到同样好的检测。
有几种方法可以解决这个问题,但我想你可能已经明白了。
- 为其他类收集更多数据
- 尝试使用旋转、噪声等对其他类进行数据扩充
- 您可以尝试为其他类添加合成图像
- 尽管把第一类的数据去掉是个坏主意,但至少要尽量减少它,这样才能有一个平衡的数据集
我正在为数据较少的类调用其他类。