YOLO Vision 2026:

Segmentação Semântica#

Semantic segmentation examples

Semantic segmentation atribui um rótulo de classe a cada pixel em uma imagem, produzindo um mapa de classe denso que cobre toda a cena. Ao contrário da instance segmentation, que separa objetos individuais, a segmentação semântica agrupa todos os pixels da mesma classe independentemente de quantos objetos distintos estejam presentes.



Watch: Semantic Segmentation with Ultralytics YOLO26 | Quickstart Tutorial

A saída de um modelo de segmentação semântica é um mapa de classes de altura por largura, onde cada valor de pixel corresponde a um ID de classe previsto. Isso torna a segmentação semântica ideal para tarefas de análise de cena, como condução autônoma, imagens médicas e mapeamento de cobertura da terra.

Dica

Usa a tarefa CLI task=semantic ou yolo semantic para segmentação semântica. Os arquivos de modelo de segmentação semântica YOLO26 usam o sufixo -sem, como yolo26n-sem.pt.

Modelos#

Os modelos de segmentação semântica YOLO26 pré-treinados no conjunto de dados Cityscapes são mostrados abaixo.

Os Modelos são baixados automaticamente do lançamento mais recente do Ultralytics no primeiro uso.

Modelotamanho
(pixels)
mIoUvalVelocidade
RTX3090 PyTorch
(ms)
params
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.7
  • Os valores de mIoUval são para modelo único e escala única no conjunto de validação Cityscapes.
    Reproduz com yolo semantic val data=cityscapes.yaml device=0 imgsz=2048
  • As métricas de Speed são calculadas na média sobre imagens de validação do Cityscapes usando uma instância RTX3090.
    Reproduz com yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048
  • Os valores de Params e FLOPs são para o modelo fundido após model.fuse(), que mescla as camadas Conv e BatchNorm. Os checkpoints pré-treinados retêm a arquitetura de treinamento completa e podem mostrar contagens mais altas.

Os modelos de segmentação semântica YOLO26 pré-treinados no conjunto de dados ADE20K são mostrados abaixo.

Os Modelos são baixados automaticamente do lançamento mais recente do Ultralytics no primeiro uso.

Modelotamanho
(pixels)
mIoUvalVelocidade
RTX3090 PyTorch
(ms)
params
(M)
FLOPs
(B)
YOLO26n-sem-ade20k64038.83.9 ± 0.21.64.4
YOLO26s-sem-ade20k64045.64.2 ± 0.36.517.4
YOLO26m-sem-ade20k64047.44.7 ± 0.314.359.5
YOLO26l-sem-ade20k64049.78.3 ± 0.217.975.0
YOLO26x-sem-ade20k64051.59.9 ± 0.340.2168.1
  • Os valores de mIoUval são para modelo único e escala única no conjunto de validação ADE20K.
    Reproduz com yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640, substituindo yolo26n-sem-ade20k.pt pelo checkpoint yolo26*-sem-ade20k.pt desejado.
  • As métricas de Speed são calculadas na média sobre imagens de validação do ADE20K usando uma instância RTX3090.
    Reproduz com yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640, substituindo yolo26n-sem-ade20k.pt pelo checkpoint yolo26*-sem-ade20k.pt desejado.
  • Os valores de Params e FLOPs são para o modelo fundido após model.fuse(), que mescla as camadas Conv e BatchNorm. Os checkpoints pré-treinados retêm a arquitetura de treinamento completa e podem mostrar contagens mais altas.

Treinar#

Treina o YOLO26n-sem no conjunto de dados Cityscapes8 por 100 epochs em um tamanho de imagem de 1024. Para ver uma lista completa de argumentos disponíveis, consulta a página Configuration.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.yaml")  # build a new model from YAML
model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Vê todos os detalhes do modo train na página Train. Os modelos de segmentação semântica também podem ser treinados com Ultralytics Platform cloud training.

Formato do conjunto de dados#

