YOLO Vision 2026:

Tổng quan về tập dữ liệu phân đoạn ngữ nghĩa#

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

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

Các định dạng tập dữ liệu được hỗ trợ#

Hai định dạng nhãn được hỗ trợ. Trình tải tập dữ liệu sẽ chọn mặt nạ PNG khi tệp YAML của tập dữ liệu xác định khóa masks_dir, hoặc khi thư mục masks/ đã tồn tại bên cạnh các ảnh của bạn tại thư mục gốc của tập dữ liệu; nếu không, hệ thống sẽ quay về sử dụng nhãn đa giác YOLO.

Định dạng mặt nạ PNG#

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

  • Giá trị pixel 0, 1, 2, ... đại diện cho các ID lớp từ ánh xạ names của tập dữ liệu.
  • Giá trị pixel 255 được xử lý như nhãn bỏ qua và bị loại trừ khỏi quá trình tính toán hàm mất mát và chỉ số.
  • Các tệp mặt nạ nên sử dụng cùng phần gốc (stem) với tệp ảnh tương ứng, ví dụ: frankfurt_000000_000294.png.
  • Mặt nạ được phân giải mặc định là .png; nếu thiếu, các định dạng ảnh được hỗ trợ khác cũng được chấp nhận. Hãy sử dụng các định dạng bảo toàn dữ liệu như .png hoặc .tiff, vì nén mất dữ liệu (ví dụ: .jpg) làm hỏng các giá trị pixel ID lớp.

Bố cục mặc định giữ ảnh và mặt nạ trong các thư mục song song. Giá trị masks_dir từ tệp YAML của tập dữ liệu sẽ thay thế thành phần đường dẫn images để tìm các mặt nạ.

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

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

Định dạng nhãn đa giác YOLO#

