我应该训练不同的模型来检测对象子集吗?

人工智能 机器学习 卷积神经网络 物体检测
2021-11-07 08:01:09

假设我们有1000我们要检测的产品。对于这些产品中的每一个,我们都有500训练图像/注释。因此我们有500,000训练图像/相关注释。如果我们想训练一个好的对象检测算法来识别这些对象(例如 YOLO),是否有多个检测模型会更好?换句话说,我们应该有 10 个不同的 YOLO 模型,每个 YOLO 模型负责检测 100 个产品吗?还是拥有一个可以检测所有 1000 种产品的 YOLO 模型就足够了?在 mAP/召回/精度方面哪个会更好?

1个回答

这称为多类分类器的分解。您提出的方法称为one vs all

One vs. all 提供了一种利用二元分类的方法。给定一个分类问题N可能的解决方案,一对多的解决方案包括N单独的二元分类器——每个可能的结果都有一个二元分类器。在训练期间,模型运行一系列二元分类器,训练每个分类器回答一个单独的分类问题。

资料来源:https ://developers.google.com/machine-learning/crash-course/multi-class-neural-networks/one-vs-all 。

根据这篇文章这篇文章的作者在 8 个不同的基准问题上对 SVM 进行了实验。根据结果​​,这种方法有时和其他方法一样好,但通常不是最好的。它也永远不会比任何其他方法更好。文章还指出,最好的方法通常取决于问题。

此外,这种方法会大大降低推理速度,并使用大量的 GPU 内存。根据消息来源,它并没有大大提高性能,因此获得更高性能的最佳选择可能是使用不同的模型架构,例如 FPN FRCN,在 YOLO v3 论文中指出具有最佳性能,但推理速度不快。YOLOv3 旨在具有快速推理速度,以提供实时对象检测系统,因此为了提高性能,您可能应该使用其他模型架构。