YOLO Vision 2026:

Tổng quan về tập dữ liệu phát hiện đối tượng#

Việc huấn luyện một model phát hiện đối tượng mạnh mẽ và chính xác đòi hỏi một dataset toàn diện. Hướng dẫn này giới thiệu các định dạng dataset 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 cũng như 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 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 chứa ảnh huấn luyện/kiểm thử/đánh giá hoặc các file *.txt chứa đường dẫn ảnh, cùng với một từ điển chứa tên các lớp (class). 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

Mỗi file train, valtest đều chấp nhận một thư mục, một danh sách các thư mục hoặc một file *.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 theo file *.txt). File *.txt hữu ích khi bạn muốn huấn luyện trên một tập con của thư mục, bỏ qua các ảnh chưa được gán nhãn, hoặc kết hợp ảnh từ nhiều nguồn khác nhau thành một tập dữ liệu phân tách duy nhất.

Các đường dẫn ảnh dưới dạng tệp `*.txt`
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: person

Nhãn cho định dạng này phải được xuất ra định dạng YOLO với một file *.txt cho mỗi ảnh. Nếu không có đối tượng nào trong ảnh, bạn không cần file *.txt. File *.txt phải được định dạng với mỗi dòng tương ứng với một đối tượng theo định dạng class x_center y_center width height. Tọa độ hộp bao (bbox) phải ở định dạng xywh chuẩn hóa (từ 0 đến 1). Nếu các hộp bao của bạn tính bằng pixel, bạn nên chia x_centerwidth cho chiều rộng ảnh, đồng thời chia y_centerheight cho chiều cao ảnh. Số thứ tự của lớp phải bắt đầu từ 0 (zero-indexed).

YOLO labeled image with bounding boxes on persons and tie

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

YOLO format label file with normalized coordinates

Khi sử dụng định dạng Ultralytics YOLO, hãy sắp xếp ảnh và nhãn huấn luyện cũng như kiểm thử của bạn như minh họa trong ví dụ dataset COCO8 bên dưới.

YOLO dataset directory structure with train and val folders

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 mô hình của mình:

Ví dụ
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 mô hình Ultralytics YOLO. Định dạng này lưu trữ siêu dữ liệu và các chú thích 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:

  1. 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 lớp và thông tin chung
  2. Các 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"
}

Metadata ảnh tùy chỉnh#

Mỗi bản ghi ảnh có thể bao gồm một đối tượng JSON metadata dành cho ngữ cảnh cụ thể của ứng dụng như điều kiện chụp, mã định danh thiết bị hoặc trạng thái đánh giá. Hệ thống hỗ trợ các giá trị lồng nhau. Khi được nhập vào Ultralytics Platform, metadata được lưu trữ cùng với ảnh đó và có thể xem hoặc chỉnh sửa từ bảng thông tin toàn màn hình của nó.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": { "aircraft": { "family": "A350", "section": "wing" }, "inspectionStatus": "reviewed" }
}

Nền tảng giới hạn các khóa metadata cấp cao nhất ở mức 128 ký tự, đối tượng metadata đã tuần tự hóa của mỗi ảnh ở mức 500.000 ký tự và tổng dung lượng metadata hiệu quả trong một lần nhập NDJSON ở mức 500.000 ký tự.

Ví dụ sử dụng#

Để sử dụng dataset NDJSON với YOLO26, bạn chỉ cần chỉ định đường dẫn đến file .ndjson:

