Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Non-Maximum Suppression (NMS)

A supressão de não máximos (NMS) remove caixas sobrepostas duplicadas para que cada objeto tenha apenas uma detecção. Saiba como funciona, como ajustá-la e conheça os modelos sem NMS.

A supressão não máxima (NMS) é a etapa de pós-processamento que transforma as previsões brutas e sobrepostas de um detector em uma caixa por objeto. Um modelo denso de detecção de objetos atribui pontuações a milhares de caixas delimitadoras candidatas por imagem, e várias candidatas vizinhas costumam ser ativadas para o mesmo objeto, com posições e pontuações ligeiramente diferentes. A NMS mantém a caixa de maior confiança em cada grupo de caixas sobrepostas e suprime as demais, usando a interseção sobre união (IoU) para decidir quais caixas se sobrepõem o suficiente para serem consideradas duplicatas.

Como funciona a supressão não máxima#

A NMS gulosa, a versão padrão, primeiro descarta as candidatas abaixo de um limiar de confiança e ordena as restantes por pontuação. Em seguida, mantém a caixa de maior pontuação, remove todas as caixas restantes cuja IoU com ela ultrapasse o limiar de IoU e repete o processo com a melhor caixa restante até não sobrar nenhuma. Normalmente, os detectores executam essa etapa uma vez por classe, de modo que uma caixa de pessoa nunca suprime uma caixa de bicicleta sobreposta.

A nms do torchvision implementa a NMS gulosa para uma classe e retorna os índices das caixas mantidas, ordenados por pontuação.

import torch
from torchvision.ops import nms

# Caixas candidatas como [x1, y1, x2, y2], cada uma com uma pontuação de confiança
boxes = torch.tensor(
    [
        [100, 100, 200, 200],  # A
        [105, 105, 195, 195],  # B: quase duplicada de A (IoU 0.81)
        [300, 300, 400, 400],  # C: um objeto separado
    ],
    dtype=torch.float32,
)
scores = torch.tensor([0.90, 0.80, 0.95])

# Suprime qualquer caixa cuja IoU com uma caixa mantida de pontuação mais alta ultrapasse 0.5
keep = nms(boxes, scores, iou_threshold=0.5)
print(keep.tolist())

A saída é [2, 0]: a caixa C é mantida primeiro porque tem a pontuação mais alta, a caixa A é mantida porque não se sobrepõe a C, e a caixa B é removida porque sua IoU com A é 0.81.

Ajuste dos limiares#

O limiar de confiança remove candidatas fracas antes do início da supressão. O limiar de IoU define o grau de sobreposição considerado uma duplicata. Quando é baixo demais, dois objetos reais próximos, como pessoas em uma multidão, são fundidos em uma única detecção e a revocação diminui. Quando é alto demais, caixas duplicadas permanecem e a precisão diminui. A NMS independente de classe permite que qualquer caixa suprima outra, independentemente da classe, removendo rótulos duplicados quando o modelo atribui a um objeto duas classes semelhantes, como "carro" e "caminhão".

Limitações da NMS#

  • Cenas lotadas: um único limiar de IoU fixo não consegue distinguir uma caixa duplicada de um segundo objeto que realmente se sobrepõe ao primeiro; assim, objetos muito ocluídos são suprimidos.
  • Heurística fixa: o limiar é definido manualmente, fica fora da rede treinada e não é aprendido a partir dos dados.
  • Latência e implantação: o loop guloso é executado após a rede, e seu custo aumenta com o número de candidatas, o que acrescenta latência de inferência. Formatos de exportação que não conseguem incorporar a NMS ao grafo do modelo geram candidatas brutas, e o aplicativo precisa executar a NMS por conta própria.

Variantes da NMS e detecção sem NMS#

A Soft-NMS reduz as pontuações das caixas sobrepostas em função do grau de sobreposição, em vez de removê-las, o que permite recuperar mais objetos em multidões. A DIoU-NMS, proposta junto com a perda Distance-IoU, também considera a distância entre os centros das caixas; assim, é menos provável que caixas com centros distantes sejam suprimidas.

Os detectores de ponta a ponta eliminam completamente essa etapa. O DETR é treinado com correspondência húngara um a um entre previsões e rótulos, então cada objeto recebe exatamente uma previsão, e o YOLOv10 trouxe uma cabeça um para um aos modelos YOLO em tempo real. O YOLO26 treina os dois tipos de cabeça e aplica NMS por padrão, porque sua cabeça de um para muitos obtém uma pontuação ligeiramente maior: 40,9 contra 40,1 de mAP50-95 no COCO para YOLO26n. Passar nms=False seleciona a cabeça um para um, que gera no máximo 300 caixas finais por imagem sem uma etapa de NMS, como mostra o guia de detecção de ponta a ponta para predição e exportação.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina