Ultralytics YOLO27:
Get Started

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 distingue 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 dos conjuntos de dados usado 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 compatíveis#

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, usa os rótulos poligonais YOLO.

Formato de máscara PNG#

Os conjuntos de dados de segmentação semântica usam um ficheiro de imagem e um ficheiro de máscara por amostra. A máscara é uma imagem de canal único, geralmente PNG, na qual o valor de cada píxel corresponde ao índice da classe do píxel correspondente na imagem.

  • Os valores de píxel 0, 1, 2, ... representam IDs de classe do mapeamento names do conjunto de dados.
  • O valor de píxel 255 é tratado como rótulo de exclusão e não é incluído no cálculo da perda nem das métricas.
  • Os ficheiros de máscara devem usar o mesmo nome-base que o ficheiro de imagem correspondente, por exemplo, frankfurt_000000_000294.png.
  • Por predefinição, os ficheiros de máscara são procurados como .png; se não forem encontrados, também são aceites outras extensões de imagem suportadas. Usa formatos sem perdas, como .png ou .tiff, pois a compressão com perdas (por exemplo, .jpg) corrompe os valores de píxel dos IDs de classe.

A disposição 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 images do caminho 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ótulo poligonal YOLO#

Se o teu conjunto de dados já tiver rótulos poligonais 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 — não é necessário converter as máscaras para PNG. Consulta o formato de conjunto de dados para segmentação de instâncias para veres a estrutura ao nível das linhas.

Este método é selecionado automaticamente quando o YAML do conjunto de dados não inclui 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/ que tenha sobrado; caso contrário, o carregador volta 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 sobrepostas.
  • Várias classes (N > 1 em names): é acrescentada uma classe background adicional após as classes declaradas, para os píxeis não cobertos por nenhum polígono. O modelo é criado com N + 1 canais de saída e o último canal corresponde ao fundo.
  • Classe única (N == 1 em names): continua a ser treinado como uma classe. A máscara é binária: a classe declarada é representada por 1 e os píxeis não cobertos por nenhum polígono por 0. Não é adicionada nenhuma classe de fundo extra a names.
  • Os píxeis adicionados pelo preenchimento durante o aumento de dados (por exemplo, um recorte aleatório) continuam a usar 255 como rótulo de exclusão.

Usa este método quando os teus dados já estiverem anotados como polígonos de instâncias e quiseres obter 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 principais campos são:

ChaveDescrição
pathDiretório raiz do conjunto de dados.
trainCaminho para as imagens de treino relativo a path ou um caminho absoluto.
valCaminho para as imagens de validação relativo a path ou um caminho absoluto.
testCaminho opcional para as imagens de teste.
masks_dirNome do diretório usado 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 poligonais YOLO.
namesMapeamento de IDs de classe para nomes de classe.
label_mappingMapeamento opcional de IDs do conjunto de dados de origem para IDs de treino 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

Usa 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.

Uso#

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

Exemplo
from ultralytics import YOLO

# Carrega um modelo de segmentação semântica pré-treinado
model = YOLO("yolo26n-sem.pt")

# Treina com o conjunto de dados de segmentação semântica Cityscapes8
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Conjuntos de dados compatíveis#

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 benchmarks dos modelos pré-treinados.

  • Cityscapes: um conjunto de dados de segmentação semântica de cenas urbanas de rua, com 19 classes de treinamento.
  • Cityscapes8: um subconjunto de Cityscapes com 8 imagens para testes rápidos e verificações de CI.
  • ADE20K: um conjunto de dados para interpretação de cenas, com 150 classes semânticas.

Adicionar o teu próprio conjunto de dados#

Opção A — Máscaras PNG#

  1. Guarda as imagens em pastas de divisões, como images/train e images/val.
  2. Guarda uma máscara de canal único por imagem nas pastas de máscaras correspondentes, como masks/train e masks/val.
  3. Certifica-te de que os valores dos píxeis das máscaras são IDs de classe. Usa 255 para os píxeis que devem ser ignorados.
  4. Cria um YAML do conjunto de dados com path, train, val, masks_dir e names.
  5. Adiciona label_mapping apenas quando for necessário converter os IDs das máscaras 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: building

Opção B — Rótulos de polígonos#

  1. Organiza as imagens e os ficheiros de polígonos .txt exatamente como na segmentação de instâncias.
  2. Cria um YAML do conjunto de dados com path, train, val e names — omite masks_dir.
  3. Certifica-te de que não existe uma pasta masks/ junto das imagens na raiz do conjunto de dados — só a sua presença ativa o modo de máscara PNG no carregador, mesmo sem masks_dir no YAML.
  4. Não adiciones uma entrada "background" a names. Para conjuntos de dados com várias classes, o carregador acrescenta uma automaticamente; para conjuntos de dados com uma só classe, o treino mantém-se em 1 classe — a classe declarada passa a ser 1 na máscara e os píxeis não cobertos passam a 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

A Ultralytics Platform oferece uma ferramenta de anotação de polígonos para a tarefa semântica, além da anotação inteligente assistida por SAM — faz anotações diretamente no navegador e exporta ou treina com o 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 usam 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 de ignorar. Estes píxeis são ignorados no cálculo da perda e das métricas, o que é útil para regiões vazias, píxeis sem rótulo ou classes que não fazem parte do conjunto de rótulos de treino.

  • Sim. Cada máscara semântica deve ter o mesmo nome-base de ficheiro que a imagem correspondente. O carregador do conjunto de dados substitui o componente de diretório images por masks_dir e 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 se recomendem apenas formatos sem perdas, já que esta alternativa não impõe essa condição.

  • Sim, se já corresponderem aos IDs de classe names. Se o conjunto de dados de origem usar IDs não contíguos ou incluir rótulos que devam ser ignorados, adiciona uma secção label_mapping para converter os valores dos píxeis de origem em IDs de treino.

  • Sim. Os conjuntos de dados de segmentação de instâncias usam rótulos de polígonos do Ultralytics YOLO (um .txt por imagem, com linhas <class-index> <x1> <y1> <x2> <y2> ...), e os mesmos ficheiros podem ser reutilizados para a segmentação semântica — basta omitir masks_dir do YAML do conjunto de dados e garantir que não existe uma pasta masks/ junto das imagens na raiz do conjunto de dados (só a sua presença ativa o modo de máscara PNG, mesmo sem masks_dir definido). Em seguida, o carregador converte os polígonos em máscaras por imagem durante a execução. Para conjuntos de dados com várias classes (N > 1), é acrescentada uma classe background adicional, e o modelo é criado com canais de saída N + 1. Para conjuntos de dados com uma só classe (N == 1), o treino mantém-se em 1 classe — a máscara mostra a classe declarada como 1 e os píxeis não cobertos como 0.

  • 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 parsing de cenas). Cada página documenta a lista exata de classes, os passos de transferência e um exemplo de treino verificado.

Comentários