Visão geral dos conjuntos de dados de segmentação semântica#
A segmentação semântica atribui um rótulo de classe a cada píxel de uma imagem. Ao contrário da segmentação de instâncias, a segmentação semântica não separa objetos individuais da mesma classe. O objetivo do treino é um mapa de classes denso, no qual cada píxel armazena um ID de classe.
Este guia explica o formato de conjunto de dados utilizado pelos modelos Ultralytics YOLO de segmentação semântica e lista as configurações de conjuntos de dados integradas disponíveis para treino e validação.
Formatos de conjuntos de dados suportados#
São suportados dois formatos de rótulos. O carregador do conjunto de dados seleciona máscaras PNG quando o YAML do conjunto de dados define uma chave masks_dir ou quando já existe uma pasta masks/ junto às imagens na raiz do conjunto de dados; caso contrário, recorre aos rótulos de polígonos YOLO.
Formato de máscara PNG#
Os conjuntos de dados de segmentação semântica utilizam um ficheiro de imagem e um ficheiro de máscara por amostra. A máscara é uma imagem de canal único, normalmente PNG, na qual o valor de cada píxel corresponde ao índice da classe do píxel correspondente da imagem.
- Os valores de píxel
0,1,2, ... representam IDs de classe do mapeamentonamesdo conjunto de dados. - O valor de píxel
255é tratado como rótulo a ignorar e é excluído do cálculo da perda e das métricas. - Os ficheiros de máscara devem utilizar o mesmo nome-base do ficheiro de imagem correspondente, por exemplo
frankfurt_000000_000294.png. - Por predefinição, as máscaras são procuradas como
.png; se não forem encontradas, também são aceites outras extensões de imagem suportadas. Utiliza formatos sem perdas, como.pngou.tiff, porque a compressão com perdas (por exemplo,.jpg) corrompe os valores de píxel dos IDs de classe.
A estrutura predefinida mantém as imagens e as máscaras em pastas paralelas. O valor masks_dir do YAML do conjunto de dados substitui o componente de caminho images para localizar as máscaras.
dataset/
├── images/
│ ├── train/
│ └── val/
└── masks/
├── train/
└── val/Por exemplo, uma imagem em images/train/aachen_000000_000019.png é associada a uma máscara em masks/train/aachen_000000_000019.png quando masks_dir: masks.
Formato de rótulos de polígonos YOLO#
Se o teu conjunto de dados já tiver rótulos de polígonos Ultralytics YOLO (um .txt por imagem com linhas <class-index> <x1> <y1> <x2> <y2> ...), podes treinar diretamente a segmentação semântica a partir deles — sem necessidade de conversão para máscaras PNG. Consulta o formato de conjunto de dados de segmentação de instâncias para conhecer a estrutura ao nível das linhas.
Este caminho é selecionado automaticamente quando o YAML do conjunto de dados omite masks_dir e não existe uma pasta masks/ junto às imagens na raiz do conjunto de dados — remove ou muda o nome de qualquer pasta masks/ restante, caso contrário o carregador recorre ao modo de máscaras PNG e procura as máscaras nessa pasta. Comportamento:
- Os polígonos são convertidos numa máscara semântica por imagem no momento do carregamento e ordenados por área, para que os objetos mais pequenos se sobreponham aos maiores nas regiões de interseção.
- Várias classes (
N > 1emnames): é acrescentada uma classebackgroundadicional depois das classes declaradas para os píxeis não abrangidos por nenhum polígono. O modelo é criado comN + 1canais de saída e o último canal corresponde ao fundo. - Classe única (
N == 1emnames): continua a ser treinado como 1 classe. A máscara é binária, com a classe declarada representada como1e os píxeis não abrangidos por nenhum polígono como0. Não é acrescentada nenhuma classe de fundo adicional anames. - Os píxeis adicionados pelo preenchimento de aumento de dados (por exemplo, um recorte aleatório) continuam a utilizar
255como rótulo a ignorar.
Utiliza este caminho quando os teus dados já estiverem anotados como polígonos de instâncias e quiseres um modelo de segmentação semântica a partir dos mesmos ficheiros.
Formato YAML do conjunto de dados#
Os conjuntos de dados de segmentação semântica são configurados com ficheiros YAML. Os campos principais são:
| Chave | Descrição |
|---|---|
path | Diretório raiz do conjunto de dados. |
train | Caminho das imagens de treino relativo a path ou um caminho absoluto. |
val | Caminho das imagens de validação relativo a path ou um caminho absoluto. |
test | Caminho opcional das imagens de teste. |
masks_dir | Nome do diretório utilizado para as máscaras semânticas. Omite esta chave (sem uma pasta masks/ na raiz do conjunto de dados) para mudar para o formato de rótulos de polígonos YOLO. |
names | Mapeamento de ID de classe para nome de classe. |
label_mapping | Mapeamento opcional dos IDs do conjunto de dados de origem para IDs de treino ou 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.zipUtiliza label_mapping quando os IDs das máscaras de origem ainda não correspondem a IDs de classe de treino contíguos. Cityscapes e ADE20K incluem mapeamentos que convertem os IDs de rótulo originais em IDs de treino de segmentação semântica YOLO e ignoram os rótulos não utilizados.
Utilização#
Treina um modelo YOLO26 de segmentação semântica com Python ou 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)Conjuntos de dados suportados#
A Ultralytics fornece ficheiros YAML de conjuntos de dados de segmentação semântica para estes conjuntos de dados. Consulta a página da tarefa de segmentação semântica para ver a tabela completa de benchmark de modelos pré-treinados.
- Cityscapes: Dataset de segmentação semântica de cenas urbanas com 19 classes de treino.
- Cityscapes8: um subconjunto de Cityscapes com 8 imagens para testes rápidos e verificações de CI.
- ADE20K: Dataset de interpretação de cenas com 150 classes semânticas.
Adicionar o teu próprio conjunto de dados#
Opção A — máscaras PNG#
- Guarda as tuas imagens em pastas de divisão, como
images/traineimages/val. - Guarda uma máscara de canal único por imagem nas pastas de máscaras correspondentes, como
masks/trainemasks/val. - Garante que os valores dos píxeis das máscaras são IDs de classe. Utiliza
255para os píxeis que devem ser ignorados. - Cria um YAML de conjunto de dados com
path,train,val,masks_direnames. - Adiciona
label_mappingapenas quando os IDs das máscaras precisarem de ser convertidos em IDs de treino contíguos.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks
names:
0: background
1: road
2: buildingOpção B — rótulos de polígonos#
- Organiza as imagens e os ficheiros de polígonos
.txtexatamente como para a segmentação de instâncias. - Cria um YAML de conjunto de dados com
path,train,valenames— omitemasks_dir. - Certifica-te de que não existe nenhuma pasta
masks/junto às imagens na raiz do conjunto de dados — a sua simples presença muda o carregador para o modo de máscaras PNG, mesmo semmasks_dirno YAML. - Não adiciones uma entrada "fundo" a
names. Nos conjuntos de dados com várias classes, o carregador adiciona-a automaticamente; nos conjuntos de dados com classe única, o treino mantém-se em 1 classe — a classe declarada torna-se1na máscara e os píxeis não abrangidos tornam-se0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carA Ultralytics Platform fornece uma ferramenta de anotação de polígonos para a tarefa semântica, além de anotação inteligente assistida por SAM — anota diretamente no navegador e exporta ou treina no conjunto de dados resultante, com rótulos de polígonos, sem teres de configurar manualmente esta estrutura.
Perguntas frequentes#
As máscaras de segmentação semântica são mapas densos de píxeis. Cada píxel armazena um ID de classe e existe uma imagem de máscara por imagem de treino. Os rótulos de segmentação de instâncias no Ultralytics YOLO utilizam ficheiros de texto com coordenadas de polígonos, uma linha por instância de objeto.
O valor de píxel
255é utilizado como rótulo a ignorar. Estes píxeis são ignorados durante o cálculo da perda e das métricas, o que é útil para regiões vazias, píxeis não anotados ou classes fora do conjunto de rótulos de treino.Sim. Cada máscara semântica deve ter o mesmo nome-base do ficheiro de imagem correspondente. O carregador do conjunto de dados substitui o componente de diretório
imagespormasks_dire procura ficheiros de máscara correspondentes, recorrendo a outras extensões de imagem suportadas (.jpg,.tiff, etc.) se não encontrar uma máscara.png— embora apenas sejam recomendados formatos sem perdas, uma vez que esta alternativa não o impõe.Sim, se já corresponderem aos IDs de classe
names. Se o conjunto de dados de origem utilizar IDs não contíguos ou incluir rótulos que devam ser ignorados, adiciona uma secçãolabel_mappingpara converter os valores de píxel de origem em IDs de treino.Sim. Os conjuntos de dados de segmentação de instâncias utilizam rótulos de polígonos Ultralytics YOLO (um
.txtpor imagem com linhas<class-index> <x1> <y1> <x2> <y2> ...) e os mesmos ficheiros podem ser reutilizados para a segmentação semântica — basta omitirmasks_dirdo YAML do conjunto de dados e garantir que não existe nenhuma pastamasks/junto às imagens na raiz do conjunto de dados (a sua presença, por si só, ativa o modo de máscaras PNG, mesmo semmasks_dirdefinido). O carregador converte então os polígonos em máscaras por imagem durante o processamento. Nos conjuntos de dados com várias classes (N > 1), é acrescentada uma classebackgroundadicional e o modelo é criado comN + 1canais de saída. Nos conjuntos de dados com classe única (N == 1), o treino mantém-se em 1 classe — a máscara apresenta a classe declarada como1e os píxeis não abrangidos como0.A Ultralytics inclui ficheiros YAML de conjuntos de dados prontos a utilizar para Cityscapes (19 classes de cenas urbanas), o subconjunto leve Cityscapes8 para testar pipelines e ADE20K (150 classes de interpretação de cenas). Cada página documenta a lista exata de classes, os passos de transferência e um exemplo de treino verificado.