Tổng quan về các tập dữ liệu phát hiện đối tượng
Việc huấn luyện một model mạnh mẽ và chính xác object detection yêu cầu một tập dữ liệu toàn diện. Hướng dẫn này giới thiệu các định dạng tập dữ liệu khác nhau tương thích với model Ultralytics YOLO, đồng thời cung cấp thông tin chi tiết 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 tập dữ liệu được hỗ trợ
Định dạng Ultralytics YOLO
Định dạng Ultralytics YOLO là một định dạng cấu hình tập dữ liệu cho phép bạn xác định thư mục gốc của tập dữ liệu, đường dẫn tương đối đến các thư mục hình ảnh huấn luyện/xác thực/kiểm thử hoặc các tệp *.txt chứa đường dẫn hình ảnh và một từ điển chứa tên các lớp (class names). 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.zipCác nhãn cho định dạng này cần được xuất ra định dạng YOLO với một tệp *.txt cho mỗi hình ảnh. Nếu không có đối tượng nào trong hình ảnh, bạn không cần tệp *.txt. Tệp *.txt cần được định dạng với mỗi dòng tương ứng với một đối tượng ở định dạng class x_center y_center width height. Các tọa độ hộp (bbox) phải ở định dạng normalized xywh (từ 0 đến 1). Nếu các hộp của bạn đang ở dạng pixel, bạn cần chia x_center và width cho chiều rộng hình ảnh và y_center và height cho chiều cao hình ảnh. Số thứ tự lớp phải bắt đầu từ 0.

Tệp nhãn tương ứng với hình ảnh trên chứa 2 người (lớp 0) và một chiếc cà vạt (lớp 27):

Khi sử dụng định dạng Ultralytics YOLO, hãy sắp xếp các hình ảnh và nhãn huấn luyện cũng như xác thực của bạn như ví dụ tập dữ liệu COCO8 dưới đây.