Os conjuntos de dados de segmentação semântica utilizam imagens de máscara de canal único, tipicamente PNG, onde cada valor de pixel representa um ID de classe. Pixels com valor 255 são tratados como "ignorar" e excluídos do cálculo da perda. O YAML do conjunto de dados deve especificar os caminhos para as imagens e seus diretórios de máscara correspondentes. Consulta o Semantic Segmentation Dataset Guide para obter detalhes sobre o formato. Os conjuntos de dados suportados incluem Cityscapes e ADE20K. Podes gerir e rotular conjuntos de dados semânticos com Ultralytics Platform annotation.

Validar#

Valida a accuracy do modelo YOLO26n-sem treinado em um conjunto de dados de segmentação semântica. Passa data explicitamente para que a validação utilize o YAML do conjunto de dados pretendido.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou  # mean Intersection over Union
metrics.pixel_accuracy  # overall pixel accuracy

Prever#

Use um modelo YOLO26n-sem treinado para realizar predições em imagens.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    semantic_mask = result.semantic_mask.data  # class map, shape (H,W), integer dtype selected by class count

Consulta todos os detalhes do modo predict na página Prever.

Saída de Resultados#

A segmentação semântica YOLO retorna um objeto Results por imagem. Cada resultado armazena um mapa de classe denso para a imagem completa em vez de uma lista de máscaras de objetos. Pixels com a mesma classe predita compartilham o mesmo ID de classe, mesmo quando pertencem a objetos separados.

AtributoTipoFormaDescrição
result.semantic_maskSemanticMask(H,W)Mapa de classes denso.
result.semantic_mask.datatorch.uint8
torch.int16
torch.int32
(H,W)IDs de classe; dtype selecionado pela contagem de classes.
result.masks--Sem máscaras de instância.
result.boxes--Sem caixas/confianças de instância.
result.masks.xy--Sem polígonos padrão.

Para campos de Results específicos de tarefas em cada tarefa, consulta a seção Resultados de Previsão por Tarefa.

Qualidade do contorno da máscara

A segmentação semântica prediz um mapa de classe denso e, em seguida, redimensiona esse mapa de volta para o formato da imagem para visualização e uso posterior. Estruturas muito finas, como marcações de faixa, linhas de quadra, postes ou fios, podem, portanto, parecer escalonadas quando a inferência é executada a um imgsz muito menor do que a resolução original da imagem. Se as bordas parecerem serrilhadas, testa novamente primeiro o modelo nativo PyTorch .pt com um imgsz maior, como 1024, 1280 ou o valor prático mais próximo do tamanho da imagem de origem. Usa modelos exportados apenas após confirmar que a saída de .pt é aceitável, uma vez que entradas de baixa resolução não conseguem recuperar detalhes finos que não estavam presentes no mapa de classe predito.

Segmentação de Instância vs. Semântica#

AspectoInstance Segmentation (task="segment")Semantic Segmentation (task="semantic")
Objetivo da prediçãoSegmentar cada objeto detectado separadamenteAtribuir um ID de classe a cada pixel
Campo de saídaresult.masksresult.semantic_mask
Dados principaisresult.masks.dataresult.semantic_mask.data
Forma(N,H,W)(H,W)
Valores de pixelValores de máscara binária: 0 ou 1IDs de classe: 0, 1, 2, ...
Dtypetorch.uint8torch.uint8
torch.int16
torch.int32
Objetos da mesma classeMantidos como instâncias separadasMesclados na mesma região de classe
PolígonosSim, através de result.masks.xy e result.masks.xynSem saída de polígono por padrão
Caixas e confiançaSim, através de result.boxesSem caixas por instância ou pontuações de confiança
Uso típicoContagem, rastreamento, recorte, medição em nível de objetoRotulagem densa de cena, área dirigível, cobertura da terra, regiões médicas

Exportar#

Exporte um modelo YOLO26n-sem para um formato diferente como ONNX, CoreML, etc.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Export the model
model.export(format="onnx")

