Tổng quan về dataset 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, cần có 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.
Các định dạng dataset được hỗ trợ#
Định dạng Ultralytics YOLO#
Định dạng Ultralytics YOLO là đị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/kiểm thử hoặc các tệp *.txt chứa đường dẫn ảnh, cùng một dictionary tên class. Sau đây là 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 trường trong số train, val và test chấp nhận một thư mục, danh sách thư mục hoặc tệp *.txt liệt kê mỗi đường dẫn ảnh trên một dòng (các đường dẫn bắt đầu bằng ./ được phân giải tương đối với tệp *.txt). Tệp *.txt hữu ích khi huấn luyện trên một tập con của thư mục, bỏ qua ảnh chưa gán nhãn hoặc kết hợp ảnh từ nhiều nguồn vào cùng 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: personNhãn cho định dạng này cần được xuất sang định dạng YOLO, với một tệp *.txt cho mỗi ảnh. Nếu ảnh không có đối tượng nào thì không cần tệp *.txt. Tệp *.txt cần được định dạng với mỗi đối tượng trên một dò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 tọa độ box của bạn tính bằ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 cần được đánh chỉ mục từ 0 (bắt đầu bằng 0).

Tệp nhãn 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à nhãn 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
# Tải model
model = YOLO("yolo26n.pt") # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)
# Huấn luyện 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) là 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à nhãn của dataset trong một tệp duy nhất, mỗi dòng chứa một đối tượng JSON riêng.
Tệp 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 tác vụ, tên class và thông tin tổng quan
- Bản ghi ảnh (các dòng tiếp theo): Chứa dữ liệu của từng ảnh, bao gồm kích thước, nhãn và đường dẫn tệp
{
"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 đối tượng JSON metadata để lưu ngữ cảnh 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 đánh giá. Có hỗ trợ các giá trị lồng nhau. Khi được nhập vào Ultralytics Platform, metadata sẽ được lưu cùng ảnh đó và có thể xem hoặc chỉnh sửa trong bảng thông tin 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 khóa metadata cấp cao nhất ở 128 ký tự, đối tượng metadata đã tuần tự hóa của mỗi ảnh ở 500.000 ký tự và tổng metadata hiệu lực trong một lần nhập 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 tệp .ndjson:
from ultralytics import YOLO
# Tải model
model = YOLO("yolo26n.pt")
# Huấn luyện bằng dataset NDJSON
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)Ưu điểm của định dạng NDJSON#
- Một tệp duy nhất: Toàn bộ thông tin dataset được lưu trong một tệp
- Xử lý luồng: Có thể xử lý dataset lớn từng dòng mà không cần tải toàn bộ vào bộ nhớ
- Tích hợp đám mây: Hỗ trợ URL ảnh từ xa để huấn luyện trên đám mây
- 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 tệp hoạt động hiệu quả với git và các hệ thống kiểm soát phiên bản
Dataset được hỗ trợ#
Sau đây là danh sách các dataset được hỗ trợ cùng mô tả ngắn cho từng dataset. Hầu hết các dataset này cũng được lưu trữ trên Ultralytics Platform, nơi bạn có thể duyệt ảnh và nhãn, xem thống kê dataset và nhân bản dataset để huấn luyện trên đám mây.
- African-wildlife: Dataset gồm ả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 phát hiện 2D Argoverse-HD gồm 54.446 ảnh đô thị phục vụ lái xe tự hành, với 8 class đối tượng trên đường.
- Brain-tumor: Dataset phát hiện khối u não, gồm ảnh chụp MRI hoặc CT cùng thông tin chi tiết về sự hiện diện, vị trí và đặc điểm của khối u.
- COCO: Các đối tượng phổ biến trong ngữ cảnh (COCO) là một dataset quy mô lớn về phát hiện đối tượng, phân đoạn và tạo chú thích, với 80 danh mục đối tượng.
- COCO8: Tập con nhỏ gồm 8 ảnh đầu tiên của COCO train2017, trong đó 4 ảnh dùng để huấn luyện và 4 ảnh để xác thực, phù hợp cho các bài kiểm tra nhanh.
- COCO8-Grayscale: Phiên bản ảnh thang độ xám của COCO8, được tạo bằng cách chuyển RGB sang thang độ xám, hữu ích để đánh giá model một kênh.
- COCO8-Multispectral: Phiên bản đa phổ 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 để đánh giá model có nhận biết phổ.
- COCO12-Formats: Dataset kiểm thử gồm 12 ảnh thuộc 12 định dạng ảnh được hỗ trợ (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP), dùng để kiểm tra các pipeline tải ả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ỏ gồm 128 ảnh đầu tiên của COCO train2017, phù hợp cho kiểm thử.
- Construction-PPE: Dataset gồm công nhân tại công trường, được gán nhãn trang bị bảo hộ như mũ bảo hiểm, áo vest, găng tay, ủng và kính bảo hộ; đồng thời có các nhãn thiếu trang bị như no_helmet, no_goggle để giám sát tuân thủ trong thực tế.
- Global Wheat 2020: Dataset gồm hình ảnh bông lúa mì dành cho Global Wheat Challenge 2020.
- HomeObjects-3K: Dataset về đồ dùng trong nhà, bao gồm giường, ghế, TV và nhiều vật dụng khác—phù hợp cho các ứng dụng tự động hóa nhà thông minh, robot, 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 tác vụ 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 về phát hiện và phân đoạn đối tượng, với 1.203 danh mục vật thể.
- Medical-pills: Dataset gồm ảnh thuốc viên, được gán nhãn 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 phát hiện đối tượng, với 365 danh mục đối tượng và hơn 1,7 triệu ảnh huấn luyện.
- OpenImagesV7: Dataset toàn diện của Google với 1,7 triệu ảnh huấn luyện và 42 nghìn ảnh xác thực.
- Roboflow 100: Một benchmark phát hiện đối tượng đa dạng với 100 dataset thuộc bảy miền 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 với chữ ký được chú thích, hỗ trợ nghiên cứu xác minh tài liệu và phát hiện gian lận.
- SKU-110K: Dataset về phát hiện đối tượng dày đặc trong môi trường bán lẻ, gồm hơn 11K hình ảnh và 1,7 triệu bounding box.
- TT100K: Khám phá dataset biển báo giao thông Tsinghua-Tencent 100K (TT100K), gồm 16.817 hình ảnh đường phố thuộc 221 danh mục biển báo, phục vụ phát hiện và phân loại hiệu quả.
- VisDrone: Dataset chứa dữ liệu phát hiện vật thể và theo dõi nhiều vật thể từ hình ảnh do drone ghi lại, với hơn 10 nghìn ảnh và chuỗi video.
- VOC: Dataset Các lớp đối tượng trực quan Pascal (VOC) dành cho phát hiện và phân đoạn đối tượng, gồm 20 lớp đối tượng và hơn 11K hình ảnh.
- xView: Dataset phát hiện vật thể trong ảnh chụp từ trên cao, với 60 danh mục vật thể và hơn 1 triệu vật thể được chú thích.
Thêm dataset của riêng bạn#
Nếu bạn có dataset riêng và muốn dùng dataset đó để huấn luyện model phát hiện 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à khai báo đường dẫn, số lượng lớp cùng tên lớp trong tệp cấu hình YAML.
Chuyển đổi hoặc chuyển đổi định dạng nhãn#
Chuyển định dạng dataset COCO sang định dạng YOLO#
Bạn có thể dễ dàng chuyển đổi nhãn từ định dạng dataset COCO phổ biến sang định dạng YOLO bằng đoạn mã 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ể dùng để chuyển 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 đổi annotation COCO dựa trên JSON sang định dạng YOLO dạng văn bản đơn giản hơn, giúp tương thích với model Ultralytics YOLO. Để xem toàn bộ quy trình — bao gồm ánh xạ ID lớp, bố cục thư mục và annotation phân đoạn hoặc tư thế — hãy xem Chuyển đổi annotation COCO sang YOLO.
Hãy nhớ 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 model phát hiện đối tượng hiệu quả.
Tiếp theo là gì#
Sau khi định dạng dataset, bắt đầu huấn luyện model. Bạn chưa biết nên bắt đầu với model pretrained nào? So sánh các lựa chọn trong họ model YOLO26.
Câu hỏi thường gặp#
Định dạng Ultralytics YOLO là cấu hình có cấu trúc để xác định dataset trong các dự án huấn luyện. Định dạng này yêu cầu thiết lập đường dẫn đến hình ảnh huấn luyện, validation và kiểm thử cùng các nhãn 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.zipNhãn được lưu trong các tệp
*.txt, mỗi hình ảnh có một tệp, theo định dạngclass x_center y_center width heightvới tọa độ đã chuẩn hóa. Xem ví dụ dataset COCO8 để biết hướng dẫn chi tiết.Bạn có thể chuyển dataset COCO sang định dạng YOLO bằng các công cụ chuyển đổi của Ultralytics. Sau đây là phương pháp nhanh:
from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/")Đoạn mã này chuyển annotation COCO sang định dạng YOLO, giúp tích hợp liền mạch với model Ultralytics YOLO. Để biết thêm chi tiết, hãy xem mục Chuyển đổi hoặc chuyển đổi định dạng nhãn.
Ultralytics YOLO hỗ trợ nhiều dataset, bao gồm:
Trang của mỗi dataset cung cấp thông tin chi tiết về cấu trúc và cách sử dụng được thiết kế để huấn luyện YOLO26 hiệu quả. Xem danh sách đầy đủ trong mụ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 khai báo trong tệp YAML. Dùng script sau để bắt đầu huấn luyện:
Ví dụfrom ultralytics import YOLO model = YOLO("yolo26n.pt") # Tải model pretrained 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 dùng các chế độ khác nhau, bao gồm 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. Để xem tổng quan toàn diện, hãy truy cập Blog Ultralytics, nơi có các nghiên cứu tình huống, hướng dẫn chi tiết và câu chuyện từ cộng đồng về phát hiện đối tượng, phân đoạn và nhiều ứng dụng khác với YOLO26. Để xem ví dụ cụ thể, hãy tham khảo trang Chế độ predict trong tài liệu.