Nếu tập dữ liệu của bạn đã có nhãn đa giác Ultralytics YOLO (mỗi ảnh có một .txt với các hà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 đó — không cần chuyển đổi mặt nạ PNG. Xem định dạng tập dữ liệu phân đoạn thực thể để biết bố cục theo cấp độ hàng.

Đường dẫn này được chọn tự động khi tệp YAML của tập dữ liệu bỏ qua masks_dir không có thư mục masks/ nào tồn tại cạnh các ảnh của bạn ở thư mục gốc của tập dữ liệu — hãy xóa hoặc đổi tên bất kỳ thư mục masks/ thừa nào, nếu không trình tải sẽ chuyển về chế độ mặt nạ PNG và tìm kiếm mặt nạ ở đó. Hành vi:

  • Các đa giác được chuyển đổi thành mặt nạ ngữ nghĩa cho mỗi ảnh tại thời điểm tải, được sắp xếp theo diện tích để các đối tượng nhỏ hơn sẽ đè lên các đối tượng lớn hơn trong các vùng chồng lấp.
  • Đa lớp (N > 1 trong names): một lớp background bổ sung được nối thêm sau các lớp bạn đã khai báo cho các pixel không nằm trong bất kỳ đa giác nào. Mô hình được xây dựng với N + 1 kênh đầu ra và kênh cuối cùng là nền.
  • Một lớp (N == 1 trong names): vẫn được huấn luyện dưới dạng 1 lớp. Mặt nạ có dạng nhị phân, với lớp bạn khai báo hiển thị là 1 và các pixel không nằm trong bất kỳ đa giác nào là 0. Không có lớp nền bổ sung nào được thêm vào names.
  • Các pixel được thêm vào do phần đệm tăng cường (ví dụ: cắt ngẫu nhiên) vẫn sử dụng 255 làm nhãn bỏ qua.

Sử dụng đường dẫn này khi dữ liệu của bạn đã được gắn nhãn dưới dạng đa giác cá thể và bạn muốn có một mô hình phân đoạn ngữ nghĩa từ cùng các tệp đó.

Định dạng YAML cho tập dữ liệu#

Các tập dữ liệu 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 là:

KhóaMô tả
pathThư mục gốc của tập dữ liệu.
trainĐường dẫn ảnh huấn luyện tương đối với path, hoặc một đường dẫn tuyệt đối.
valĐường dẫn ảnh kiểm tra (validation) tương đối với path, hoặc một đường dẫn tuyệt đối.
testĐường dẫn hình ảnh kiểm tra tùy chọn.
masks_dirTên thư mục được sử dụng cho mặt nạ ngữ nghĩa. Bỏ qua khóa này (không có thư mục masks/ tại thư mục gốc của tập dữ liệu) để chuyển sang định dạng nhãn đa giác YOLO.
namesÁnh xạ từ ID lớp sang tên lớp.
label_mappingÁnh xạ tùy chọn từ các ID tập dữ liệu nguồn sang các 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 các ID mặt nạ nguồn chưa khớp với các ID lớp huấn luyện liên tục. Cityscapes và ADE20K bao gồm các ánh xạ chuyển đổi ID nhãn gốc thành ID huấn luyện phân đoạn ngữ nghĩa YOLO và bỏ qua các nhãn không sử dụng.

Cách sử dụng#

Huấn luyện một mô hình phân đoạn ngữ nghĩa YOLO26 bằng Python hoặc CLI:

Ví dụ
from ultralytics import YOLO

# Load a pretrained semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train on the Cityscapes8 semantic segmentation dataset
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Các tập dữ liệu được hỗ trợ#

Ultralytics cung cấp các tệp YAML tập dữ liệu phân đoạn ngữ nghĩa cho các tập dữ liệu này. Xem trang tác vụ phân đoạn ngữ nghĩa để xem bảng chuẩn mực mô hình tiền huấn luyện đầy đủ.

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

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

Tùy chọn A — Mặt nạ PNG#

  1. Lưu các ảnh của bạn trong các thư mục phân chia chẳng hạn như images/trainimages/val.
  2. Lưu một mặt nạ đơn kênh cho mỗi ảnh trong các thư mục mặt nạ tương ứng, chẳng hạn như masks/trainmasks/val.
  3. Đảm bảo các giá trị pixel mặt nạ là các ID lớp. Sử dụng 255 cho các pixel cần được bỏ qua.
  4. Tạo một tệp YAML tập dữ liệu với path, train, val, masks_dir, và names.
  5. Thêm label_mapping chỉ khi các ID mặt nạ của bạn cần chuyển đổi thành các 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 đa giác#

  1. Bố trí ảnh và các tệp đa giác .txt chính xác như đối với phân đoạn thực thể.
  2. Tạo một tệp YAML tập dữ liệu với path, train, val, và namesbỏ qua masks_dir.
  3. Đảm bảo không có thư mục masks/ nào tồn tại cạnh các ảnh của bạn ở thư mục gốc của tập dữ liệu — sự hiện diện của nó tự động chuyển trình tải sang chế độ mặt nạ PNG ngay cả khi không có masks_dir trong tệp YAML.
  4. Không thêm mục "nền" vào names. Đối với các tập dữ liệu đa lớp, trình tải sẽ tự động thêm một mục; đối với các tập dữ liệu đơn lớp, quá trình huấn luyện giữ nguyên ở 1 lớp — lớp bạn khai báo trở thành 1 trong mặt nạ và các pixel không được bao 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 đa giác cho tác vụ ngữ nghĩa, cộng với tính năng chú thích thông minh hỗ trợ bởi SAM — chú thích trực tiếp trên trình duyệt và xuất hoặc huấn luyện trên tập dữ liệu được gán nhãn đa giác kết quả mà không cần thiết lập thủ công bố cục này.

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

  • Mặt nạ phân đoạn ngữ nghĩa là các bản đồ pixel dày đặc. Mỗi pixel lưu trữ một ID lớp và có một ảnh mặt nạ cho mỗi ảnh huấn luyện. Nhãn phân đoạn cá thể trong Ultralytics YOLO sử dụng các tệp văn bản với tọa độ đa giác, mỗi hàng cho một cá thể đối tượng.

  • Giá trị pixel 255 được sử dụng làm nhãn bỏ qua. Các pixel này bị bỏ qua trong quá trình tính toán hàm mất mát và chỉ số, điều này hữu ích cho các vùng trống, pixel chưa được gán nhãn, hoặc các lớp nằm ngoài tập nhãn huấn luyện.

  • Có. Mỗi mặt nạ ngữ nghĩa phải có cùng phần gốc tệp với ảnh tương ứng. Trình tải tập dữ liệu thay thế thành phần thư mục images bằng masks_dir và tìm kiếm các tệp mặt nạ khớp, quay về các phần mở rộng ảnh được hỗ trợ khác (.jpg, .tiff, v.v.) nếu không tìm thấy mặt nạ .png — mặc dù chỉ khuyến nghị các định dạng bảo toàn dữ liệu, vì tính năng dự phòng không thực thi điều này.

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

  • Có. Các tập dữ liệu phân đoạn thực thể sử dụng nhãn đa giác Ultralytics YOLO (mỗi ảnh có một .txt với các hàng <class-index> <x1> <y1> <x2> <y2> ...), và các tệp tương tự có thể được tái sử dụng cho phân đoạn ngữ nghĩa — chỉ cần bỏ qua masks_dir khỏi tệp YAML của tập dữ liệu, và đảm bảo không có thư mục masks/ nào tồn tại cạnh các ảnh của bạn ở thư mục gốc của tập dữ liệu (sự hiện diện của nó kích hoạt chế độ mặt nạ PNG ngay cả khi không thiết lập masks_dir). Trình tải sau đó sẽ chuyển đổi các đa giác thành mặt nạ cho từng ảnh ngay khi chạy. Đối với các tập dữ liệu đa lớp (N > 1), một lớp background bổ sung được nối thêm và mô hình được xây dựng với N + 1 kênh đầu ra. Đối với các tập dữ liệu đơn lớp (N == 1), quá trình huấn luyện giữ nguyên ở 1 lớp — mặt nạ hiển thị lớp bạn khai báo là 1 và các pixel không được bao phủ là 0.

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

Bình luận