Link to this sectionSegmentação Semântica#
A segmentação semântica atribui um rótulo de classe a cada pixel em uma imagem, produzindo um mapa de classes denso que cobre toda a cena. Ao contrário da segmentação de instâncias, que separa objetos individuais, a segmentação semântica agrupa todos os pixels da mesma classe, independentemente de quantos objetos distintos estejam presentes.
A saída de um modelo de segmentação semântica é um único mapa de classes com altura e 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 direção autônoma, imagens médicas e mapeamento de cobertura do solo.
Use task=semantic ou a tarefa yolo semantic da CLI para segmentação semântica. Os arquivos de modelo de segmentação semântica YOLO26 usam o sufixo -sem, como yolo26n-sem.pt.
Link to this sectionModelos#
Modelos de segmentação semântica YOLO26 pré-treinados no conjunto de dados Cityscapes são mostrados abaixo.
Os Modelos baixam automaticamente a partir do release mais recente da Ultralytics no primeiro uso.
| Modelo | tamanho (pixels) | mIoUval | Velocidade RTX3090 PyTorch (ms) | parâmetros (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- Os valores de mIoUval são para modelo único em escala única no conjunto de validação Cityscapes.
Reproduza comyolo semantic val data=cityscapes.yaml device=0 imgsz=2048 - As métricas de Velocidade são calculadas a partir da média das imagens de validação do Cityscapes usando uma instância RTX3090.
Reproduza comyolo 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 combina camadas Conv e BatchNorm. Checkpoints pré-treinados mantêm a arquitetura de treinamento completa e podem apresentar contagens maiores.
Link to this sectionTreinar#
Treine o YOLO26n-sem no conjunto de dados Cityscapes8 por 100 épocas com tamanho de imagem 1024. Para uma lista completa de argumentos disponíveis, consulte a página de Configuração.
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)Veja detalhes completos do modo train na página Treinar.
Link to this sectionFormato do conjunto de dados#
Conjuntos de dados de segmentação semântica usam imagens de máscara de canal único, geralmente 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 de perda. O YAML do conjunto de dados deve especificar os caminhos para as imagens e seus diretórios de máscara correspondentes. Veja o Guia de Conjunto de Dados de Segmentação Semântica para detalhes de formato. Conjuntos de dados suportados incluem Cityscapes e ADE20K.
Link to this sectionValidar#
Valide a precisão do modelo YOLO26n-sem treinado em um conjunto de dados de segmentação semântica. Passe data explicitamente para que a validação use o YAML do conjunto de dados pretendido.
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 accuracyLink to this sectionPrever#
Use um modelo YOLO26n-sem treinado para realizar predições em imagens.
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 countVeja os detalhes completos do modo predict na página Predict.
Link to this sectionSaída de Resultados#
A segmentação semântica YOLO retorna um objeto Results por imagem. Cada resultado armazena um mapa de classes denso para a imagem inteira em vez de uma lista de máscaras de objetos. Pixels com a mesma classe prevista compartilham o mesmo ID de classe, mesmo quando pertencem a objetos separados.
| Atributo | Tipo | Forma | Descrição |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | Mapa de classes denso. |
result.semantic_mask.data | torch.uint8torch.int16torch.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 cada tarefa em todas as tarefas, veja a seção Prever Resultados por Tarefa.
Link to this sectionSegmentação de Instância vs Semântica#
| Aspecto | Segmentação de Instância (task="segment") | Segmentação Semântica (task="semantic") |
|---|---|---|
| Objetivo da predição | Segmentar cada objeto detectado separadamente | Atribuir um ID de classe a cada pixel |
| Campo de saída | result.masks | result.semantic_mask |
| Dados principais | result.masks.data | result.semantic_mask.data |
| Forma | (N,H,W) | (H,W) |
| Valores de pixel | Valores de máscara binária: 0 ou 1 | IDs de classe: 0, 1, 2, ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Objetos da mesma classe | Mantidos como instâncias separadas | Mesclados na mesma região de classe |
| Polígonos | Sim, através de result.masks.xy e result.masks.xyn | Sem saída de polígono por padrão |
| Caixas e confiança | Sim, através de result.boxes | Sem caixas por instância ou pontuações de confiança |
| Uso típico | Contagem, rastreamento, recorte, medição em nível de objeto | Rotulagem densa de cena, área dirigível, cobertura do solo, regiões médicas |
Link to this sectionExportar#
Exporte um modelo YOLO26n-sem para um formato diferente como ONNX, CoreML, etc.
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 do YOLO26 disponíveis estão na tabela abaixo. Você pode exportar para qualquer formato usando o argumento format, i.e., format='onnx' ou format='engine'. Você pode prever ou validar diretamente nos modelos exportados, i.e., yolo predict model=yolo26n-sem.onnx. Exemplos de uso são mostrados para seu modelo após a conclusão da exportação.
| Formato | Argumento format | Modelo | Metadados | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Vê os detalhes completos de export na página de Exportação.
Link to this sectionFAQ#
Link to this sectionComo treino um modelo de segmentação semântica YOLO26 em um conjunto de dados personalizado?#
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:
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)Verifique a página de Configuração para mais argumentos disponíveis.
Link to this sectionQual é a diferença entre segmentação de instância e segmentação semântica?#
A segmentação de instância e a segmentação semântica são tarefas de nível de pixel, mas diferem de uma forma fundamental:
- Segmentação semântica 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.
- Segmentação de instância 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 direção autônoma e mapeamento de cobertura do solo, enquanto a segmentação de instância é preferida quando contar ou rastrear objetos individuais é importante.
Link to this sectionPosso usar dados de segmentação de instância para treinar segmentação semântica?#
Sim. Se seu conjunto de dados usa rótulos de polígono Ultralytics YOLO (um .txt por imagem), omita masks_dir do YAML do conjunto de dados e o carregador converterá polígonos em máscaras semânticas por imagem instantaneamente. Para conjuntos de dados com múltiplas classes (N > 1), uma classe background extra é anexada aos names automaticamente. Para conjuntos de dados de classe única (N == 1), o treinamento permanece em 1 classe — sua classe declarada torna-se 1 na máscara e pixels não cobertos tornam-se 0. Veja o Guia de Conjunto de Dados de Segmentação Semântica para detalhes.
Link to this sectionQuais conjuntos de dados são suportados para segmentação semântica?#
O Ultralytics YOLO26 fornece configurações integradas para vários conjuntos de dados de segmentação semântica:
- Cityscapes: Cenas de rua urbanas com 19 classes, amplamente utilizadas para pesquisa em direção autônoma.
- ADE20K: Um conjunto de dados de análise de cena em larga escala com 150 classes.
Você também pode usar qualquer conjunto de dados personalizado que forneça anotações de máscara PNG, onde os valores dos pixels correspondem aos IDs das classes.
Link to this sectionComo faço para validar um modelo de segmentação semântica YOLO26 pré-treinado?#
Valide um modelo de segmentação semântica YOLO26 pré-treinado com o YAML de conjunto de dados usado para avaliação:
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)Essas etapas fornecerão métricas de validação como a média da Interseção sobre União (mIoU) e precisão de pixel, que são medidas padrão para avaliar o desempenho da segmentação semântica.
Link to this sectionComo posso exportar um modelo de segmentação semântica YOLO26 para o formato ONNX?#
Exporte um modelo de segmentação semântica YOLO26 para o formato ONNX com Python ou comandos CLI:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Export the model to ONNX format
model.export(format="onnx")Para mais detalhes sobre exportação para vários formatos, consulte a página Exportar.