Ví dụ
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 mọi thứ vào bộ nhớ
  • Tích hợp đám mây: Hỗ trợ các URL hình ảnh từ xa để huấn luyện dựa trên đám mây
  • 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 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 loại:

  • African-wildlife: Một dataset bao gồm các 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ự đoán chuyển động từ các môi trường đô thị với các chú thích phong phú.
  • Brain-tumor: Một dataset dùng để phát hiện u não bao gồm các hình ảnh quét MRI hoặc CT kèm theo 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 phát hiện đối tượng, phân đoạn và tạo chú thích quy mô lớn với 80 danh mục đối tượng.
  • COCO8: Một tập con nhỏ hơn gồm 4 ảnh đầu tiên từ tập huấn luyện và kiểm thử của COCO, thích hợp cho việc kiểm thử nhanh.
  • COCO8-Grayscale: Phiên bản thang độ xám (grayscale) 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: Phiên bản phổ đa kênh (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 thức phổ.
  • COCO12-Formats: Một dataset kiểm thử với 12 hình ảnh bao phủ 12 đị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.
  • COCO16: Một tập con gồm 16 ảnh đầu tiên từ COCO train2017 (8 ảnh train + 8 ảnh val), thích hợp cho việc kiểm thử nhanh.
  • COCO32: Một tập con gồm 32 ảnh đầu tiên từ COCO train2017 (16 ảnh train + 16 ảnh val), thích hợp cho việc kiểm thử nhanh.
  • COCO64: Một tập con gồm 64 ảnh đầu tiên từ COCO train2017 (32 ảnh train + 32 ảnh val), thích hợp cho việc kiểm thử nhanh.
  • COCO128: Một tập con nhỏ hơn gồm 128 ảnh đầu tiên từ COCO train2017, thích hợp cho việc kiểm thử.
  • Construction-PPE: Một dataset gồm các công nhân công trường xây dựng được gán nhãn thiết bị an toàn như mũ bảo hiểm, áo phản quang, găng tay, giày ủng và kính bảo hộ, bao gồm các chú thích 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: Một dataset chứa hình ảnh bông lúa cho cuộc thi Global Wheat Challenge 2020.
  • HomeObjects-3K: Một dataset về các vật dụng gia đình trong nhà bao gồm giường, ghế, TV và nhiều thứ 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: Một dataset bao 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: Một dataset phát hiện đối tượng, phân đoạn và tạo chú thích quy mô lớn với 1203 danh mục đối tượng.
  • Medical-pills: Một dataset bao gồm hình ảnh thuốc viên, đượ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 viên và tuân thủ quy định.
  • Objects365: Một dataset chất lượng cao, quy mô lớn dành cho việc 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 gán nhãn.
  • OpenImagesV7: Một dataset toàn diện do Google cung cấp với 1,7 triệu ảnh huấn luyện và 42 nghìn ảnh kiểm thử.
  • 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 miền hình ảnh để đánh giá model toàn diện.
  • Signature: Một dataset bao gồm hình ảnh các tài liệu khác nhau với chữ ký được gán nhãn, hỗ trợ nghiên cứu xác thực tài liệu và phát hiện gian lận.
  • SKU-110K: Một dataset có tính 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 hộp bao.
  • TT100K: Khám phá dataset biển báo giao thông Tsinghua-Tencent 100K (TT100K) với 16.817 hình ảnh đường phố thuộc 221 danh mục biển báo nhằm phục vụ việc 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 nghìn hình ảnh và chuỗi video.
  • VOC: Dataset Pascal Visual Object Classes (VOC) dành cho việc 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 dataset phát hiện đối tượng trong hình ảnh chụp từ trên không với 60 danh mục đối tượng và hơn 1 triệu đối tượng được gán nhãn.

Thêm tập dữ liệu của riêng bạn#

Nếu bạn có tập dữ liệu của riêng mình và muốn sử dụng nó để huấn luyện các mô hình 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 được chỉ định ở trên trong mục "Đị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 đị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 dataset COCO 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 dataset COCO hoặc bất kỳ dataset nào ở định dạng COCO sang định dạng Ultralytics YOLO. Quá trình này biế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 chúng tương thích với các model Ultralytics YOLO.

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 mô hình 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à 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ác bước tiếp theo#

Khi dataset của bạn đã được định dạng xong, hãy bắt đầu huấn luyện model của bạn. Bạn chưa chắc chắn nên bắt đầu từ model huấn luyện trước (pretrained model) nào? Hãy so sánh các tùy chọn trong họ model YOLO26.

Câu hỏi thường gặp#

Đị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 để xác định tập 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 các hình ảnh huấn luyện, xác thực và kiểm tra 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.zip

Nhãn được lưu trong các file *.txt với mỗi file cho một ảnh, được định dạng là class x_center y_center width height với tọa độ chuẩn hóa. Để có hướng dẫn chi tiết, hãy xem ví dụ dataset COCO8.

Làm cách nào để chuyển đổi tập dữ liệu COCO sang định dạng YOLO?#

Bạn có thể chuyển đổi dataset 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à 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 model Ultralytics YOLO. Để biết thêm chi tiết, hãy truy cập phần Chuyển đổi hoặc Cổng Định dạng Nhãn.

Những tập dữ liệu nào được Ultralytics YOLO hỗ trợ để 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 dataset cung cấp thông tin chi tiết về cấu trúc và cách sử dụng phù hợp cho việc huấn luyện YOLO26 hiệu quả. Khám phá toàn bộ danh sách trong phần Dataset được hỗ trợ.

Làm thế nào để bắt đầu huấn luyện mô hình YOLO26 bằng tập dữ liệu của tôi?#

Để bắt đầu huấn luyện mô hình 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:

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 phần Cách 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 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 nhiều 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 Ultralytics nơi bạn có thể tìm thấy 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 giới thiệu về tính năng phát hiện đối tượng, phân đoạn và nhiều tính năng khác với YOLO26. Để xem các ví dụ cụ thể, hãy kiểm tra phần Cách sử dụng trong tài liệu.

Bình luận