Instance Segmentation
A segmentação de instâncias delineia cada objeto numa imagem com a sua própria máscara de píxeis, para que objetos da mesma classe que se tocam continuem separados. Modelos, métricas e código.
A segmentação de instâncias é uma tarefa de visão computacional que encontra cada objeto em uma imagem, atribui uma classe a ele e o contorna com sua própria máscara em nível de pixel. Ela combina o raciocínio por objeto da detecção de objetos com a precisão em nível de pixel da segmentação de imagens: enquanto um detector desenha uma caixa delimitadora retangular que também contém o fundo, um modelo de segmentação de instâncias marca exatamente quais pixels pertencem a cada objeto. Duas pessoas lado a lado geram duas máscaras separadas com dois rótulos, possibilitando contar, medir e recortar objetos individuais.
Segmentação de instâncias vs. semântica e panóptica#
A segmentação de instâncias é uma das três tarefas de segmentação que diferem no significado de cada rótulo:
- Segmentação semântica: Atribui uma classe a cada pixel e reúne todos os objetos dessa classe em uma única região, então três carros estacionados formam uma única área de "carro". Também rotula regiões de fundo, como estrada e céu.
- Segmentação de instâncias: Atribui uma máscara e um ID próprios a cada objeto contável, ou "coisa", então os três carros se tornam carro 1, carro 2 e carro 3. Os pixels que não pertencem a nenhum objeto detectado permanecem sem rótulo.
- Segmentação panóptica: Atribui uma classe a cada pixel e também um ID de instância aos objetos contáveis, unindo as duas perspectivas em uma única saída.
Modelos que aceitam prompts, como o Segment Anything Model (SAM) da Meta, realizam segmentação interativa: eles retornam uma máscara para o objeto indicado por um clique, uma caixa ou um prompt de texto, sem uma lista fixa de classes.
Como funcionam os modelos de segmentação de instâncias#
Modelos de dois estágios primeiro detectam e depois segmentam. O Mask R-CNN, projeto de referência consolidado desde 2017, propõe regiões candidatas, classifica e refina cada caixa e prevê uma pequena máscara de 28×28 dentro de cada caixa usando uma ramificação de máscara separada.
Modelos de estágio único preveem caixas e máscaras em uma única passagem, o que é adequado para inferência em tempo real. O YOLACT introduziu o projeto de protótipos também usado pelos modelos de segmentação YOLO: a rede prevê um conjunto compartilhado de máscaras de protótipo para toda a imagem, além de um vetor curto de coeficientes de máscara para cada objeto detectado. A máscara de cada objeto é a soma dos protótipos ponderados pelos coeficientes, recortada para caber na caixa do objeto e submetida a um limiar para se tornar uma máscara binária.
Modelos baseados em Transformer, como o Mask2Former, seguem uma terceira abordagem: eles preveem um conjunto fixo de consultas de máscara e usam a mesma arquitetura para segmentação semântica, de instâncias e panóptica.
Máscaras, polígonos e métricas#
Os rótulos de treinamento geralmente são polígonos traçados ao redor de cada objeto, armazenados em formatos como JSON do COCO ou arquivos de texto YOLO, com um ID de classe e uma lista de vértices normalizados por objeto. Na inferência, os modelos produzem cada instância como uma máscara binária, que pode ser convertida novamente em um contorno poligonal para armazenamento ou desenho. A precisão é informada como precisão média (mAP) de máscara, calculada como o mAP de caixas, mas com a interseção sobre união (IoU) medida entre as máscaras previstas e as máscaras de referência. Traçar um polígono ao redor de cada objeto leva muito mais tempo do que desenhar uma caixa, por isso modelos que aceitam prompts, como o SAM, são amplamente usados para transformar um único clique em um rascunho de máscara, que depois é corrigido por um anotador.
Os modelos de segmentação do Ultralytics YOLO26, identificados pelo sufixo -seg, usam o projeto de protótipos com 32 protótipos e 32 coeficientes por detecção e retornam cada instância com sua classe, caixa, máscara e contorno poligonal:
from ultralytics import YOLO
# Load a YOLO26 instance segmentation model pretrained on the 80 COCO classes
model = YOLO("yolo26n-seg.pt")
# Segment every object instance in the image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Each instance has its own class and mask outline, even when classes repeat
for class_id, polygon in zip(result.boxes.cls.int().tolist(), result.masks.xy):
print(f"{result.names[class_id]}: outline with {len(polygon)} points")
result.save(filename="instance_segmentation.jpg")Cada pessoa detectada aparece em uma linha separada com seu próprio contorno, e a imagem salva colore a máscara de cada instância separadamente. Para rotular seus próprios dados e treinar um modelo, veja como treinar o YOLO26 de forma personalizada para segmentação de instâncias ou a lição da Ultralytics Academy Rotular e treinar a segmentação de instâncias.
Aplicações no mundo real#
As máscaras de instância são importantes sempre que a forma exata ou a contagem de objetos individuais orienta uma decisão:
- Coleta robótica: Um braço robótico que pega peças em um recipiente desorganizado precisa do contorno exato de cada peça para escolher um ponto de preensão afastado das peças vizinhas.
- Biologia celular: Fluxos de trabalho de microscopia segmentam células e núcleos individuais, inclusive os que se tocam, para contá-los e medir seu tamanho e formato.
- Agricultura: Robôs de colheita e estimadores de produtividade separam frutas individuais em copas densas para contá-las e estimar seu tamanho com base na área da máscara.
- Rastreamento de objetos em vídeo: A combinação de máscaras de instância com um rastreador acompanha a silhueta exata de cada objeto de um quadro para outro.
- Veículos autônomos: Conjuntos de dados de direção, como Cityscapes, fornecem rótulos em nível de instância para oito classes de pessoas e veículos, permitindo que os modelos de percepção distingam cada pedestre em uma multidão.