Os formatos de exportação de segmentação semântica YOLO26 disponíveis encontram-se na tabela abaixo. Podes exportar para qualquer formato usando o argumento format, ou seja, format='onnx' ou format='engine'. Podes prever ou validar diretamente em modelos exportados, ou seja, yolo predict model=yolo26n-sem.onnx. Os exemplos de uso são mostrados para o teu modelo após a conclusão da exportação.

FormatoArgumento formatModeloMetadadosArgumentos
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-sem_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-sem_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-sem.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-sem_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-sem_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms

Consulta todos os detalhes de export na página Exportar.

FAQ#

  • Para treinar um modelo de segmentação semântica YOLO26 em um conjunto de dados personalizado, você precisa preparar imagens de máscara PNG onde cada valor de pixel representa um ID de classe (0, 1, 2, ...) e pixels com valor 255 são ignorados durante o treinamento. Crie um arquivo YAML de conjunto de dados apontando para seus diretórios de imagens e máscaras, então treine o modelo:

    Exemplo
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26 semantic segmentation model
    model = YOLO("yolo26n-sem.pt")
    
    # Train the model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)

    Consulta a página de Configuração para ver mais argumentos disponíveis.

  • Segmentação de instância e segmentação semântica são tarefas de nível de pixel, mas diferem de forma fundamental:

    • Semantic segmentation atribui um rótulo de classe a cada pixel, mas não distingue entre objetos individuais da mesma classe. Por exemplo, todos os carros em uma cena compartilham o mesmo rótulo de classe.
    • Instance segmentation identifica cada objeto individual separadamente, produzindo máscaras distintas para cada objeto, mesmo que pertençam à mesma classe.

    A segmentação semântica é mais adequada para tarefas de compreensão de cena, como condução autônoma e mapeamento de cobertura da terra, enquanto a segmentação de instância é preferida quando contar ou rastrear objetos individuais é importante.

  • Sim. Se o teu conjunto de dados usa rótulos de polígono Ultralytics YOLO (um .txt por imagem), omite masks_dir do YAML do conjunto de dados e certifica-te de que nenhuma pasta masks/ existe junto às tuas imagens na raiz do conjunto de dados (a sua simples presença aciona o modo de máscara PNG mesmo sem o masks_dir definido). O carregador converte então os polígonos em máscaras semânticas por imagem em tempo de execução. Para conjuntos de dados de várias classes (N > 1), uma classe extra background é adicionada automaticamente a names. Para conjuntos de dados de classe única (N == 1), o treinamento permanece em 1 classe — a tua classe declarada torna-se 1 na máscara e os pixels não cobertos tornam-se 0. Consulta o Semantic Segmentation Dataset Guide para obter detalhes.

  • O Ultralytics YOLO26 fornece configurações integradas para vários conjuntos de dados de segmentação semântica:

    • Cityscapes: Cenas de ruas urbanas com 19 classes, amplamente utilizadas para pesquisa em condução autônoma.
    • ADE20K: Um conjunto de dados de parsing de cenas em grande escala com 150 classes.

    Você também pode usar qualquer conjunto de dados personalizado que forneça anotações de máscara PNG, onde valores de pixel correspondem a IDs de classe.

  • Valide um modelo de segmentação semântica YOLO26 pré-treinado com o YAML do conjunto de dados usado para avaliação:

    Exemplo
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-sem.pt")
    
    # Validate the model
    metrics = model.val(data="cityscapes.yaml")
    print("Mean IoU:", metrics.miou)
    print("Pixel Accuracy:", metrics.pixel_accuracy)

    Esses passos fornecerão métricas de validação como mIoU (mean Intersection over Union) e precisão de pixel, que são medidas padrão para avaliar o desempenho da segmentação semântica.

  • Exporte um modelo de segmentação semântica YOLO26 para o formato ONNX com Python ou comandos CLI:

    Exemplo
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-sem.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")

    Para obter mais detalhes sobre a exportação para vários formatos, consulta a página Exportar.

Comentários