COCO 数据集

COCO (Common Objects in Context) 数据集是一个大规模的目标检测、分割和字幕数据集。它旨在鼓励对各种目标类别的研究,并常用于对 计算机视觉 模型进行基准测试。对于从事目标检测、分割和姿态估计任务的研究人员和开发者来说,这是一个必不可少的数据集。



Watch: Ultralytics COCO Dataset Overview

COCO 预训练模型

模型尺寸
(像素)
mAPval
50-95
mAPval
50-95(e2e)
速度
CPU ONNX
(ms)
速度
T4 TensorRT10
(ms)
参数
(M)
FLOPs
(B)
YOLO26n64040.940.138.9 ± 0.71.7 ± 0.02.45.4
YOLO26s64048.647.887.2 ± 0.92.5 ± 0.09.520.7
YOLO26m64053.152.5220.0 ± 1.44.7 ± 0.120.468.2
YOLO26l64055.054.4286.2 ± 2.06.2 ± 0.224.886.4
YOLO26x64057.556.9525.8 ± 4.011.8 ± 0.255.7193.9

主要特性

  • COCO 包含 330K 张图像,其中 200K 张图像具有目标检测、分割和字幕任务的标注。
  • 该数据集包含 80 个目标类别,包括汽车、自行车和动物等常见物体,以及雨伞、手提包和运动器材等更具体的类别。
  • 标注内容包括每张图像的目标边界框、分割掩码和字幕。
  • COCO 提供了标准化的评估指标,例如用于目标检测的 平均精度均值 (mAP),以及用于分割任务的平均召回率 (mAR),使其适用于比较模型性能。

数据集结构

COCO 数据集分为三个子集:

  1. Train2017:该子集包含 118K 张图像,用于训练目标检测、分割和字幕模型。
  2. Val2017:该子集有 5K 张图像,在模型训练期间用于验证。
  3. Test2017:该子集由 20K 张图像组成,用于测试和基准测试已训练的模型。该子集的真实值标注不对公众开放,结果需提交至 COCO 评估服务器 进行性能评估。

应用场景

The COCO dataset is widely used for training and evaluating deep learning models in object detection (such as Ultralytics YOLO, Faster R-CNN, and SSD), instance segmentation (such as Mask R-CNN), and keypoint detection (such as OpenPose). The dataset's diverse set of object categories, large number of annotated images, and standardized evaluation metrics make it an essential resource for computer vision researchers and practitioners.

数据集 YAML

YAML (Yet Another Markup Language) 文件用于定义数据集配置。它包含关于数据集路径、类别和其他相关信息。对于 COCO 数据集,coco.yaml 文件维护在 https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml

ultralytics/cfg/datasets/coco.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO 2017 dataset https://cocodataset.org by Microsoft
# Documentation: https://docs.ultralytics.com/datasets/detect/coco/
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco ← downloads here (20.1 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco # dataset root dir
train: train2017.txt # train images (relative to 'path') 118287 images
val: val2017.txt # val images (relative to 'path') 5000 images
test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: |
  from pathlib import Path

  from ultralytics.utils import ASSETS_URL
  from ultralytics.utils.downloads import download

  # Download labels
  segments = True  # segment or box labels
  dir = Path(yaml["path"])  # dataset root dir
  urls = [ASSETS_URL + ("/coco2017labels-segments.zip" if segments else "/coco2017labels.zip")]  # labels
  download(urls, dir=dir.parent)
  # Download data
  urls = [
      "http://images.cocodataset.org/zips/train2017.zip",  # 19G, 118k images
      "http://images.cocodataset.org/zips/val2017.zip",  # 1G, 5k images
      "http://images.cocodataset.org/zips/test2017.zip",  # 7G, 41k images (optional)
  ]
  download(urls, dir=dir / "images", threads=3)

使用方法

要在 COCO 数据集上训练 YOLO26n 模型 100 个 epoch,图像尺寸为 640,你可以使用以下代码片段。有关可用参数的完整列表,请参考模型 训练 页面。

训练示例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco.yaml", epochs=100, imgsz=640)

样本图像和标注

COCO 数据集包含各种目标类别和复杂场景的多样化图像。以下是来自数据集的一些图像示例及其相应的标注:

COCO 数据集马赛克训练批次与目标检测

  • 马赛克图像:此图像展示了由马赛克数据集图像组成的训练批次。马赛克是一种在训练期间使用的技术,它将多张图像合并为单张图像,以增加每个训练批次中目标和场景的多样性。这有助于提高模型对不同目标尺寸、长宽比和上下文的泛化能力。

该示例展示了 COCO 数据集中图像的多样性和复杂性,以及在训练过程中使用马赛克技术的好处。

引文与致谢

如果你在研究或开发工作中使用了 COCO 数据集,请引用以下论文:

引用
@misc{lin2015microsoft,
      title={Microsoft COCO: Common Objects in Context},
      author={Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár},
      year={2015},
      eprint={1405.0312},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

我们要感谢 COCO 联盟为计算机视觉社区创建并维护了这一宝贵资源。有关 COCO 数据集及其创建者的更多信息,请访问 COCO 数据集网站

常见问题 (FAQ)

什么是 COCO 数据集,为什么它对计算机视觉很重要?

COCO 数据集 (Common Objects in Context) 是一个大规模数据集,用于 目标检测、分割和字幕生成。它包含 330K 张图像,并对 80 个目标类别进行了详细标注,这使其成为基准测试和训练计算机视觉模型的关键资源。研究人员使用 COCO 是因为它具有多样的类别和标准化的评估指标,如平均 精度 均值 (mAP)。

如何使用 COCO 数据集训练 YOLO 模型?

要使用 COCO 数据集训练 YOLO26 模型,你可以使用以下代码片段:

训练示例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco.yaml", epochs=100, imgsz=640)

有关可用参数的更多详细信息,请参阅 训练页面

COCO 数据集的主要特点是什么?

COCO 数据集包括:

  • 330K 张图像,其中 200K 张图像进行了目标检测、分割和字幕标注。
  • 80 个目标类别,从汽车和动物等常见物品到手提包和运动器材等特定物品,应有尽有。
  • 用于目标检测 (mAP) 和分割(平均召回率,mAR)的标准评估指标。
  • 马赛克 (Mosaicing) 技术用于训练批次,以增强模型在各种目标尺寸和场景下的泛化能力。

在哪里可以找到在 COCO 数据集上预训练的 YOLO26 模型?

在 COCO 数据集上预训练的 YOLO26 模型可以从文档中提供的链接下载。示例包括:

这些模型在尺寸、mAP 和推理速度上各不相同,为不同的性能和资源需求提供了选择。

COCO 数据集是如何构成的,我该如何使用它?

COCO 数据集分为三个子集:

  1. Train2017:118K 张用于训练的图像。
  2. Val2017:5K 张用于训练期间验证的图像。
  3. Test2017:20K 张用于对训练模型进行基准测试的图像。结果需要提交至 COCO 评估服务器 以进行性能评估。

数据集的 YAML 配置文件可在 coco.yaml 找到,该文件定义了路径、类别和数据集详细信息。

评论