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ạnamescủ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ư.pnghoặ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 và 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 > 1trongnames): một lớpbackgroundbổ 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ớiN + 1kênh đầu ra và kênh cuối cùng là nền. - Một lớp (
N == 1trongnames): 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à1và 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àonames. - 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
255là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óa | Mô tả |
|---|---|
path | Thư 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_dir | Tê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 🚀 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.zipSử 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:
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#
- Lưu các ảnh của bạn trong các thư mục phân chia chẳng hạn như
images/trainvàimages/val. - 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/trainvàmasks/val. - Đảm bảo các giá trị pixel mặt nạ là các ID lớp. Sử dụng
255cho các pixel cần được bỏ qua. - Tạo một tệp YAML tập dữ liệu với
path,train,val,masks_dir, vànames. - Thêm
label_mappingchỉ 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: buildingTùy chọn B — Nhãn đa giác#
- Bố trí ảnh và các tệp đa giác
.txtchính xác như đối với phân đoạn thực thể. - Tạo một tệp YAML tập dữ liệu với
path,train,val, vànames— bỏ quamasks_dir. - Đả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_dirtrong tệp YAML. - 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ành1trong mặt nạ và các pixel không được bao phủ trở thành0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carUltralytics 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
imagesbằngmasks_dirvà 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
namescủ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ầnlabel_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
.txtvớ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ỏ quamasks_dirkhỏi tệp YAML của tập dữ liệu, và đảm bảo không có thư mụcmasks/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ậpmasks_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ớpbackgroundbổ sung được nối thêm và mô hình được xây dựng vớiN + 1kê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à1và 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.