Ultralytics YOLO27:
Get Started

Segmentação de instâncias com Ultralytics YOLO#

Ultralytics YOLO instance segmentation examples

A segmentação de instâncias vai além da deteção de objetos: consiste em identificar objetos individuais numa imagem e segmentá-los do restante da imagem.

O resultado de um modelo de segmentação de instâncias é um conjunto de máscaras ou contornos que delineiam cada objeto na imagem, juntamente com rótulos de classe e pontuações de confiança para cada objeto. A segmentação de instâncias é útil quando precisas de saber não só onde estão os objetos numa imagem, mas também qual é a sua forma exata.



Assista: Execute a segmentação com um modelo Ultralytics YOLO pré-treinado em Python.
Dica

Os modelos YOLO26 Segment usam o sufixo -seg, por exemplo, yolo26n-seg.pt, e são pré-treinados no COCO.

Modelos#

Os modelos YOLO26 Segment pré-treinados no conjunto de dados COCO são apresentados abaixo.

Os modelos são transferidos automaticamente da versão mais recente do Ultralytics na primeira utilização.

Modelotamanho
(pixels)
mAPcaixa
50-95(e2e)
mAPmáscara
50-95(e2e)
Velocidade
CPU ONNX
(ms)
Velocidade
T4 TensorRT10
(ms)
parâmetros
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.3
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.5
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.7
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0140.1
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8314.0
  • Os valores mAPval correspondem a um único modelo e escala no conjunto de dados COCO val2017.
    Reproduz com yolo segment val data=coco.yaml device=0 nms=False
  • Velocidade média nas imagens de COCO val com ONNX em CPU e TensorRT10 numa GPU NVIDIA T4.
    Reproduz os resultados com yolo segment val data=coco.yaml batch=1 device=0|cpu nms=False
  • Os valores de Params e FLOPs referem-se a modelos fundidos após a fusão de Conv/BatchNorm e a remoção do ramo de deteção não utilizado. Os pontos de controlo pré-treinados mantêm a arquitetura de treino completa e podem apresentar contagens superiores.

Estes checkpoints segmentam as 80 classes do COCO. Para segmentar categorias fora dessa lista sem voltar a treinar, consulta o YOLOE, que recebe as classes como um prompt de texto, um exemplo visual ou um vocabulário integrado.

Consulta a prévia não lançada do YOLO27 para ver resultados preliminares de caixas e máscaras no COCO.

Treinar#

