Bộ dữ liệu COCO#
Dataset COCO (Common Objects in Context) là một tập dữ liệu lớn dùng cho phát hiện đối tượng, phân đoạn và chú thích. Nó được thiết kế nhằm thúc đẩy nghiên cứu trên nhiều danh mục đối tượng khác nhau và thường được sử dụng để đánh giá chuẩn (benchmark) các model computer vision. Đây là một dataset thiết yếu dành cho các nhà nghiên cứu và developer làm việc trên các tác vụ phát hiện đối tượng, phân đoạn và ước lượng pose.
Watch: Ultralytics COCO Dataset Overview
Các mô hình COCO đã được huấn luyện sẵn#
| Mô hình | kích thước (pixel) | mAPval 50-95 | mAPval 50-95(e2e) | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n | 640 | 40.9 | 40.1 | 38.9 ± 0.7 | 1.7 ± 0.0 | 2.4 | 5.4 |
| YOLO26s | 640 | 48.6 | 47.8 | 87.2 ± 0.9 | 2.5 ± 0.0 | 9.5 | 20.7 |
| YOLO26m | 640 | 53.1 | 52.5 | 220.0 ± 1.4 | 4.7 ± 0.1 | 20.4 | 68.2 |
| YOLO26l | 640 | 55.0 | 54.4 | 286.2 ± 2.0 | 6.2 ± 0.2 | 24.8 | 86.4 |
| YOLO26x | 640 | 57.5 | 56.9 | 525.8 ± 4.0 | 11.8 ± 0.2 | 55.7 | 193.9 |
Tính năng chính#
- COCO chứa 330K hình ảnh, trong đó 200K hình ảnh có kèm chú thích cho các tác vụ phát hiện đối tượng, phân đoạn và chú thích ảnh.
- Bộ dữ liệu bao gồm 80 danh mục đối tượng, từ các vật thể phổ biến như ô tô, xe đạp và động vật, đến các danh mục cụ thể hơn như ô, túi xách và thiết bị thể thao.
- Các chú thích bao gồm khung bao (bounding box) của đối tượng, mặt nạ phân đoạn (segmentation mask) và chú thích cho từng hình ảnh.
- COCO cung cấp các metric đánh giá tiêu chuẩn như mean Average Precision (mAP) cho các tác vụ phát hiện đối tượng và mean Average Recall (mAR) cho các tác vụ phân đoạn, giúp nó phù hợp để so sánh hiệu năng của model.
Cấu trúc tập dữ liệu#
Bộ dữ liệu COCO được chia thành ba tập hợp con:
- Train2017: 118,287 hình ảnh dùng để huấn luyện các model phát hiện đối tượng, phân đoạn và chú thích.
- Val2017: 5,000 hình ảnh được sử dụng để kiểm chứng trong quá trình huấn luyện model.
- Test2017: 20.288 ảnh test-dev được sử dụng để đánh giá chuẩn các model đã train. Ground truth annotation cho tập con này không được cung cấp công khai, và kết quả được gửi lên COCO evaluation server để đánh giá hiệu năng.
Ứng dụng#
Dataset COCO được sử dụng rộng rãi để train và đánh giá các model deep learning trong việc phát hiện đối tượng (như Ultralytics YOLO, Faster R-CNN và SSD), phân đoạn thực thể instance segmentation (như Mask R-CNN) và phát hiện keypoint (như OpenPose). Các danh mục đối tượng đa dạng, số lượng lớn ảnh được gán nhãn và các metric đánh giá chuẩn của dataset này biến nó thành một tài nguyên thiết yếu cho các nhà nghiên cứu và thực hành computer vision.
Các annotation được xuất từ các công cụ gán nhãn theo định dạng COCO JSON sẽ tuân theo cấu trúc này. Để huấn luyện trên dữ liệu định dạng COCO của riêng bạn, hãy xem Convert COCO Annotations to YOLO.
YAML tập dữ liệu#
Một file YAML được sử dụng để định nghĩa cấu hình dataset. Nó chứa thông tin về đường dẫn, các class và các thông tin liên quan khác của dataset. Đối với dataset COCO, file coco.yaml được duy trì tại https://github.com/ultralytics/ultralytics/blob/main/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.3 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 via https://cocodataset.org/#detection-eval
# 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 (test2017.zip excluded: ground truth is withheld, only used for the eval-server test-dev split)
urls = [
"http://images.cocodataset.org/zips/train2017.zip", # 19G, 118k images
"http://images.cocodataset.org/zips/val2017.zip", # 1G, 5k images
]
download(urls, dir=dir / "images", threads=3)Cách sử dụng#
Dữ liệu train và validation của COCO2017 (20.3 GB) sẽ tự động tải xuống lần đầu tiên bạn bắt đầu train. Để train một model YOLO26n trên COCO trong 100 epochs với kích thước ảnh là 640, bạn có thể sử dụng các đoạn code sau. Để có danh sách toàn diện các đối số khả dụng, hãy tham khảo trang Training của model. Bạn cũng có thể chạy quá trình train COCO trên đám mây với Ultralytics Platform.
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)Hình ảnh mẫu và chú thích#
Bộ dữ liệu COCO chứa một tập hợp hình ảnh đa dạng với nhiều danh mục đối tượng khác nhau và các bối cảnh phức tạp. Dưới đây là một số ví dụ về hình ảnh từ bộ dữ liệu cùng với các chú thích tương ứng:

