深入理解COCO数据集及其在计算机视觉中的应用

COCO数据集是一个包含复杂日常场景图像的大型集合,这些图像中包含了自然环境中的常见物体。它涵盖了91个类别的图像注释,包含了超过150万个物体实例。尽管许多专业人士致力于构建模型以超越当前最先进的性能,通常使用单一指标——平均精度均值(mAP)来衡量在COCO上的表现,但是否了解这个数据集的内部情况?以下是一些示例,还可以无需登录或了解计算机视觉知识即可查询COCO。

COCO包含了从未想过要自己创建的合成数据的图像。COCO并非唯一一个包含奇怪图像和可疑标注实践的基准数据集。PASCAL VOC 2012也充满了有趣的训练数据。在PASCAL VOC 2012中,可爱、奇怪且有时标注不当的图像比比皆是。

如何找到COCO中的奇怪图像的?一切始于一个无辜的搜索——寻找圣诞老人,这立即在第一张图片中得到了一个独特的结果。图片中有两个人,只有一个人被标注了,但这并不是照片中最奇怪的事情。右边的人看起来穿着毛茸茸的服装,这导致搜索了“毛茸茸”。毛茸茸的搜索结果中有很多奇怪的结果,但这张图片相当令人惊讶。按照互联网的标准,这些图像相对温和,但令人惊讶的是,它们是学术界、研究人员和计算机/数据科学家花费数百小时构建模型架构以掌握这些数据的一部分。

在思考奇怪搜索的过程中,想起了大部分数据都是从互联网上获取的,这意味着很多搜索结果很容易出现奇怪的照片。即使是像“热狗”这样简单的搜索也给出了非常直观的结果。是的,技术上烤箱里的狗并不算错。然后开始尝试有趣的形容词和名词组合,比如“令人毛骨悚然的雕像”。COCO通常将雕像归类为人,所以请在检测结果方面记住这一点。

超越自然世界中的奇怪事物,开始测试一些直接有趣的互联网文化话题,比如“梗”。如果一个热狗有人头,它是热狗还是人?COCO说热狗。如果在这一点上尝试进行自己的搜索,可以在Twitter或Hacker News上与分享,很想知道发现!

这是数据集搜索兔子洞的尽头,现在让进入这对计算机视觉社区意味着什么。独特的数据有助于模型捕捉边缘案例。当涉及到给定架构的性能时,重要的是要记住,如果数据不代表将使用它的环境,那么在该特定数据集上的高性能可能对来说并不重要。

为什么人们使用COCO?让从为什么COCO和其他基准数据集有用开始。COCO被用作训练定制模型的检查点。从头开始训练模型既耗时又昂贵。使用检查点可以节省时间,并允许更改模型的最后几层,以更好地适应定制数据。如果定制数据集与COCO有一些相似之处,例如一组在街上行走的人,这将非常有效。它也是有帮助的,因为它有助于在数据集中训练模型,了解哪些物体在数据集中。例如,从COCO检查点开始训练可能有助于确保模型不会认为蛇是领带,因为它从COCO中有很多领带训练数据。

拥有一个标准数据集,无论它有缺陷,都允许了解模型的相对性能(准确性、推理速度、训练成本、训练时间等)。这在决定哪个模型最适合计算机视觉项目时,作为一个快速参考非常有帮助。多年来,COCO已经成为训练目标检测器的事实上标准数据集。在COCO上击败当前表现最好的模型,可以让在最负盛名的机器学习会议上发表文章。人们已经理所当然地认为,在COCO上具有更高mAP的模型比低mAP的模型“更好”,但真的是这样吗?

为什么模型性能因数据类型而异?每个模型都是为了不同的结果而调整和构建的。在模型最终要解决的问题的背景下开发计算机视觉模型。一些模型为了准确性而牺牲速度,或者为了成本或大小而牺牲准确性。为移动电话创建的模型与为托管服务器构建的模型具有不同的属性。

最常见的模型之一是为一般用例开发的,这可能适用于应用程序。在需要模型以特定的大小、速度、计算和成本约束来执行的情况下,将想要为手头的任务选择正确的模型。

既然如此,那又怎样?强调基准数据集内部内容的目标不是为了贬低它们或建议不要使用它们。相反,目标是了解它们是什么,然后利用这些信息来帮助在模型开发和模型选择方面的决策。最重要的是,意识到数据有缺陷意味着应该对任何模型的mAP持怀疑态度,而不是仅仅因为一个模型的mAP略高就做出决策。

在数据中保持这种误差范围,并选择性能明显更好的模型。在多个数据集上测试模型以缩小选择范围。Roboflow Universe拥有90,000多个数据集,可以用来查看不同模型在不同类型的数据上的表现。可以搜索每个数据集,以了解它包含的内容,然后再训练模型。还提供了一个模型动物园的笔记本,以便在多个数据集上轻松测试多个模型。

理想情况下,会找到一个与计划在项目中使用的数据类似的数据集。在类似数据上的测试将有助于更准确地描绘出给定模型可能对用例的表现。一旦缩小了可能与数据表现良好的模型范围,就开始在实际数据上测试模型。需要使用像Roboflow Annotate这样的工具来标记和注释数据。为了确保数据集尽可能准确,为提供了一个关于标记最佳实践的指南。

如何比较计算机视觉模型?如果不确定如何以科学的方式测试模型,有一些建议,关于如何比较不同的模型。至少使用三个种子。深度学习模型是使用随机梯度下降及其变体进行训练的,这意味着一个模型可能只是幸运的。至少使用三个种子,并在它们之间平均结果。让模型运行足够的时间。每当比较模型时,需要让它们运行相同的时间,以适应用例,理想情况下时间越长越好。

使用交叉验证(k折)。模型在测试/验证/训练分割中的数据上表现不同。将想要系统地改变数据,并看看模型性能如何变化。以无监督的方式进行训练。研究表明,使用自监督模型可以提高性能。Meta最近提供了一个无监督训练的例子(研究论文也可用)。甚至有模型在Instagram上的10亿张图片上进行了训练。标记图像以训练模型存在缺陷,无监督训练有助于减少人为标记造成的错误,使模型更加通用。

以数据为中心的方法来提高计算机视觉性能。模型架构和模型微调是提高性能的一条路径。另一条路径,更可控,大多数人都能触及,就是通过改进用于训练模型的数据集来提高模型性能。如果遇到性能问题,而微调模型又不是能够做到的,可以通过根据生产环境中的采样数据扩展数据集来达到更高的模型性能水平。主动学习是改进数据集的策略之一,它是捕获更多数据、标记数据、将数据添加到数据集中,然后训练模型在扩展的数据集上的过程。这可以通过API或使用简单的pip包来完成,以编程方式找到模型表现不佳的数据。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485