在这篇文章中,将分享五个在广泛实验YOLO-World模型后学到的实用技巧。通过本指南的学习,将获得可以应用到实际项目中,以更有效地识别图像中对象的知识。
首先,来谈谈置信度的问题。对于大多数流行的计算机视觉模型来说,超过80%的置信度通常代表“高置信”。但YOLO World并不遵循这一趋势。可以预期,即使是5%、1%甚至0.1%的置信度也能产生有效的预测。
尽管对于其他流行模型(如YOLOv8)来说,过滤掉所有低于80%的预测是正常的,但YOLO World在这张图片中以23%到35%的置信度水平准确地预测了门把手。
由于YOLO World是在Microsoft COCO数据集上训练的,因此对于COCO类别的置信度要比其他类别高得多。在上面的例子中,吹风机(COCO中的一个类别)的置信度为21%,而许多其他对象的置信度低于10%甚至1%。为了确保每个类别都能被正确预测,设置不同类别级别的置信区间非常重要。
接下来,讨论添加空类别的概念。空类别是不感兴趣的类别,但要求模型检测它,因为它可以提高关心的类别的性能。例如,尝试使用YOLO World来检测车牌。
糟糕的是,模型预测了关心的对象(车牌),但它错误地将汽车检测为车牌。在观察到次要对象被错误地检测为感兴趣的对象时,通常将次要对象添加为类别是有用的。看看当汽车被添加为类别时会发生什么。
问题解决了!尽管并不一定对汽车的位置感兴趣,但将其称为一个类别阻止了对关心的对象,即车牌的误预测。
接下来,使用两阶段工作流程。两阶段工作流程将模型串联在一起,第一阶段模型的输出是第二阶段模型的输入。例如,尝试在人群中检测人们的眼睛。
即使将置信度阈值设置得很低,也会错过很多眼睛。为了提高性能,可以使用以下步骤的两阶段工作流程:
1. 检测所有面孔。
2. 对于每个面孔,裁剪并检测眼睛。
首先,检测所有的面孔。注意找到的面孔比眼球集合多得多。这是因为面孔是更大的对象,因此更容易检测。现在,让裁剪这些预测并运行第二阶段的眼球模型:
还不错!已经挑选出了初始模型错过的几个眼睛。有趣的是,在所有这些案例中,有一个眼球检测几乎占据了整个图像区域。这是与YOLO World相关的常见错误(将在本博客的后面讨论)。
利用颜色的优势。YOLO World对颜色有很强的感知能力。在上面的例子中,它能够区分绿色和红色的草莓。即使是底部左上角的一个误报,也是“最红”的绿色草莓之一。再次,看到了与前一个例子相同的错误,其中一个大的、高置信度的绿色草莓预测占据了大部分屏幕。
考虑上面的FIRST Robotics竞赛图片,显示了蓝色和红色队伍在争夺中立的黄色目标。在被检测的对象是新颖的,不太可能用其他提示检测到的情况下,强烈的颜色感知至关重要。
可以使用简单的颜色查询轻松检测这些对象,而不需要关注实际的对象本身。这种方法在任何正常描述性提示失败的情况下都很有用。
使用描述大小的词汇。在这张图片中,正在查询YOLO World的两个类别:饼干和金属文件。即使在低置信度下,金属缺陷也没有被检测到。
这是在相同的置信度下相同的图片,但使用提示“小金属文件”。现在缺陷被检测到了!
后处理改进。YOLO World有一些特性不能仅通过提示来解决。到目前为止的例子中,已经看到了一些。本节概述了这些特性和处理方法。
按类别变化置信度。正如在吹风机例子中看到的,不同类别可以在相同的图像上有不同的理想置信度阈值。与其他流行的目标检测模型不同,这些区域可以有很大的不同。
例如,提示“人”可能在70%以上的置信度下获得最佳结果,但“蓝色直升机”可能在0.5%以上的置信度下获得最佳结果。如果尝试对两个类别应用相同的置信度阈值,将要么看到人的误报,要么看到蓝色直升机的误漏报。
作为解决方案,建议使用独特的类别级置信度阈值来过滤预测。这确保了每个类别都能被正确预测。
按大小过滤预测。YOLO World的一个更令人沮丧的挑战是,它经常预测一组对象,而不仅仅是隔离单个对象。更糟糕的是,这些组预测通常具有高置信度,因此不能通过传统方法过滤。
作为解决方案,建议过滤掉面积大于整个图像一定百分比的预测。这个值应该因类别而异,可能不适用于期望填满整个图像的某些类别。
挑战。空间提示。YOLO World不知道左右,也难以处理其他方向参考。如果试图检测图像中不同对象的交互、移动或旋转,可能需要求助于其他方法(如后处理)。
不同上下文中的表现差异。YOLO World给人印象深刻的是,对于给定的图像,通常可以找到一组提示和参数的组合,产生准确的结果。
然而,早期测试表明,在各种环境和上下文中找到持续有效的提示更加困难。由于理想的置信度阈值可能因图像而异,一个在示例图像上有效的提示可能不适用于整个生产数据集。