Ultralytics YOLO27:
Get Started

Tổng quan về các dataset phân đoạn ngữ nghĩa#

Phân đoạn ngữ nghĩa gán một nhãn class cho mọi pixel trong ảnh. Khác với phân đoạn đối tượng, phân đoạn ngữ nghĩa không tách riêng từng đối tượng thuộc cùng một class. Mục tiêu huấn luyện là một bản đồ class dày đặc, trong đó mỗi pixel lưu một ID class.

Hướng dẫn này giải thích định dạng dataset được các model phân đoạn ngữ nghĩa Ultralytics YOLO sử dụng và liệt kê các cấu hình dataset tích hợp sẵn để huấn luyện và xác thực.

Các định dạng dataset được hỗ trợ#

Có hỗ trợ hai định dạng nhãn. Trình tải dataset chọn mask PNG khi YAML của dataset định nghĩa khóa masks_dir, hoặc khi thư mục masks/ đã tồn tại bên cạnh ảnh tại thư mục gốc của dataset; nếu không, trình tải sẽ dùng nhãn polygon YOLO.

Định dạng mask PNG#

Dataset phân đoạn ngữ nghĩa sử dụng một tệp ảnh và một tệp mask cho mỗi mẫu. Mask là ảnh một kênh, thường ở định dạng PNG, trong đó giá trị của mỗi pixel là chỉ số class tương ứng với pixel ảnh.

  • Các giá trị pixel 0, 1, 2, ... biểu thị ID class theo mapping names của dataset.
  • Giá trị pixel 255 được xem là nhãn cần bỏ qua và không được tính vào loss hoặc metric.
  • Tệp mask nên dùng cùng tên gốc với tệp ảnh tương ứng, ví dụ frankfurt_000000_000294.png.
  • Theo mặc định, mask được tìm dưới dạng .png; nếu không tìm thấy, các phần mở rộng ảnh được hỗ trợ khác cũng được chấp nhận. Hãy dùng các định dạng không mất dữ liệu như .png hoặc .tiff, vì nén mất dữ liệu (ví dụ .jpg) làm sai lệch giá trị pixel ID class.

Bố cục mặc định đặt ảnh và mask trong các thư mục song song. Giá trị masks_dir từ YAML của dataset thay thế thành phần đường dẫn images để tìm mask.

dataset/
├── images/
│   ├── train/
│   └── val/
└── masks/
    ├── train/
    └── val/

Ví dụ, ảnh tại images/train/aachen_000000_000019.png được ghép với mask tại masks/train/aachen_000000_000019.png khi masks_dir: masks.

Định dạng nhãn polygon YOLO#

Nếu dataset đã có nhãn polygon Ultralytics YOLO (một .txt cho mỗi ảnh với các dòng <class-index> <x1> <y1> <x2> <y2> ...), bạn có thể huấn luyện phân đoạn ngữ nghĩa trực tiếp từ các nhãn này — không cần chuyển đổi mask PNG. Xem định dạng dataset phân đoạn đối tượng để biết bố cục ở cấp dòng.

Đường dẫn này được tự động chọn khi YAML của dataset không có masks_dir và không tồn tại thư mục masks/ bên cạnh ảnh tại thư mục gốc của dataset — hãy xóa hoặc đổi tên mọi thư mục masks/ còn sót lại, nếu không trình tải sẽ chuyển về chế độ mask PNG và tìm mask ở đó. Cách hoạt động:

  • Khi tải dữ liệu, các polygon được chuyển đổi thành mask ngữ nghĩa cho từng ảnh và sắp xếp theo diện tích để các đối tượng nhỏ hơn ghi đè lên đối tượng lớn hơn ở những vùng chồng lấp.
  • Nhiều class (N > 1 trong names): một class background bổ sung được thêm sau các class đã khai báo để biểu thị những pixel không thuộc polygon nào. Model được tạo với N + 1 kênh đầu ra và kênh cuối cùng là nền.
  • Một class (N == 1 trong names): vẫn được huấn luyện như một class. Mask là mask nhị phân, trong đó class đã khai báo được biểu thị bằng 1, còn các pixel không thuộc polygon nào được biểu thị bằng 0. Không thêm class nền nào vào names.
  • Các pixel được thêm vào bằng phần đệm khi tăng cường dữ liệu (ví dụ: cắt ngẫu nhiên) vẫn dùng 255 làm nhãn cần bỏ qua.