Treina YOLO26n-seg no conjunto de dados COCO8-seg durante 100 épocas, com um tamanho de imagem de 640. Para ver a lista completa de argumentos disponíveis, consulta a página de Configuração.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-seg.yaml")  # crie um novo modelo a partir de YAML
model = YOLO("yolo26n-seg.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # crie a partir de YAML e transfira os pesos

# Treinar o modelo
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Consulta a página Treino para ver todos os detalhes do modo train. Também podes treinar modelos de segmentação com o treino na nuvem da Ultralytics Platform.

Formato do conjunto de dados#

Encontras informações detalhadas sobre o formato de conjunto de dados de segmentação YOLO no Guia de conjuntos de dados. Para converter um conjunto de dados COCO JSON existente para o formato YOLO, usa a função integrada convert_coco com use_segments=True, conforme descrito no guia de conversão de COCO para YOLO. Também podes criar máscaras de segmentação com a anotação da Ultralytics Platform, usando ferramentas de polígonos e anotação inteligente com tecnologia SAM.

Validar#

Valida a precisão do modelo YOLO26n-seg treinado. Não precisas de argumentos, pois model mantém os dados de treino data e os argumentos como atributos do modelo: path/to/best.pt do exemplo de Treino valida o modelo no COCO8-seg. Os pesos oficiais registam um caminho para o conjunto de dados de treino que não existe na tua máquina, por isso recorrem ao valor predefinido da tarefa coco8-seg.yaml e apresentam um aviso. Passa data para validar noutro conjunto de dados.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-seg.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Valida o modelo
metrics = model.val()  # não são necessários argumentos; o conjunto de dados e as definições são guardados
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # uma lista que contém mAP50-95(B) para cada categoria
metrics.box.image_metrics  # dicionário de métricas por imagem para det, com precisão, revocação, F1, TP, FP e FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # uma lista que contém mAP50-95(M) para cada categoria
metrics.seg.image_metrics  # dicionário de métricas por imagem para seg, com precisão, revocação, F1, TP, FP e FN

Prever#

Usa um modelo YOLO26n-seg treinado para fazer predições em imagens.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-seg.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Faz previsões com o modelo
results = model("https://ultralytics.com/images/bus.jpg")  # faz uma previsão numa imagem

# Acede aos resultados
for result in results:
    xy = result.masks.xy  # polígonos de máscara em coordenadas de píxeis
    xyn = result.masks.xyn  # polígonos de máscara normalizados
    masks = result.masks.data  # máscaras binárias, forma (N,H,W), dtype torch.uint8

Consulta os detalhes completos do modo predict na página Previsão.

Saída dos resultados#

A segmentação de instâncias do YOLO devolve um objeto Results por imagem. Cada resultado armazena predições ao nível do objeto, em que cada instância detetada tem a sua própria máscara binária, classe, confiança e caixa.

AtributoTipoFormatoDescrição
result.masksMasks(N)Máscaras de instância.
result.masks.datatorch.uint8(N,H,W)Máscaras binárias, com valores 0 ou 1.
result.masks.xynp.float32list[(P,2)]Polígonos em pixels.
result.masks.xynnp.float32list[(P,2)]Polígonos normalizados.
result.boxesBoxes(N)Caixas/classes/confianças de instância.
result.boxes.clstorch.float32(N,)IDs de classe; converta para int para obter os nomes.

Para ver os campos Results específicos de cada tarefa, consulta a secção Resultados da previsão por tarefa.

Segmentação de instâncias vs. segmentação semântica#

A segmentação de instâncias segmenta ao nível do objeto: dois carros produzem duas máscaras, duas caixas e duas pontuações de confiança. A segmentação semântica classifica ao nível do píxel: esses mesmos carros tornam-se píxeis com o mesmo ID de classe num único mapa de classes do tamanho da imagem, sem caixas, pontuações de confiança ou lista de polígonos predefinida por objeto. Consulta a comparação campo a campo na página de segmentação semântica.

Exportar#

Exporta um modelo YOLO26n-seg para outro formato, como ONNX, CoreML, etc.

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-seg.pt")  # carrega um modelo oficial
model = YOLO("path/to/best.pt")  # carregar um modelo personalizado

# Exporta o modelo
model.export(format="onnx")

Os formatos de exportação disponíveis para YOLO26-seg estão na tabela abaixo. Podes exportar para qualquer formato usando o argumento format, por exemplo, format='onnx' ou format='engine'. Podes fazer predições ou validações diretamente nos modelos exportados, por exemplo, yolo predict model=yolo26n-seg.onnx. Os exemplos de utilização do teu modelo são apresentados após a conclusão da exportação.

Nota

O CoreML suporta NMS incorporado (nms=True) para deteção, segmentação de instâncias e pose com formas estáticas. As exportações de segmentação predefinidas (nms=None) deixam o NMS a cargo do consumidor.

FormatoArgumento formatModeloMetadadosArgumentos
PyTorch-yolo26n-seg.pt✅-
TorchScripttorchscriptyolo26n-seg.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-seg.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-seg_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-seg.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-seg_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-seg_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-seg_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-seg_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-seg_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-seg_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None usa por predefinição saídas brutas para NMS externo. Define nms=False para selecionar uma cabeça sem NMS disponível; os formatos não suportados recorrem ao respetivo caminho de saída nativo. As entradas nms acima identificam os formatos que podem incorporar NMS com nms=True.

Consulte os detalhes completos de export na página Exportação.

Perguntas frequentes#

  • Para treinar um modelo de segmentação YOLO26 num conjunto de dados personalizado, primeiro tens de preparar o conjunto de dados no formato de segmentação YOLO. Podes usar o utilitário integrado convert_coco para converter conjuntos de dados COCO JSON. Quando o conjunto de dados estiver pronto, podes treinar o modelo com comandos Python ou CLI:

    Exemplo
    from ultralytics import YOLO
    
    # Carrega um modelo YOLO26 Segment pré-treinado
    model = YOLO("yolo26n-seg.pt")
    
    # Treinar o modelo
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

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

  • A deteção de objetos identifica e localiza objetos numa imagem, desenhando caixas delimitadoras à sua volta; já a segmentação de instâncias não só identifica as caixas delimitadoras, como também delineia a forma exata de cada objeto. Os modelos de segmentação de instâncias YOLO26 fornecem máscaras ou contornos que delineiam cada objeto detetado, o que é especialmente útil em tarefas nas quais é importante conhecer a forma precisa dos objetos, como imagiologia médica ou condução autónoma.

  • O Ultralytics YOLO26 é um modelo de última geração, reconhecido pela sua elevada precisão e desempenho em tempo real, o que o torna ideal para tarefas de segmentação de instâncias. Os modelos YOLO26 Segment são pré-treinados no conjunto de dados COCO, garantindo um desempenho robusto com vários tipos de objetos. Além disso, o YOLO suporta funcionalidades de treino, validação, predição e exportação com integração perfeita, o que o torna muito versátil para aplicações de investigação e industriais.

  • É simples carregar e validar um modelo de segmentação YOLO pré-treinado. Eis como podes fazê-lo com Python e CLI:

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo pré-treinado
    model = YOLO("yolo26n-seg.pt")
    
    # Valida o modelo
    metrics = model.val()
    print("Mean Average Precision for boxes:", metrics.box.map)
    print("Mean Average Precision for masks:", metrics.seg.map)

    Estes passos fornecem métricas de validação, como Precisão média média (mAP), essenciais para avaliar o desempenho do modelo.

  • É simples exportar um modelo de segmentação YOLO para o formato ONNX, usando comandos Python ou CLI:

    Exemplo
    from ultralytics import YOLO
    
    # Carregar um modelo pré-treinado
    model = YOLO("yolo26n-seg.pt")
    
    # Exporta o modelo para o formato ONNX
    model.export(format="onnx")

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

Comentários