Meet YOLO26: next-gen vision AI.

Link to this sectionVisão geral dos conjuntos de dados de segmentação semântica#

A segmentação semântica atribui um rótulo de classe a cada pixel em uma imagem. Ao contrário da segmentação de instância, a segmentação semântica não separa objetos individuais da mesma classe. O objetivo do 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.

Link to this sectionFormatos de dataset suportados#

Dois formatos de rótulo são suportados. O carregador de conjunto de dados seleciona o caminho com base na definição ou não de uma chave masks_dir no YAML do conjunto de dados.

Link to this sectionFormato 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 mapeamento names do 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 que o arquivo de imagem correspondente, por exemplo frankfurt_000000_000294.png.
  • As máscaras são resolvidas como .png por padrão; se estiverem ausentes, outras extensões de imagem suportadas também são aceitas. Use formatos sem perdas, como .png ou .tiff, já que a compressão com perdas (ex: .jpg) corrompe os valores de pixel de ID 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.

Link to this sectionFormato de rótulo de polígono YOLO#

Se o seu conjunto de dados já possui rótulos de polígono do 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 formato de conjunto de dados de segmentação de instância para o layout em nível de linha.

Este caminho é selecionado automaticamente quando o YAML do conjunto de dados omite masks_dir. 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.
  • Multi-classe (N > 1 em names): uma classe background adicional é anexada após as suas classes declaradas para pixels não cobertos por qualquer polígono. O modelo é construído com N + 1 canais de saída e o último canal é o background.
  • Classe única (N == 1 em names): ainda treinado como 1 classe. A máscara é binária, com sua classe declarada mostrada como 1 e pixels não cobertos por qualquer polígono como 0. Nenhuma classe de background extra é adicionada a names.
  • Pixels adicionados por preenchimento de aumento (ex: recorte aleatório) ainda usam 255 como 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.

Link to this sectionFormato YAML de conjunto de dados#

Conjuntos de dados de segmentação semântica são configurados com arquivos YAML. Os campos principais são:

ChaveDescrição
pathDiretório raiz do conjunto de dados.
trainCaminho da imagem de treinamento relativo a path, ou um caminho absoluto.
valCaminho da imagem de validação relativo a path, ou um caminho absoluto.
testCaminho opcional de imagem de teste.
masks_dirNome do diretório usado para máscaras semânticas. Omita esta chave para alternar para o formato de rótulo de polígono YOLO.
namesMapeamento de ID de classe para nome de classe.
label_mappingMapeamento opcional de IDs do conjunto de dados de origem para IDs de treinamento ou 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

Use label_mapping quando os IDs da máscara de origem não corresponderem aos IDs de classe de treinamento contíguos. Cityscapes e ADE20K incluem mapeamentos que convertem IDs de rótulo originais em IDs de treino de segmentação semântica do YOLO e ignoram rótulos não utilizados.

Link to this sectionUso#

Treine um modelo de segmentação semântica YOLO26 com Python ou CLI:

Exemplo
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)

Link to this sectionDatasets suportados#

O Ultralytics fornece arquivos YAML de conjunto de dados de segmentação semântica para estes conjuntos de dados:

  • Cityscapes: Conjunto de dados de segmentação semântica de cena urbana de rua com 19 classes de treino.
  • Cityscapes8: Um subconjunto de Cityscapes de 8 imagens para testes rápidos e verificações de CI.
  • ADE20K: Conjunto de dados de análise de cena com 150 classes semânticas.

Link to this sectionAdicionando seu próprio conjunto de dados#

Link to this sectionOpção A — Máscaras PNG#

  1. Salve suas imagens em pastas de divisão como images/train e images/val.
  2. Salve uma máscara de canal único por imagem nas pastas de máscara espelhadas, como masks/train e masks/val.
  3. Certifique-se de que os valores de pixel da máscara sejam IDs de classe. Use 255 para pixels que devem ser ignorados.
  4. Crie um YAML de conjunto de dados com path, train, val, masks_dir e names.
  5. Adicione label_mapping apenas quando seus IDs de 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: building

Link to this sectionOpção B — Rótulos de polígono#

  1. Organize as imagens e arquivos de polígono .txt exatamente como para segmentação de instância.
  2. Crie um YAML de conjunto de dados com path, train, val e namesomita masks_dir.
  3. Não adicione uma entrada "background" em names. Para conjuntos de dados multi-classe, o carregador anexa uma automaticamente; para conjuntos de dados de classe única, o treinamento permanece em 1 classe — sua classe declarada torna-se 1 na máscara e pixels descobertos tornam-se 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Link to this sectionFAQ#

Link to this sectionQual a diferença entre máscaras de segmentação semântica e rótulos de segmentação de instância?#

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.

Link to this sectionQual valor de pixel é ignorado durante o treinamento?#

O valor de pixel 255 é usado como rótulo de ignorar. Esses pixels são pulados durante o cálculo de perda e métrica, o que é útil para regiões vazias, pixels não rotulados ou classes fora do conjunto de rótulos de treinamento.

Link to this sectionOs nomes dos arquivos de máscara precisam corresponder aos nomes dos arquivos de imagem?#

Sim. Cada máscara semântica deve ter o mesmo nome base do arquivo que a imagem correspondente. O carregador de conjunto de dados substitui o componente de diretório images por masks_dir e procura arquivos de máscara correspondentes.

Link to this sectionPosso usar IDs de rótulo de conjunto de dados original diretamente?#

Sim, se eles já corresponderem aos seus IDs de classe em 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ção label_mapping para converter os valores de pixel de origem em IDs de treinamento.

Link to this sectionPosso usar meu conjunto de dados de segmentação de instância para treinar segmentação semântica?#

Sim. Conjuntos de dados de segmentação de instância usam rótulos de polígono do Ultralytics YOLO (um .txt por imagem com linhas <class-index> <x1> <y1> <x2> <y2> ...), e os mesmos arquivos podem ser reutilizados para segmentação semântica — basta omitir masks_dir do YAML do conjunto de dados. O carregador converte polígonos em máscaras por imagem em tempo real. Para conjuntos de dados multi-classe (N > 1), uma classe background adicional é anexada e o modelo é construído com N + 1 canais de saída. Para conjuntos de dados de classe única (N == 1), o treinamento permanece em 1 classe — a máscara mostra sua classe declarada como 1 e pixels descobertos como 0.

Comentários