- Hình ảnh Mosaiced: Hình ảnh này minh họa một batch huấn luyện bao gồm các hình ảnh từ tập dữ liệu đã được áp dụng kỹ thuật Mosaic. Mosaic là một kỹ thuật được sử dụng trong quá trình huấn luyện nhằm kết hợp nhiều hình ảnh thành một hình ảnh duy nhất để tăng sự đa dạng của các đối tượng và bối cảnh trong mỗi batch huấn luyện. Điều này giúp cải thiện khả năng tổng quát hóa của model đối với các kích thước đối tượng, tỷ lệ khung hình và bối cảnh khác nhau.
Ví dụ này minh họa sự đa dạng và phức tạp của các hình ảnh trong bộ dữ liệu COCO cũng như lợi ích của việc sử dụng kỹ thuật mosaic trong quá trình huấn luyện.
Trích dẫn và Ghi nhận#
Nếu bạn sử dụng bộ dữ liệu COCO trong công việc nghiên cứu hoặc phát triển của mình, vui lòng trích dẫn bài báo sau:
@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}
}Chúng tôi xin gửi lời cảm ơn đến COCO Consortium vì đã tạo ra và duy trì tài nguyên quý giá này cho cộng đồng computer vision. Để biết thêm thông tin về dataset COCO và những người sáng lập, hãy truy cập COCO dataset website.
Câu hỏi thường gặp#
COCO dataset (Common Objects in Context) là một dataset quy mô lớn được sử dụng cho object detection, phân đoạn và chú thích. Nó chứa 330K ảnh với annotation chi tiết cho 80 danh mục đối tượng, làm cho nó trở nên thiết yếu cho việc đánh giá chuẩn và train các model computer vision. Các nhà nghiên cứu sử dụng COCO vì các danh mục đa dạng và các metric đánh giá chuẩn như mean Average Precision (mAP).
Để huấn luyện mô hình YOLO26 bằng bộ dữ liệu COCO, bạn có thể sử dụng các đoạn mã sau:
Ví dụ về Trainingfrom 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)Tham khảo trang Training page để biết thêm chi tiết về các đối số khả dụng.
Bộ dữ liệu COCO bao gồm:
- 330K hình ảnh, với 200K hình ảnh đã được chú thích cho phát hiện đối tượng, phân đoạn và chú thích ảnh.
- 80 danh mục đối tượng, trải dài từ các vật phẩm phổ biến như ô tô và động vật đến những vật dụng cụ thể hơn như túi xách và thiết bị thể thao.
- Các chỉ số đánh giá tiêu chuẩn cho phát hiện đối tượng (mAP) và phân đoạn (mean Average Recall, mAR).
- Kỹ thuật Mosaicing trong các batch huấn luyện nhằm nâng cao khả năng tổng quát hóa của mô hình trên các kích thước đối tượng và bối cảnh khác nhau.
Các mô hình YOLO26 đã huấn luyện sẵn trên bộ dữ liệu COCO có thể được tải xuống từ các liên kết được cung cấp trong tài liệu. Các ví dụ bao gồm:
Những mô hình này khác nhau về kích thước, mAP và tốc độ suy luận, cung cấp các tùy chọn phù hợp với các yêu cầu khác nhau về hiệu suất và tài nguyên.
Bộ dữ liệu COCO được chia thành ba tập hợp con:
- Train2017: 118,287 hình ảnh để huấn luyện.
- Val2017: 5,000 hình ảnh để kiểm chứng trong quá trình huấn luyện.
- Test2017: 20.288 ảnh test-dev để đánh giá chuẩn các model đã train. Kết quả cần được gửi lên COCO evaluation server để đánh giá hiệu năng.
File cấu hình YAML của dataset có sẵn tại coco.yaml, định nghĩa các đường dẫn, class và chi tiết dataset.