Ví dụ sử dụng
Dưới đây là cách bạn có thể sử dụng các tập dữ liệu định dạng YOLO để huấn luyện model của mình:
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 (Newline Delimited JSON) cung cấp một cách thay thế để xác định tập dữ liệu cho các model Ultralytics YOLO. Định dạng này lưu trữ siêu dữ liệu và các chú thích (annotation) của tập dữ liệu trong một tệp duy nhất, trong đó mỗi dòng chứa một đối tượng JSON riêng biệt.
Một tệp tập dữ liệu NDJSON bao gồm:
- Bản ghi tập dữ liệu (dòng đầu tiên): Chứa siêu dữ liệu tập dữ liệu bao gồm loại tác vụ, tên các lớp và thông tin chung
- Bản ghi hình ảnh (các dòng tiếp theo): Chứa dữ liệu hình ảnh riêng lẻ bao gồm kích thước, các chú thích và đường dẫn tệp
{
"type": "dataset",
"task": "detect",
"name": "Example",
"description": "COCO NDJSON example dataset",
"url": "https://app.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"
}Ví dụ sử dụng
Để sử dụng tập dữ liệu NDJSON với YOLO26, chỉ cần chỉ định đường dẫn đến tệp .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
- Tệp đơn lẻ: Tất cả thông tin tập dữ liệu nằm trong một tệp
- Truyền phát (Streaming): Có thể xử lý các tập dữ liệu lớn theo 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 hình ảnh từ xa cho quá trình huấn luyện trên đám mây
- Có thể mở rộng: Dễ dàng thêm các trường siêu dữ liệu tùy chỉnh
- Kiểm soát phiên bản: Định dạng tệp đơn lẻ hoạt động tốt với git và các hệ thống kiểm soát phiên bản
Các tập dữ liệu được hỗ trợ
Dưới đây là danh sách các tập dữ liệu được hỗ trợ và mô tả ngắn gọn cho từng tập:
- African-wildlife: Một tập dữ liệu chứa hình ảnh động vật hoang dã châu Phi, bao gồm trâu, voi, tê giác và ngựa vằn.
- Argoverse: Một dataset chứa dữ liệu theo dõi 3D và dự báo chuyển động từ môi trường đô thị với các chú thích chi tiết.
- Brain-tumor: Một tập dữ liệu để phát hiện khối u não, bao gồm hình ảnh MRI hoặc CT scan với 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 tập dữ liệu lớn về object detection, phân đoạn (segmentation) và chú thích (captioning) với 80 danh mục đối tượng.
- COCO8: Một tập con nhỏ hơn gồm 4 hình ảnh đầu tiên từ tập huấn luyện COCO và tập xác thực COCO, phù hợp cho các thử nghiệm nhanh.
- COCO8-Grayscale: Một phiên bản thang độ xám của COCO8 được tạo bằng cách chuyển đổi RGB sang thang độ xám, hữu ích cho việc đánh giá model đơn kênh.
- COCO8-Multispectral: Một 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 cho việc đánh giá model nhận diện phổ.
- COCO12-Formats: Một tập dữ liệu kiểm thử với 12 hình ảnh bao gồm tất cả các định dạng hình ảnh được hỗ trợ (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) để xác thực các đường ống tải hình ảnh.
- COCO128: Một tập con nhỏ hơn gồm 128 hình ảnh đầu tiên từ tập huấn luyện COCO và tập xác thực COCO, phù hợp cho các thử nghiệm.
- Construction-PPE: Một tập dữ liệu về công nhân tại công trường xây dựng với các thiết bị an toàn được gắn nhãn như mũ bảo hiểm, áo khoác, găng tay, ủng và kính bảo hộ, bao gồm các chú thích về thiếu thiết bị như no_helmet, no_googles để giám sát sự tuân thủ trong thực tế.
- Global Wheat 2020: Một dataset chứa hình ảnh các bông lúa cho cuộc thi Global Wheat Challenge 2020.
- HomeObjects-3K: Một tập dữ liệu về các vật dụng gia đình trong nhà bao gồm giường, ghế, TV, v.v.—lý tưởng cho các ứng dụng trong 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: Một tập dữ liệu về 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ư xác định ô 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: Một dataset quy mô lớn dùng cho phát hiện, phân đoạn và tạo chú thích đối tượng với 1203 danh mục đối tượng.
- Medical-pills: Một tập dữ liệu về hình ảnh thuốc y tế, được chú thích cho các ứng dụng như đảm bảo chất lượng dược phẩm, phân loại thuốc và tuân thủ quy định.
- Objects365: Một dataset quy mô lớn, chất lượng cao cho phát hiện đối tượng với 365 danh mục đối tượng và hơn 600.000 hình ảnh đã được gắn chú thích.
- OpenImagesV7: Một dataset toàn diện từ Google với 1,7 triệu hình ảnh huấn luyện và 42 nghìn hình ảnh xác thực.
- Roboflow 100: Một benchmark phát hiện đối tượng đa dạng với 100 dataset trải dài trên bảy lĩnh vực hình ảnh để đánh giá model toàn diện.
- Signature: Một dataset chứa hình ảnh các tài liệu khác nhau với chữ ký đã được gắn chú thích, hỗ trợ xác thực tài liệu và nghiên cứu phát hiện gian lận.
- SKU-110K: Một tập dữ liệu về phát hiện đối tượng mật độ cao trong môi trường bán lẻ với hơn 11 nghìn hình ảnh và 1,7 triệu bounding boxes.
- TT100K: Khám phá tập dữ liệu biển báo giao thông Tsinghua-Tencent 100K (TT100K) với 100.000 hình ảnh đường phố và hơn 30.000 biển báo giao thông được chú thích để phát hiện và phân loại mạnh mẽ.
- VisDrone: Một dataset chứa dữ liệu phát hiện đối tượng và theo dõi đa đối tượng từ hình ảnh quay bằng drone với hơn 10.000 hình ảnh và chuỗi video.
- VOC: Dataset Pascal VOC để phát hiện và phân đoạn đối tượng với 20 lớp đối tượng và hơn 11.000 hình ảnh.
- xView: Một dataset dùng cho phát hiện đối tượng trong hình ảnh từ trên cao với 60 danh mục đối tượng và hơn 1 triệu đối tượng đã được gắn chú thích.
Thêm tập dữ liệu của riêng bạn
Nếu bạn có tập dữ liệu riêng và muốn sử dụng nó để huấn luyện các model phát hiện với định dạng Ultralytics YOLO, hãy đảm bảo rằng nó tuân theo định dạng đã nêu ở trên trong mục "Định dạng Ultralytics YOLO". Hãy chuyển đổi các chú thích của bạn sang định dạng yêu cầu và chỉ định các đường dẫn, số lượng lớp và tên các lớp trong tệp cấu hình YAML.
Chuyển đổi các định dạng nhãn
Định dạng tập dữ liệu COCO sang định dạng YOLO
Bạn có thể dễ dàng chuyển đổi các nhãn từ định dạng tập dữ liệu COCO phổ biến sang định dạng YOLO bằng cách sử dụ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ể được sử dụng để chuyển đổi tập dữ liệu COCO hoặc bất kỳ tập dữ liệu nào ở định dạng COCO sang định dạng Ultralytics YOLO. Quá trình này chuyển đổi các chú thích dựa trên JSON của COCO sang định dạng tệp văn bản đơn giản hơn của YOLO, giúp nó tương thích với Ultralytics YOLO models.
Hãy nhớ kiểm tra kỹ xem tập dữ liệu bạn muốn sử dụng có tương thích với model của bạn và tuân theo các quy ước định dạng cần thiết hay không. Các tập dữ liệu được định dạng đúng cách là yếu tố quan trọng để huấn luyện thành công các model phát hiện đối tượng.
Câu hỏi thường gặp (FAQ)
Định dạng tập dữ liệu Ultralytics YOLO là gì và cách cấu trúc nó như thế nào?
Định dạng Ultralytics YOLO là một cấu hình có cấu trúc để định nghĩa tập dữ liệu trong các dự án huấn luyện của bạn. Nó liên quan đến việc thiết lập đường dẫn đến hình ảnh huấn luyện, xác thực, kiểm thử và 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.zipCác nhãn được lưu trong tệp *.txt với một tệp cho mỗi hình ảnh, được định dạng là class x_center y_center width height với tọa độ được chuẩn hóa. Để biết hướng dẫn chi tiết, xem ví dụ tập dữ liệu COCO8.
Làm thế nào để chuyển đổi tập dữ liệu COCO sang định dạng YOLO?
Bạn có thể chuyển đổi tập dữ liệu COCO sang định dạng YOLO bằng cách sử dụng các công cụ chuyển đổi của Ultralytics. Dưới đây là một phương pháp nhanh chóng:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")Mã này sẽ chuyển đổi các chú thích 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 Chuyển đổi các định dạng nhãn .
Những tập dữ liệu nào được Ultralytics YOLO hỗ trợ cho việc phát hiện đối tượng?
Ultralytics YOLO hỗ trợ nhiều loại tập dữ liệu, bao gồm:
Mỗi trang tập dữ liệu cung cấp thông tin chi tiết về cấu trúc và cách sử dụng phù hợp để huấn luyện YOLO26 hiệu quả. Khám phá toàn bộ danh sách trong Các tập dữ liệu được hỗ trợ .
Làm thế nào để bắt đầu huấn luyện model YOLO26 bằng tập dữ liệu của tôi?
Để bắt đầu huấn luyện model YOLO26, hãy đảm bảo tập dữ liệu của bạn được định dạng chính xác và các đường dẫn được xác định trong tệp YAML. Sử dụng tập lệnh sau để bắt đầu huấn luyện:
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 Sử dụng để biết thêm chi tiết về cách sử dụng các chế độ khác nhau, bao gồm cả các lệnh CLI.
Tôi có thể tìm thấy các ví dụ thực tế về việc sử dụng Ultralytics YOLO để phát hiện đối tượng ở đâu?
Ultralytics cung cấp vô số ví dụ và hướng dẫn thực tế để 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 Blog của Ultralytics nơi bạn có thể tìm thấy các nghiên cứu điển hình, hướng dẫn chi tiết và các câu chuyện từ cộng đồng giới thiệu về phát hiện đối tượng, phân đoạn và nhiều tính năng khác với YOLO26. Đối với các ví dụ cụ thể, hãy kiểm tra Sử dụng trong tài liệu.