Tổng quan về bộ dữ liệu phát hiện đối tượng
Huấn luyện một mô hình phát hiện đối tượng mạnh mẽ và chính xác đòi hỏi một bộ dữ liệu toàn diện. Hướng dẫn này giới thiệu các định dạng khác nhau của bộ dữ liệu tương thích với mô hình Ultralytics YOLO và 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 khác nhau.
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 bộ dữ liệu cho phép bạn xác định thư mục gốc của bộ dữ liệu, các đường dẫn tương đối đến thư mục hình ảnh huấn luyện/xác thực/kiểm thử hoặc *.txt
các tệp chứa đường dẫn hình ảnh và một từ điển tên lớp. Dưới đây là một ví dụ:
ultralytics/cfg/datasets/coco8.yaml
# 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.zip
Nhãn cho định dạng này nên được xuất sang định dạng YOLO với một *.txt
tệp cho mỗi hình ảnh. Nếu không có đối tượng nào trong một hình ảnh, thì không cần *.txt
tệp là bắt buộc. Các *.txt
tệp nên được định dạng với một hàng cho mỗi đối tượng trong class x_center y_center width height
định dạng. Tọa độ hộp phải ở trong xywh đã chuẩn hóa định dạng (từ 0 đến 1). Nếu hộp của bạn tính bằng pixel, bạn nên chia x_center
và width
cho chiều rộng ảnh, và y_center
và height
cho chiều cao ảnh. Số lớp phải được lập chỉ mục từ 0 (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 hình ảnh và nhãn huấn luyện và xác thực của bạn như được hiển thị trong ví dụ bộ dữ liệu COCO8 bên dưới.
Ví dụ Sử dụng
Sau đây là cách bạn có thể sử dụng bộ dữ liệu định dạng YOLO để huấn luyện mô hình của mình:
Ví dụ
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="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
Định dạng Ultralytics NDJSON
Định dạng NDJSON (Newline Delimited JSON) cung cấp một cách khác để xác định bộ dữ liệu cho các mô hình Ultralytics YOLO11. Định dạng này lưu trữ siêu dữ liệu và chú thích của bộ 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 bộ dữ liệu NDJSON chứa:
- Bản ghi bộ dữ liệu (dòng đầu tiên): Chứa siêu dữ liệu của bộ dữ liệu bao gồm loại tác vụ, tên 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, chú thích và đường dẫn tệp
Ví dụ về NDJSON
{
"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"
}
{
"type": "image",
"file": "image1.jpg",
"url": "https://www.url.com/path/to/image1.jpg",
"width": 640,
"height": 480,
"split": "train",
"annotations": {
"boxes": [
[0, 0.52481, 0.37629, 0.28394, 0.41832],
[1, 0.73526, 0.29847, 0.19275, 0.33691]
]
}
}
Định dạng chú thích theo tác vụ:
- Phát hiện:
"annotations": {"boxes": [[class_id, x_center, y_center, width, height], ...]}
- Phân đoạn:
"annotations": {"segments": [[class_id, x1, y1, x2, y2, ...], ...]}
- Tư thế:
"annotations": {"pose": [[class_id, x1, y1, v1, x2, y2, v2, ...], ...]}
- OBB:
"annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
- Phân loại:
"annotations": {"classification": [class_id]}
Ví dụ Sử dụng
Để sử dụng bộ dữ liệu NDJSON với YOLO11, chỉ cần chỉ định đường dẫn đến .ndjson
tệp:
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
# Start training with NDJSON dataset
yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt epochs=100 imgsz=640
Ưu điểm của định dạng NDJSON
- Một tệp duy nhất: Tất cả thông tin bộ dữ liệu được chứa trong một tệp
- Truyền trực tuyến: Có thể xử lý các bộ dữ liệu lớn theo từng dòng mà không cần tải mọi thứ vào bộ nhớ
- Tích hợp đám mây: Hỗ trợ URL hình ảnh từ xa để đào tạo dựa trên đám mây
- Có khả năng 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 một tệp duy nhất hoạt động tốt với git và các hệ thống kiểm soát phiên bản
Các bộ dữ liệu được hỗ trợ
Dưới đây là danh sách các bộ dữ liệu được hỗ trợ và mô tả ngắn gọn cho từng bộ:
- Argoverse: Một bộ dữ liệu 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 phong phú.
- COCO: Common Objects in Context (COCO) là một bộ dữ liệu 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.
- LVIS: Một bộ dữ liệu chú thích, phân đoạn và phát hiện đối tượng quy mô lớn với 1203 danh mục đối tượng.
- COCO8: Một tập hợp con nhỏ hơn của 4 hình ảnh đầu tiên từ COCO train và COCO val, 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á mô hình đơ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á mô hình nhận biết quang phổ.
- COCO128: Một tập hợp con nhỏ hơn của 128 hình ảnh đầu tiên từ COCO train và COCO val, phù hợp cho các thử nghiệm.
- Global Wheat 2020: Một bộ dữ liệu chứa hình ảnh về bông lúa mì cho Global Wheat Challenge 2020.
- Objects365: Một bộ dữ liệu quy mô lớn, chất lượng cao để phát hiện đối tượng với 365 danh mục đối tượng và hơn 600 nghìn hình ảnh được chú thích.
- OpenImagesV7: Một bộ dữ liệu toàn diện của 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.
- SKU-110K: Một bộ dữ liệu nổi bật với khả năng phát hiện đối tượng dày đặc trong môi trường bán lẻ với hơn 11 nghìn hình ảnh và 1,7 triệu bounding box.
- HomeObjects-3K Mới 🚀: Bộ 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, robot, thực tế tăng cường và phân tích bố cục phòng.
- VisDrone: Một bộ dữ liệu chứa dữ liệu theo dõi đa đối tượng và phát hiện đối tượng từ hình ảnh chụp từ máy bay không người lái với hơn 10 nghìn hình ảnh và chuỗi video.
- VOC: Bộ dữ liệu Pascal Visual Object Classes (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 nghìn hình ảnh.
- xView: Một bộ dữ liệu để phát hiện đối tượng trong hình ảnh trên không với 60 danh mục đối tượng và hơn 1 triệu đối tượng được chú thích.
- Roboflow 100: Một chuẩn mực phát hiện đối tượng đa dạng với 100 bộ dữ liệu trải rộng trên bảy miền hình ảnh để đánh giá mô hình toàn diện.
- Brain-tumor: Một bộ 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.
- African-wildlife: Một bộ dữ liệu có hình ảnh về động vật hoang dã châu Phi, bao gồm trâu, voi, tê giác và ngựa vằn.
- Signature: Một bộ dữ liệu có hình ảnh các tài liệu khác nhau với chữ ký đã được chú thích, hỗ trợ xác minh tài liệu và nghiên cứu phát hiện gian lận.
- Medical-pills: Một bộ dữ liệu chứa các hình ảnh về medical-pills, đượ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.
Thêm tập dữ liệu của riêng bạn
Nếu bạn có bộ dữ liệu riêng và muốn sử dụng nó để huấn luyện các mô hình phát hiện bằng định dạng Ultralytics YOLO, hãy đảm bảo rằng nó tuân theo định dạng được chỉ định ở trên trong phần "Định dạng Ultralytics YOLO". Chuyển đổi các chú thích của bạn sang định dạng yêu cầu và chỉ định đường dẫn, số lượng lớp và tên lớp trong tệp cấu hình YAML.
Chuyển Đổi hoặc Điều Chỉnh Đị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 nhãn từ định dạng COCO dataset phổ biến sang định dạng YOLO bằng đoạn mã sau:
Ví dụ
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 bộ dữ liệu COCO hoặc bất kỳ bộ 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 COCO dựa trên JSON thành định dạng YOLO dựa trên văn bản đơn giản hơn, giúp nó tương thích với các mô hình Ultralytics YOLO.
Hãy nhớ kiểm tra kỹ xem bộ dữ liệu bạn muốn sử dụng có tương thích với mô hình của bạn hay không và tuân theo các quy ước định dạng cần thiết. Các bộ dữ liệu được định dạng đúng cách là rất quan trọng để huấn luyện các mô hình phát hiện đối tượng thành công.
Câu hỏi thường gặp
Định dạng bộ dữ liệu Ultralytics YOLO là gì và 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 để xác định bộ dữ liệu trong các dự án huấn luyện của bạn. Nó bao gồm việc thiết lập đường dẫn đến hình ảnh huấn luyện, xác thực và kiểm tra cũng như 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.zip
Nhãn được lưu trong *.txt
các tệp, mỗi tệp cho một hình ảnh, được định dạng là class x_center y_center width height
với tọa độ được chuẩn hóa. Để có hướng dẫn chi tiết, hãy xem ví dụ về bộ dữ liệu COCO8.
Làm cách nào để chuyển đổi bộ dữ liệu COCO sang định dạng YOLO?
Bạn có thể chuyển đổi một COCO dataset sang định dạng YOLO bằng công cụ chuyển đổi 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/")
Đoạn 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 mô hình Ultralytics YOLO. Để biết thêm chi tiết, hãy truy cập phần Chuyển hoặc Chuyển đổi Định dạng Nhãn.
Những bộ dữ liệu nào được Ultralytics YOLO hỗ trợ để phát hiện đối tượng?
Ultralytics YOLO hỗ trợ nhiều bộ dữ liệu, bao gồm:
Mỗi trang bộ dữ liệu cung cấp thông tin chi tiết về cấu trúc và cách sử dụng được điều chỉnh để huấn luyện YOLO11 hiệu quả. Khám phá danh sách đầy đủ trong phần Bộ dữ liệu được hỗ trợ.
Làm cách nào để bắt đầu huấn luyện mô hình YOLO11 bằng bộ dữ liệu của tôi?
Để bắt đầu huấn luyện mô hình YOLO11, hãy đảm bảo rằng bộ 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:
Ví dụ
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640
Tham khảo phần 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ả lệnh CLI.
Tôi có thể tìm các ví dụ thực tế về cách sử dụng Ultralytics YOLO để phát hiện đối tượng ở đâu?
Ultralytics cung cấp nhiều ví dụ và hướng dẫn thực tế để sử dụng YOLO11 trong các ứng dụng khác nhau. Để có cái nhìn tổng quan toàn diện, hãy truy cập Blog 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âu chuyện cộng đồng giới thiệu khả năng phát hiện đối tượng, phân đoạn và hơn thế nữa với YOLO11. Để biết các ví dụ cụ thể, hãy xem phần Sử dụng trong tài liệu.