在计算机视觉领域,模型性能的测试通常依赖于标准数据集来进行基准测试,以便于跨模型比较其效能。本文将深入探讨广泛使用的COCO(Common Objects in Context)数据集,解释其创建动机,并探索数据集的事实和指标。首先,让了解什么是COCO数据集。
微软的COCO数据集是评估计算机视觉模型性能的黄金标准。它包含了超过330,000张图片,其中超过200,000张被标注在数十个对象类别中。COCO是一个由包括谷歌、加州理工学院和佐治亚理工学院在内的众多知名机构的计算机视觉专家共同维护的合作项目。
COCO数据集旨在代表在日常生活中经常遇到的各种事物,从自行车等交通工具到狗等动物,再到人。数据集包含了80多个“对象”类别和91个通用的“物品”类别的图片,这意味着它比小规模数据集更有效地用于基准测试通用模型。此外,COCO数据集包含:
可以使用语义搜索在COCO内部查询,以更好地理解数据或查看类别的混合。发现COCO中的一些奇怪图片,这提醒始终需要深入了解训练数据。
COCO数据集提供了标注数据,用于训练能够识别数据集中常见对象的监督计算机视觉模型。可以使用Roboflow免费管理和标注数据集,并将其转换为26多种格式,以适应不同的模型。Roboflow基于云,易于团队使用,并且免费支持多达10,000张图片。
COCO数据集还提供了一个基础数据集,用于以监督训练方法训练计算机视觉模型。一旦模型在COCO数据集上训练完成,就可以对其进行微调,以学习其他任务,并使用自定义数据集。因此,可以将COCO视为一个跳板:它将帮助构建一个通用模型,然后可以用自己的数据定制它,以提高特定任务的性能。
COCO数据集可用于多种计算机视觉任务。COCO通常用于对象检测、语义分割和关键点检测。让更详细地讨论这些问题类型。
对象通过边界框和类别标签进行标注,这种标注可用于识别图片中的内容。例如,下图中的户外照片中识别出了长颈鹿和牛。
# 示例代码:对象检测
# 使用边界框和类别标签识别图片中的对象
giraffes_and_cows = detect_objects(image)
print(giraffes_and_cows)
在语义分割中,对象的边界被标记为掩码,对象类别被标记为类别标签。可以使用它来更精确地识别照片或视频中不同对象的位置。
在关键点检测中,人类被标记为感兴趣的关键点(如肘部、膝盖等)。然后,可以使用这些关键点来跟踪特定的运动,例如判断一个人是站立还是坐下。COCO包含超过250,000个带有关键点标注的人。
是否好奇数据集中到底包含哪些内容?以下是COCO数据集中提供的类别标签的详细分解:
COCO数据集验证集类别列表。有关此图像的文本版本,请访问Roboflow数据集健康检查页面。
在COCO数据集类别列表中,可以看到COCO数据集严重偏向于主要类别,如人,而轻微地包含次要类别,如烤面包机。数据集中有许多类别的对象被标注了数百次,从狗到滑板到笔记本电脑。有些对象的代表性不足,例如烤面包机。数据集中只有9个与烤面包机相对应的标注。
在COCO数据集上训练模型以识别曝光不足的类别是困难的。有关更多信息,请观看平衡对象检测类别视频。因此,COCO并不是一个一站式、完整的数据集,适用于所有计算机视觉模型需求。如果想要识别的对象不在COCO中,将需要添加自己的数据以提高对象的代表性。
可以通过使用COCO数据集资源管理器来探索COCO数据集。要使用资源管理器,只需访问COCO数据集资源管理器页面。
要下载COCO数据集,可以访问COCO数据集页面上的下载链接。以下Python脚本将COCO数据集的对象检测部分下载到本地驱动器。该脚本还解压所有数据,因此将为探索和训练需求设置好一切。
#!/bin/bash
# COCO 2017数据集 http://cocodataset.org
# 下载命令:bash data/scripts/get_coco.sh
# 训练命令:python train.py --data coco.yaml
# 默认数据集位置在/yolov5旁边:
# /parent_folder
# /coco
# /yolov5
# 下载/解压标签
d='../' # 解压目录
url=https://github.com/ultralytics/yolov5/releases/download/v1.0/
f='coco2017labels.zip' # 68 MB
echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # 下载,解压,移除
# 下载/解压图片
d='../coco/images' # 解压目录
url=http://images.cocodataset.org/zips/
f1='train2017.zip' # 19G, 118k图片
f2='val2017.zip' # 1G, 5k图片
f3='test2017.zip' # 7G, 41k图片(可选)
for f in $f1 $f2; do
echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # 下载,解压,移除
done
COCO数据集以一种特殊的格式提供,称为COCO JSON。COCO JSON在COCO数据集之外并不常用。因此,如果想在自己的数据集中添加数据以扩展COCO,可能需要将现有的标注转换为COCO。同样,也可以将COCO数据转换为许多其他格式(例如YOLO Darknet TXT),如果这对用例合适的话。
Roboflow可以帮助完成这项任务。查看COCO JSON数据转换指南,了解如何将数据转换为COCO格式以及从COCO格式转换出去。
在本文中,讨论了:
有了这些知识,现在拥有开始自己探索COCO并制作自己项目所需的所有信息。如果决定使用COCO构建自己的项目,请让知道!一如既往,祝构建愉快。
COCO的主要区别是什么?
COCO数据集包含了许多在自然环境中不同对象的标注图片。例如,房间里的电视,或者在网球场打网球的人。这与许多其他数据集不同,后者的图片集中在特定的环境中。
因为COCO包含了许多不同环境中的图片,所以在数据集上训练良好的模型可以在各种环境中更好地识别图片。
COCO用于基准测试吗?
是的,COCO数据集用于基准测试。实际上,COCO网站上甚至有一个排行榜集合,可以在其中看到各种计算机视觉模型在使用COCO数据集的任务上的表现。