Ultralytics YOLO27:
Get Started

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

Đường dẫn ảnh trong 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 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).

YOLO labeled image with bounding boxes on persons and tie

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

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, 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

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

  1. 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
  2. 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
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 đố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:

Ví dụ
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:

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

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

Bình luận