Ultralytics YOLO27:

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/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 mục trong train, valtest 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.

Đường dẫn ảnh dưới dạng file `*.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

Label 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_centerwidth cho chiều rộng ảnh, đồng thời chia y_centerheight cho chiều cao ảnh. Số class phải được đánh chỉ mục bắt đầu từ 0.

YOLO labeled image with bounding boxes on persons and tie

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):

YOLO format label file with normalized coordinates

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.

YOLO dataset directory structure with train and val folders

Ví dụ sử dụng#

Sau đây là cách sử dụng dataset ở định dạng YOLO để huấn luyện model:

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 (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:

  1. 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
  2. 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
Ví dụ NDJSON
{
    "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:

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#

  • 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:

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. 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.zip

    Label được lưu trong các file *.txt, mỗi ảnh có một file, được định dạng theo class x_center y_center width height vớ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.

Bình luận