Visão geral dos conjuntos de dados de segmentação semântica#
Semantic segmentation atribui um rótulo de classe a cada pixel em uma imagem. Ao contrário da instance segmentation, a segmentação semântica não separa objetos individuais da mesma classe. O alvo de treinamento é um mapa de classes denso onde cada pixel armazena um ID de classe.
Este guia explica o formato de conjunto de dados utilizado pelos modelos de segmentação semântica do Ultralytics YOLO e lista as configurações de conjunto de dados integradas disponíveis para treinamento e validação.
Formatos de dataset suportados#
Dois formatos de rótulo são suportados. O carregador de conjuntos de dados escolhe máscaras PNG quando o YAML do conjunto de dados define uma chave masks_dir, ou quando uma pasta masks/ já existe ao lado das suas imagens na raiz do conjunto de dados; caso contrário, ele recorre aos rótulos de polígono YOLO.
Formato de máscara PNG#
Os conjuntos de dados de segmentação semântica utilizam um arquivo de imagem e um arquivo de máscara por amostra. A máscara é uma imagem de canal único, geralmente PNG, onde cada valor de pixel é o índice de classe para o pixel de imagem correspondente.
- Os valores de pixel
0,1,2, ... representam IDs de classe do mapeamentonamesdo conjunto de dados. - O valor de pixel
255é tratado como o rótulo de ignorar e é excluído do cálculo de perda e métricas. - Os arquivos de máscara devem usar o mesmo nome base (stem) do arquivo de imagem correspondente, por exemplo
frankfurt_000000_000294.png. - As máscaras são resolvidas como
.pngpor padrão; se estiverem faltando, outras extensões de imagem suportadas também são aceitas. Use formatos sem perdas (lossless) como.pngou.tiff, já que a compressão com perdas (por exemplo,.jpg) corrompe os valores de pixel dos IDs de classe.
O layout padrão mantém imagens e máscaras em pastas paralelas. O valor masks_dir do YAML do conjunto de dados substitui o componente de caminho images para encontrar as máscaras.
dataset/
├── images/
│ ├── train/
│ └── val/
└── masks/
├── train/
└── val/Por exemplo, uma imagem em images/train/aachen_000000_000019.png é pareada com uma máscara em masks/train/aachen_000000_000019.png quando masks_dir: masks.
Formato de rótulo de polígono YOLO#
Se o seu conjunto de dados já possui rótulos de polígono Ultralytics YOLO (um .txt por imagem com linhas <class-index> <x1> <y1> <x2> <y2> ...), você pode treinar a segmentação semântica diretamente a partir deles — sem necessidade de conversão para máscara PNG. Consulte o instance segmentation dataset format para o layout em nível de linha.
Este caminho é selecionado automaticamente quando o YAML do conjunto de dados omite masks_dir e nenhuma pasta masks/ existe ao lado de suas imagens na raiz do conjunto de dados — remova ou renomeie qualquer pasta masks/ restante, ou o carregador retornará ao modo de máscara PNG e procurará por máscaras lá. Comportamento:
- Os polígonos são convertidos em uma máscara semântica por imagem no momento do carregamento, classificados por área para que objetos menores substituam os maiores em regiões de sobreposição.
- Multiclasse (
N > 1emnames): uma classe extrabackgroundé adicionada após as suas classes declaradas para pixels não cobertos por nenhum polígono. O modelo é construído com canais de saídaN + 1e o último canal é o fundo. - Classe única (
N == 1emnames): ainda treinada como 1 classe. A máscara é binária, com a sua classe declarada mostrada como1e os pixels não cobertos por nenhum polígono como0. Nenhuma classe de fundo extra é adicionada anames. - Pixels adicionados pelo preenchimento de aumento (por exemplo, corte aleatório) ainda usam
255como o rótulo de ignorar.
Use este caminho quando seus dados já estiverem rotulados como polígonos de instância e você quiser um modelo de segmentação semântica a partir dos mesmos arquivos.
Formato YAML de conjunto de dados#
Conjuntos de dados de segmentação semântica são configurados com arquivos YAML. Os campos principais são:
| Chave | Descrição |
|---|---|
path | Diretório raiz do conjunto de dados. |
train | Caminho da imagem de treinamento relativo a path, ou um caminho absoluto. |
val | Caminho da imagem de validação relativo a path, ou um caminho absoluto. |
test | Caminho opcional de imagem de teste. |
masks_dir | Nome do diretório usado para máscaras semânticas. Omitir esta chave (sem pasta masks/ na raiz do conjunto de dados) para mudar para o formato de rótulo de polígono YOLO. |
names | Mapeamento de ID de classe para nome de classe. |
label_mapping | Mapeamento opcional de IDs do conjunto de dados de origem para IDs de treinamento 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.zipUse label_mapping quando os IDs da máscara de origem ainda não correspondem aos IDs de classe de treinamento 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 rótulos não utilizados.
Uso#
Treine um modelo de segmentação semântica YOLO26 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)Datasets suportados#
A Ultralytics fornece arquivos YAML de conjuntos de dados de segmentação semântica para esses conjuntos de dados. Consulte a semantic segmentation task page para ver a tabela completa de benchmarks de modelos pré-treinados.
- Cityscapes: Conjunto de dados de segmentação semântica de cenas de ruas urbanas com 19 classes de treino.
- Cityscapes8: Um subconjunto do Cityscapes com 8 imagens para testes rápidos e verificações de CI.
- ADE20K: Conjunto de dados de análise de cenas com 150 classes semânticas.
Adicionando seu próprio conjunto de dados#
Opção A — Máscaras PNG#
- Salve suas imagens em pastas de divisão (splits) como
images/traineimages/val. - Salve uma única máscara de canal por imagem sob as pastas de máscara espelhadas, como
masks/trainemasks/val. - Certifique-se de que os valores de pixel da máscara sejam IDs de classe. Use
255para pixels que devem ser ignorados. - Crie um YAML de conjunto de dados com
path,train,val,masks_direnames. - Adicione
label_mappingapenas quando os IDs da sua máscara precisarem de conversão para 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ígono#
- Organize as imagens e os arquivos de polígono
.txtexatamente como para instance segmentation. - Crie um YAML de conjunto de dados com
path,train,valenames— omitamasks_dir. - Certifique-se de que nenhuma pasta
masks/exista ao lado de suas imagens na raiz do conjunto de dados — apenas a sua presença já muda o carregador para o modo de máscara PNG, mesmo semmasks_dirno arquivo YAML. - Não adicione uma entrada de "fundo" (background) a
names. Para conjuntos de dados multiclasse, o carregador anexa uma automaticamente; para conjuntos de dados de classe única, o treinamento permanece em 1 classe — sua classe declarada se torna1na máscara e os pixels não cobertos tornam-se0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carUltralytics Platform fornece uma ferramenta de anotação de polígonos para a tarefa semântica, além de anotação inteligente assistida por SAM — anote diretamente no navegador e exporte ou treine no conjunto de dados rotulado por polígono resultante sem configurar este layout manualmente.
FAQ#
Máscaras de segmentação semântica são mapas de pixels densos. Cada pixel armazena um ID de classe e existe uma imagem de máscara por imagem de treinamento. Os rótulos de segmentação de instância no Ultralytics YOLO usam arquivos de texto com coordenadas de polígono, uma linha por instância de objeto.
O valor de pixel
255é usado como o rótulo de ignorar. Esses pixels são ignorados durante o cálculo de perda e métricas, o que é útil para regiões vazias, pixels não rotulados ou classes fora do conjunto de rótulos de treinamento.Sim. Cada máscara semântica deve ter o mesmo nome base de arquivo que a imagem correspondente. O carregador de conjuntos de dados substitui o componente de diretório
imagespormasks_dire procura por arquivos de máscara correspondentes, recorrendo a outras extensões de imagem suportadas (.jpg,.tiff, etc.) se uma máscara.pngnão for encontrada — embora apenas formatos sem perdas sejam recomendados, já que o fallback não impõe isso.Sim, se eles já corresponderem aos seus IDs de classe
names. Se o conjunto de dados de origem usar IDs não contíguos ou incluir rótulos que devem ser ignorados, adicione uma seçãolabel_mappingpara converter os valores de pixel de origem em IDs de treinamento.Sim. Os conjuntos de dados de segmentação de instâncias usam rótulos de polígono Ultralytics YOLO (um
.txtpor imagem com linhas<class-index> <x1> <y1> <x2> <y2> ...), e os mesmos arquivos podem ser reutilizados para a segmentação semântica — basta omitirmasks_dirdo YAML do conjunto de dados e garantir que nenhuma pastamasks/exista ao lado de suas imagens na raiz do conjunto de dados (sua presença por si só aciona o modo de máscara PNG, mesmo semmasks_dirdefinido). O carregador então converte os polígonos em máscaras por imagem em tempo de execução. Para conjuntos de dados multiclasse (N > 1), uma classe extrabackgroundé adicionada, e o modelo é construído com canais de saídaN + 1. Para conjuntos de dados de classe única (N == 1), o treinamento permanece em 1 classe — a máscara mostra sua classe declarada como1e os pixels não cobertos como0.O Ultralytics inclui arquivos YAML de conjuntos de dados prontos para uso para Cityscapes (19 classes de cenas urbanas), o subconjunto leve Cityscapes8 para teste de pipeline e ADE20K (150 classes de parsing de cenas). Cada página documenta a lista exata de classes, etapas de download e um exemplo de treinamento verificado.