Tổng quan về các dataset cho bài toán phát hiện đối tượng#
Để huấn luyện một model phát hiện đối tượng mạnh mẽ và chính xác, bạn cần một dataset toàn diện. Hướng dẫn này giới thiệu nhiều định dạng dataset tương thích với model Ultralytics YOLO, đồng thời cung cấp thông tin về cấu trúc, cách sử dụng và cách chuyển đổi giữa các định dạng khác nhau.
Các định dạng dataset được hỗ trợ#
Định dạng Ultralytics YOLO#
Định dạng Ultralytics YOLO là một định dạng cấu hình dataset cho phép bạn xác định thư mục gốc của dataset, các đường dẫn tương đối đến thư mục ảnh huấn luyện/validation/testing hoặc các file *.txt chứa đường dẫn ảnh, cùng một dictionary tên class. Dưới đây là một ví dụ:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8 ← downloads here (1 MB)
# 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: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# 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: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zipMỗi mục trong train, val và test chấp nhận một thư mục, một danh sách thư mục hoặc file *.txt liệt kê một đường dẫn ảnh trên mỗi dòng (các đường dẫn bắt đầu bằng ./ được phân giải tương đối so với file *.txt). File *.txt hữu ích khi huấn luyện trên một tập con của thư mục, bỏ qua các ảnh không có label hoặc kết hợp ảnh từ nhiều nguồn vào một split.
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: personLabel cho định dạng này cần được export sang định dạng YOLO với một file *.txt cho mỗi ảnh. Nếu ảnh không chứa đối tượng nào, không cần file *.txt. File *.txt phải được định dạng với một hàng cho mỗi đối tượng theo định dạng class x_center y_center width height. Tọa độ box phải ở định dạng xywh đã chuẩn hóa (từ 0 đến 1). Nếu box của bạn ở dạng pixel, hãy chia x_center và width cho chiều rộng ảnh, đồng thời chia y_center và height cho chiều cao ảnh. Số class phải được đánh chỉ mục bắt đầu từ 0.

File label tương ứng với ảnh trên chứa 2 người (class 0) và một chiếc cà vạt (class 27):

Khi sử dụng định dạng Ultralytics YOLO, hãy sắp xếp ảnh và label huấn luyện, validation như trong ví dụ dataset COCO8 bên dưới.

