COCO 数据集
The COCO(通用对象上下文)数据集是一个大规模目标 detect、segmentation 和图像描述数据集。它旨在鼓励对各种对象类别的研究,并常用于基准测试计算机视觉模型。对于从事目标 detect、segmentation 和姿势估计任务的研究人员和开发人员来说,这是一个必不可少的数据集。
观看: Ultralytics COCO 数据集概述
COCO 预训练模型
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLO11n | 640 | 39.5 | 56.1 ± 0.8 | 1.5 ± 0.0 | 2.6 | 6.5 |
| YOLO11s | 640 | 47.0 | 90.0 ± 1.2 | 2.5 ± 0.0 | 9.4 | 21.5 |
| YOLO11m | 640 | 51.5 | 183.2 ± 2.0 | 4.7 ± 0.1 | 20.1 | 68.0 |
| YOLO11l | 640 | 53.4 | 238.6 ± 1.4 | 6.2 ± 0.1 | 25.3 | 86.9 |
| YOLO11x | 640 | 54.7 | 462.8 ± 6.7 | 11.3 ± 0.2 | 56.9 | 194.9 |
主要功能
- COCO包含33万张图像,其中20万张图像带有用于目标检测、分割和图像描述任务的标注。
- 该数据集包含80个对象类别,包括常见的对象,如汽车、自行车和动物,以及更具体的类别,如雨伞、手提包和运动器材。
- 注释包括每个图像的对象边界框、分割掩码和描述。
- COCO 提供了标准化的评估指标,例如用于目标 detect 的平均精度 (mAP),以及用于 segment 任务的平均召回率 (mAR),使其适用于比较模型性能。
数据集结构
COCO 数据集分为三个子集:
- Train2017:此子集包含 118K 张图像,用于训练目标检测、分割和图像描述模型。
- Val2017:此子集包含 5K 张图像,在模型训练期间用于验证。
- Test2017:此子集包含2万张图像,用于测试和基准评估训练好的模型。此子集的真实标注未公开,结果将提交至 COCO 评估服务器 进行性能评估。
应用
COCO 数据集广泛用于训练和评估深度学习模型,涵盖目标检测(例如Ultralytics YOLO、Faster R-CNN 和 SSD)、实例分割(例如Mask R-CNN)和关键点检测(例如OpenPose)。该数据集多样化的目标类别、大量的标注图像以及标准化评估指标,使其成为计算机视觉研究人员和从业者的重要资源。
数据集 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 数据集上训练一个图像尺寸为 640、进行 100 个epoch的 YOLO11n 模型,您可以使用以下代码片段。有关可用参数的完整列表,请参阅模型训练页面。
训练示例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco.yaml model=yolo11n.pt epochs=100 imgsz=640
Sample Images 和注释
COCO 数据集包含一系列多样化的图像,涵盖各种目标类别和复杂场景。以下是数据集中一些图像及其相应标注的示例:

- Mosaiced Image:此图像演示了一个由 mosaiced 数据集图像组成的训练批次。Mosaicing 是一种在训练期间使用的技术,它将多个图像组合成一个图像,以增加每个训练批次中对象和场景的多样性。这有助于提高模型泛化到不同对象大小、纵横比和上下文的能力。
该示例展示了 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 数据集网站。
常见问题
COCO数据集是什么,它对计算机视觉为何重要?
The COCO 数据集(通用对象上下文)是一个大规模数据集,用于目标 detect、segmentation 和图像描述。它包含 33 万张图像,带有 80 个对象类别的详细注释,对于基准测试和训练计算机视觉模型至关重要。研究人员使用 COCO 是因为它具有多样化的类别和标准化的评估指标,例如平均 AP (mAP)。
如何使用 COCO 数据集训练 YOLO 模型?
要使用 COCO 数据集训练 YOLO11 模型,您可以使用以下代码片段:
训练示例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco.yaml model=yolo11n.pt epochs=100 imgsz=640
有关可用参数的更多详细信息,请参阅训练页面。
COCO数据集的主要特性是什么?
COCO 数据集包括:
- 330K 张图像,其中 200K 张已标注用于目标检测、分割和图像描述。
- 80 个对象类别,范围从汽车和动物等常见物品到手提包和运动器材等特定物品。
- 目标检测 (mAP) 和分割 (平均召回率, mAR) 的标准化评估指标。
- 训练批次中的 Mosaicing 技术,以增强模型在各种对象大小和上下文中的泛化能力。
在哪里可以找到在 COCO 数据集上训练的预训练 YOLO11 模型?
可以在文档中提供的链接下载COCO数据集上的预训练YOLO11模型。示例包括:
这些模型在尺寸、mAP 和推理速度方面各不相同,为不同的性能和资源需求提供了选择。
COCO数据集的结构是怎样的,以及如何使用它?
COCO 数据集分为三个子集:
- Train2017:118K 张图像用于训练。
- Val2017:5K 张图像,用于训练期间的验证。
- Test2017:2万张图像用于基准测试训练模型。结果需要提交到 COCO 评估服务器进行性能评估。
该数据集的yaml配置文件可在coco.yaml获取,其中定义了路径、类别和数据集详细信息。