Sử dụng đường dẫn này khi dữ liệu đã được gán nhãn dưới dạng polygon đối tượng và bạn muốn tạo model phân đoạn ngữ nghĩa từ cùng các tệp đó.

Định dạng YAML của dataset#

Dataset phân đoạn ngữ nghĩa được cấu hình bằng các tệp YAML. Các trường chính gồm:

KhóaMô tả
pathThư mục gốc của dataset.
trainĐường dẫn ảnh huấn luyện tương đối so với path hoặc đường dẫn tuyệt đối.
valĐường dẫn ảnh xác thực tương đối so với path hoặc đường dẫn tuyệt đối.
testĐường dẫn ảnh kiểm tra không bắt buộc.
masks_dirTên thư mục dùng cho mask ngữ nghĩa. Bỏ qua khóa này (khi không có thư mục masks/ tại thư mục gốc của dataset) để chuyển sang định dạng nhãn polygon YOLO.
namesMapping từ ID class sang tên class.
label_mappingMapping không bắt buộc từ ID dataset nguồn sang ID huấn luyện hoặc ignore_label.
ultralytics/cfg/datasets/cityscapes8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes8
# Example usage: yolo semantic train data=cityscapes8.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes8 ← downloads here (small subset)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

masks_dir: masks # semantic mask directory

# Cityscapes 19-class labels
names:
  0: road
  1: sidewalk
  2: building
  3: wall
  4: fence
  5: pole
  6: traffic light
  7: traffic sign
  8: vegetation
  9: terrain
  10: sky
  11: person
  12: rider
  13: car
  14: truck
  15: bus
  16: train
  17: motorcycle
  18: bicycle

# Map source label IDs to train IDs; ignore_label is converted to 255.
label_mapping:
  -1: ignore_label
  0: ignore_label
  1: ignore_label
  2: ignore_label
  3: ignore_label
  4: ignore_label
  5: ignore_label
  6: ignore_label
  7: 0
  8: 1
  9: ignore_label
  10: ignore_label
  11: 2
  12: 3
  13: 4
  14: ignore_label
  15: ignore_label
  16: ignore_label
  17: 5
  18: ignore_label
  19: 6
  20: 7
  21: 8
  22: 9
  23: 10
  24: 11
  25: 12
  26: 13
  27: 14
  28: 15
  29: ignore_label
  30: ignore_label
  31: 16
  32: 17
  33: 18

# Download URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/cityscapes8.zip

Sử dụng label_mapping khi ID mask nguồn chưa khớp với ID lớp huấn luyện liên tục. Cityscapes và ADE20K có các ánh xạ chuyển ID nhãn gốc thành ID huấn luyện phân đoạn ngữ nghĩa của YOLO và bỏ qua các nhãn không được sử dụng.

Cách sử dụng#

Huấn luyện model phân đoạn ngữ nghĩa YOLO26 bằng Python hoặc CLI:

Ví dụ
from ultralytics import YOLO

# Tải model phân đoạn ngữ nghĩa đã pretrained
model = YOLO("yolo26n-sem.pt")

# Huấn luyện trên dataset phân đoạn ngữ nghĩa Cityscapes8
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Dataset được hỗ trợ#

Ultralytics cung cấp các file YAML dataset phân đoạn ngữ nghĩa cho những dataset này. Xem trang tác vụ phân đoạn ngữ nghĩa để biết bảng benchmark model pretrained đầy đủ.

  • Cityscapes: Dataset phân đoạn ngữ nghĩa cảnh đường phố đô thị với 19 lớp huấn luyện.
  • Cityscapes8: Tập con Cityscapes gồm 8 ảnh để kiểm thử nhanh và kiểm tra CI.
  • ADE20K: Dataset phân tích cảnh với 150 lớp ngữ nghĩa.

Thêm dataset của riêng bạn#

Tùy chọn A — Mask PNG#

  1. Lưu ảnh vào các thư mục phân tách như images/train và images/val.
  2. Lưu một mask một kênh cho mỗi ảnh trong các thư mục mask tương ứng, chẳng hạn masks/train và masks/val.
  3. Đảm bảo các giá trị pixel trong mask là ID lớp. Sử dụng 255 cho các pixel cần bỏ qua.
  4. Tạo YAML dataset với path, train, val, masks_dir và names.
  5. Chỉ thêm label_mapping khi cần chuyển đổi ID mask thành ID huấn luyện liên tục.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks

names:
    0: background
    1: road
    2: building

Tùy chọn B — Nhãn polygon#

  1. Sắp xếp ảnh và các file polygon .txt giống hệt như đối với phân đoạn instance.
  2. Tạo YAML dataset với path, train, val và names — không bao gồm masks_dir.
  3. Đảm bảo không có thư mục masks/ bên cạnh ảnh trong thư mục gốc dataset — chỉ cần thư mục này tồn tại là trình tải chuyển sang chế độ mask PNG, ngay cả khi YAML không có masks_dir.
  4. Không thêm mục "background" vào names. Với dataset nhiều lớp, trình tải sẽ tự động thêm một lớp; với dataset một lớp, quá trình huấn luyện vẫn giữ 1 lớp — lớp bạn khai báo trở thành 1 trong mask và các pixel không được phủ trở thành 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Ultralytics Platform cung cấp công cụ chú thích polygon cho tác vụ phân đoạn ngữ nghĩa cùng tính năng chú thích thông minh có hỗ trợ SAM — chú thích trực tiếp trên trình duyệt rồi xuất hoặc huấn luyện trên dataset có nhãn polygon thu được mà không cần tự thiết lập cấu trúc này.

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

  • Mask phân đoạn ngữ nghĩa là bản đồ pixel dày đặc. Mỗi pixel lưu một ID lớp và mỗi ảnh huấn luyện có một ảnh mask. Nhãn phân đoạn instance trong Ultralytics YOLO dùng các file văn bản chứa tọa độ polygon, mỗi hàng tương ứng với một đối tượng instance.

  • Giá trị pixel 255 được dùng làm nhãn bỏ qua. Các pixel này không được tính vào loss và metric, rất hữu ích với vùng void, pixel chưa gán nhãn hoặc lớp nằm ngoài tập nhãn huấn luyện.

  • Có. Mỗi mask ngữ nghĩa cần có cùng tên gốc file với ảnh tương ứng. Trình tải dataset thay thành phần thư mục images bằng masks_dir và tìm các file mask khớp tên; nếu không tìm thấy mask .png, trình tải sẽ dùng các phần mở rộng ảnh được hỗ trợ khác (.jpg, .tiff, v.v.) — tuy nhiên chỉ nên dùng định dạng không mất dữ liệu vì cơ chế dự phòng không kiểm tra điều này.

  • Có, nếu các ID đó đã khớp với ID lớp names của bạn. Nếu dataset nguồn dùng ID không liên tục hoặc có các nhãn cần bỏ qua, hãy thêm phần label_mapping để chuyển giá trị pixel nguồn thành ID huấn luyện.

  • Có. Dataset phân đoạn instance sử dụng nhãn polygon Ultralytics YOLO (mỗi ảnh có một .txt với các hàng <class-index> <x1> <y1> <x2> <y2> ...), và có thể dùng lại chính các file này cho phân đoạn ngữ nghĩa — chỉ cần không bao gồm masks_dir trong YAML dataset và đảm bảo không có thư mục masks/ bên cạnh ảnh trong thư mục gốc dataset (chỉ cần thư mục này tồn tại là chế độ mask PNG được kích hoạt, ngay cả khi không đặt masks_dir). Sau đó, trình tải chuyển polygon thành mask cho từng ảnh ngay khi chạy. Với dataset nhiều lớp (N > 1), một lớp background bổ sung sẽ được thêm vào và model được tạo với N + 1 kênh đầu ra. Với dataset một lớp (N == 1), quá trình huấn luyện vẫn giữ 1 lớp — mask biểu thị lớp bạn khai báo bằng 1 và các pixel không được phủ bằng 0.

  • Ultralytics bao gồm các file YAML dataset sẵn dùng cho Cityscapes (19 lớp cảnh đô thị), tập con Cityscapes8 gọn nhẹ để kiểm thử pipeline và ADE20K (150 lớp phân tích cảnh). Mỗi trang mô tả danh sách lớp chính xác, các bước tải xuống và ví dụ huấn luyện đã được xác minh.

Bình luận