Ví dụ sử dụng#
Sau đây là cách sử dụng dataset ở định dạng YOLO để huấn luyện model:
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="coco8.yaml", epochs=100, imgsz=640)Định dạng Ultralytics NDJSON#
Định dạng NDJSON (JSON phân tách bằng dòng mới) cung cấp một cách khác để định nghĩa dataset cho các model Ultralytics YOLO. Định dạng này lưu metadata và annotation của dataset trong một file duy nhất, trong đó mỗi dòng chứa một JSON object riêng biệt.
Một file dataset NDJSON bao gồm:
- Bản ghi dataset (dòng đầu tiên): Chứa metadata của dataset, bao gồm loại task, tên class và thông tin tổng quát
- Bản ghi ảnh (các dòng tiếp theo): Chứa dữ liệu riêng của từng ảnh, bao gồm kích thước, annotation và đường dẫn file
{
"type": "dataset",
"task": "detect",
"name": "Example",
"description": "COCO NDJSON example dataset",
"url": "https://platform.ultralytics.com/user/datasets/example",
"class_names": { "0": "person", "1": "bicycle", "2": "car" },
"bytes": 426342,
"version": 0,
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
}Metadata ảnh tùy chỉnh#
Mỗi bản ghi ảnh có thể bao gồm một JSON object metadata chứa context dành riêng cho ứng dụng, chẳng hạn như điều kiện chụp, mã định danh thiết bị hoặc trạng thái review. Các giá trị lồng nhau được hỗ trợ. Khi được import vào Ultralytics Platform, metadata được lưu cùng ảnh đó và có thể được xem hoặc chỉnh sửa trong information panel toàn màn hình.
{
"type": "image",
"file": "airbus-wing.jpg",
"url": "https://example.com/airbus-wing.jpg",
"split": "train",
"metadata": {
"aircraft": { "family": "A350", "section": "wing" },
"inspectionStatus": "reviewed"
}
}Platform giới hạn key metadata cấp cao nhất ở 128 ký tự, JSON object metadata đã tuần tự hóa của mỗi ảnh ở 500.000 ký tự và metadata hiệu dụng kết hợp trong một lần import NDJSON ở 500.000 ký tự.
Ví dụ sử dụng#
Để sử dụng dataset NDJSON với YOLO26, chỉ cần chỉ định đường dẫn đến file .ndjson:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)Ưu điểm của định dạng NDJSON#
- Một file duy nhất: Tất cả thông tin dataset được chứa trong một file
- Streaming: Có thể xử lý dataset lớn theo từng dòng mà không cần tải toàn bộ vào memory
- Tích hợp cloud: Hỗ trợ URL ảnh từ xa cho việc huấn luyện trên cloud
- Có thể mở rộng: Dễ dàng thêm các trường metadata tùy chỉnh
- Kiểm soát phiên bản: Định dạng một file hoạt động tốt với git và các hệ thống kiểm soát phiên bản
Các dataset được hỗ trợ#
Dưới đây là danh sách các tập dữ liệu được hỗ trợ cùng với mô tả ngắn gọn cho từng tập dữ liệu. Hầu hết các tập dữ liệu này cũng được lưu trữ trên Ultralytics Platform, nơi bạn có thể duyệt qua các hình ảnh và chú thích, xem số liệu thống kê của tập dữ liệu và nhân bản các tập dữ liệu đó để huấn luyện trên đám mây.
- African-wildlife: Dataset gồm các ảnh động vật hoang dã châu Phi, bao gồm trâu, voi, tê giác và ngựa vằn.
- Argoverse: Dataset chứa dữ liệu tracking 3D và dự báo chuyển động từ các môi trường đô thị, kèm annotation phong phú.
- Brain-tumor: Dataset phát hiện u não, gồm các ảnh chụp MRI hoặc CT kèm thông tin chi tiết về sự hiện diện, vị trí và đặc điểm của khối u.
- COCO: Common Objects in Context (COCO) là một dataset quy mô lớn cho phát hiện đối tượng, segmentation và captioning, với 80 category đối tượng.
- COCO8: Một tập con nhỏ hơn gồm 8 hình ảnh đầu tiên từ tập huấn luyện COCO train2017, trong đó 4 hình ảnh dùng để huấn luyện và 4 hình ảnh dùng để xác thực, phù hợp cho việc kiểm thử nhanh.
- COCO8-Grayscale: Phiên bản grayscale của COCO8 được tạo bằng cách chuyển đổi RGB sang grayscale, hữu ích cho việc đánh giá model một kênh.
- COCO8-Multispectral: Phiên bản multispectral 10 kênh của COCO8 được tạo bằng cách nội suy các bước sóng RGB, hữu ích cho việc đánh giá model nhận biết phổ.
- COCO12-Formats: Dataset kiểm thử gồm 12 ảnh bao phủ 12 định dạng ảnh được hỗ trợ (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) để validation các pipeline load ảnh.
- COCO16: Tập con gồm 16 ảnh đầu tiên từ COCO train2017 (8 train + 8 val), phù hợp cho các bài kiểm thử nhanh.
- COCO32: Tập con gồm 32 ảnh đầu tiên từ COCO train2017 (16 train + 16 val), phù hợp cho các bài kiểm thử nhanh.
- COCO64: Tập con gồm 64 ảnh đầu tiên từ COCO train2017 (32 train + 32 val), phù hợp cho các bài kiểm thử nhanh.
- COCO128: Tập con nhỏ hơn gồm 128 ảnh đầu tiên từ COCO train2017, phù hợp cho các bài test.
- Construction-PPE: Dataset gồm ảnh công nhân tại công trường với thiết bị bảo hộ được label như mũ, áo phản quang, găng tay, ủng và kính bảo hộ, bao gồm các annotation về thiết bị bị thiếu như no_helmet, no_goggle để giám sát tuân thủ trong thực tế.
- Global Wheat 2020: Dataset chứa hình ảnh bông lúa mì cho Global Wheat Challenge 2020.
- HomeObjects-3K: Dataset gồm các vật dụng gia đình trong nhà như giường, ghế, TV và nhiều vật dụng khác—lý tưởng cho các ứng dụng tự động hóa nhà thông minh, robotics, thực tế tăng cường và phân tích bố cục phòng.
- KITTI: Dataset gồm các cảnh lái xe thực tế với dữ liệu stereo, LiDAR và GPS/IMU, được sử dụng ở đây cho các task phát hiện đối tượng 2D như nhận diện ô tô, người đi bộ và người đi xe đạp trong môi trường đô thị, nông thôn và đường cao tốc.
- LVIS: Dataset quy mô lớn dành cho object detection, segmentation và tạo chú thích, với 1203 danh mục đối tượng.
- Medical-pills: Dataset gồm ảnh thuốc viên, được annotation cho các ứng dụng như đảm bảo chất lượng dược phẩm, phân loại thuốc viên và tuân thủ quy định.
- Objects365: Dataset chất lượng cao, quy mô lớn dành cho object detection, với 365 danh mục đối tượng và hơn 600K ảnh đã được annotation.
- OpenImagesV7: Dataset toàn diện do Google cung cấp, với 1.7M ảnh train và 42k ảnh validation.
- Roboflow 100: Benchmark phát hiện đối tượng đa dạng với 100 dataset thuộc bảy domain hình ảnh, phục vụ đánh giá model toàn diện.
- Signature: Dataset gồm hình ảnh nhiều loại tài liệu có chữ ký được annotation, hỗ trợ nghiên cứu xác minh tài liệu và phát hiện gian lận.
- SKU-110K: Dataset thể hiện bài toán phát hiện đối tượng dày đặc trong môi trường bán lẻ, với hơn 11K ảnh và 1,7 triệu bounding box.
- TT100K: Khám phá dataset biển báo giao thông Tsinghua-Tencent 100K (TT100K) với 16.817 ảnh street-view thuộc 221 category biển báo, phục vụ detection và classification mạnh mẽ.
- VisDrone: Dataset chứa dữ liệu object detection và multi-object tracking từ hình ảnh do drone ghi lại, với hơn 10K ảnh và chuỗi video.
- VOC: Dataset Pascal Visual Object Classes (VOC) dành cho object detection và segmentation, với 20 lớp đối tượng và hơn 11K ảnh.
- xView: Dataset dành cho object detection trong ảnh chụp từ trên cao, với 60 danh mục đối tượng và hơn 1 triệu đối tượng đã được annotation.
Thêm dataset của riêng bạn#
Nếu bạn có dataset riêng và muốn sử dụng dataset đó để huấn luyện các model detection theo định dạng Ultralytics YOLO, hãy đảm bảo dataset tuân theo định dạng được nêu ở trên trong mục "Định dạng Ultralytics YOLO". Chuyển đổi annotation sang định dạng bắt buộc và chỉ định các đường dẫn, số lượng class cùng tên class trong file cấu hình YAML.
Chuyển hoặc chuyển đổi định dạng label#
Chuyển đổi định dạng COCO Dataset sang định dạng YOLO#
Bạn có thể dễ dàng chuyển đổi label từ định dạng phổ biến của dataset COCO sang định dạng YOLO bằng đoạn code sau:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")Công cụ chuyển đổi này có thể được sử dụng để chuyển đổi dataset COCO hoặc bất kỳ dataset nào ở định dạng COCO sang định dạng Ultralytics YOLO. Quy trình này chuyển annotation COCO dựa trên JSON thành định dạng YOLO dựa trên text đơn giản hơn, giúp tương thích với các model Ultralytics YOLO. Để xem workflow đầy đủ — bao gồm mapping class ID, bố cục thư mục và annotation segmentation hoặc pose — hãy xem Chuyển đổi Annotation COCO sang YOLO.
Hãy kiểm tra kỹ xem dataset bạn muốn sử dụng có tương thích với model và tuân theo các quy ước định dạng cần thiết hay không. Dataset được định dạng đúng là yếu tố then chốt để huấn luyện thành công các model phát hiện đối tượng.
Tiếp theo là gì?#
Sau khi định dạng dataset, hãy bắt đầu huấn luyện model. Không chắc nên bắt đầu với pretrained model nào? Hãy so sánh các lựa chọn trong họ model YOLO26.
FAQ#
Định dạng Ultralytics YOLO là một cấu hình có cấu trúc để định nghĩa dataset trong các project huấn luyện. Định dạng này bao gồm việc thiết lập đường dẫn đến ảnh huấn luyện, validation và testing cùng các label tương ứng. Ví dụ:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license # COCO8 dataset (first 8 images from COCO train2017) by Ultralytics # Documentation: https://docs.ultralytics.com/datasets/detect/coco8 # Example usage: yolo train data=coco8.yaml # parent # ├── ultralytics # └── datasets # └── coco8 ← downloads here (1 MB) # 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: coco8 # dataset root dir train: images/train # train images (relative to 'path') 4 images val: images/val # val images (relative to 'path') 4 images test: # test images (optional) # 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: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zipLabel được lưu trong các file
*.txt, mỗi ảnh có một file, được định dạng theoclass x_center y_center width heightvới tọa độ đã chuẩn hóa. Để xem hướng dẫn chi tiết, hãy tham khảo ví dụ dataset COCO8.Bạn có thể chuyển đổi dataset COCO sang định dạng YOLO bằng các công cụ chuyển đổi của Ultralytics. Dưới đây là một phương pháp nhanh:
from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/")Đoạn code này sẽ chuyển đổi annotation COCO của bạn sang định dạng YOLO, cho phép tích hợp liền mạch với các model Ultralytics YOLO. Để biết thêm chi tiết, hãy truy cập mục Chuyển hoặc chuyển đổi định dạng label.
Ultralytics YOLO hỗ trợ nhiều loại dataset, bao gồm:
Mỗi trang dataset cung cấp thông tin chi tiết về cấu trúc và cách sử dụng, được tối ưu cho việc huấn luyện YOLO26 hiệu quả. Xem danh sách đầy đủ trong mục Các dataset được hỗ trợ.
Để bắt đầu huấn luyện model YOLO26, hãy đảm bảo dataset được định dạng chính xác và các đường dẫn được định nghĩa trong file YAML. Sử dụng script sau để bắt đầu huấn luyện:
Ví dụfrom ultralytics import YOLO model = YOLO("yolo26n.pt") # Load a pretrained model results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)Tham khảo mục Cách sử dụng để biết thêm chi tiết về việc sử dụng các mode khác nhau, bao gồm các lệnh CLI.
Ultralytics cung cấp nhiều ví dụ và hướng dẫn thực tế về cách sử dụng YOLO26 trong các ứng dụng đa dạng. Để có cái nhìn tổng quan toàn diện, hãy truy cập Ultralytics Blog, nơi bạn có thể tìm thấy các case study, tutorial chi tiết và câu chuyện từ cộng đồng giới thiệu về phát hiện đối tượng, segmentation và nhiều nội dung khác với YOLO26. Để xem các ví dụ cụ thể, hãy kiểm tra mục Cách sử dụng trong tài liệu.