Supressão não máximaNMS)
Saiba como a supressão não máxima (NMS) elimina caixas delimitadoras duplicadas na deteção de objetos. Descubra como Ultralytics fornece NMS nativo de ponta a ponta.
A supressão não máxima (NMS) é uma técnica de pós-processamento utilizada na
detecção de objetos para refinar as previsões brutas
feitas por um modelo. Quando um modelo de deteção de objetos analisa uma imagem, muitas vezes gera várias caixas delimitadoras sobrepostas
para um único objeto, cada uma com uma
pontuação de confiança associada. Essas previsões redundantes
ocorrem porque o modelo pode detect mesma característica em escalas ou posições ligeiramente diferentes. NMS essa saída
mantendo apenas a caixa delimitadora mais precisa para cada objeto e descartando as outras, garantindo que a saída final
seja limpa, precisa e livre de duplicatas.
Como a Non-Maximum Suppression Funciona
O NMS opera numa lista de caixas delimitadoras candidatas e suas pontuações de confiança correspondentes. O objetivo
é selecionar a melhor caixa para um objeto e suprimir (remover) quaisquer outras caixas que se sobreponham significativamente a ela, pois
estas são provavelmente deteções duplicadas do mesmo objeto. O processo normalmente segue estas etapas:
-
Filtragem: elimine todas as caixas delimitadoras com pontuações de confiança abaixo de um limite específico (por exemplo,
0,25) para remover imediatamente as previsões fracas.
- Classificação: Classifique as caixas restantes em ordem decrescente com base nas suas pontuações de confiança.
- Seleção: Escolha a caixa com a pontuação de confiança mais alta como uma deteção válida.
-
Comparação: Compare esta caixa selecionada com todas as outras caixas restantes usando
Intersection over Union (IoU), uma
métrica que mede a sobreposição entre duas caixas.
-
Supressão: Se a IoU a caixa selecionada e outra caixa exceder um limite predefinido
(por exemplo, 0,45), a caixa com pontuação mais baixa é considerada uma duplicata e é removida.
-
Iteração: Repita o processo com a caixa seguinte com a pontuação mais alta que ainda não tenha sido suprimida ou
selecionada, até que todas as caixas tenham sido processadas.
Aplicações no Mundo Real
NMS essencial em cenários onde a precisão é fundamental e as detecções duplicadas podem confundir os sistemas a jusante.
-
Condução autónoma: Nos sistemas de carros autônomos, câmaras detect , outros veículos e
sinais de trânsito. Um modelo pode prever três caixas ligeiramente diferentes para um único pedestre. NMS o
sistema de planeamento do veículo receba apenas uma coordenada para esse pedestre, evitando travagens erráticas ou erros de planeamento de trajetória
causados por obstáculos «fantasmas».
-
Gestão de inventário de retalho: ao usar
visão computacional para contar produtos numa prateleira,
os itens geralmente estão muito próximos uns dos outros. Sem NMS, uma única lata de refrigerante pode ser contada duas vezes devido a previsões sobrepostas
, levando a níveis de estoque imprecisos. NMS essas detecções para garantir que a contagem de inventário corresponda à
realidade.
NMS com PyTorch
Embora muitas estruturas modernas lidem com NMS , compreender a implementação ajuda no ajuste dos parâmetros. O
exemplo a seguir demonstra como aplicar NMS a
PyTorch :
import torch
import torchvision.ops as ops
# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
[
[100, 100, 200, 200], # Box A
[105, 105, 195, 195], # Box B (High overlap with A)
[300, 300, 400, 400], # Box C (Distinct object)
],
dtype=torch.float32,
)
# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)
# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)
print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.
NMS . Detecção de ponta a ponta
Tradicionalmente, NMS sido uma etapa obrigatória de "limpeza" que fica fora da rede neural principal, aumentando
a latência da inferência. No entanto, o campo está a evoluir
para arquiteturas de ponta a ponta.
-
NMS padrão: Um processo heurístico que requer ajuste manual do IoU . Se o
limiar for muito baixo, objetos válidos próximos uns dos outros podem ser perdidos (baixa
recall). Se for muito alto, duplicatas permanecem ( baixa
precisão).
-
Modelos ponta a ponta: Modelos de última geração, como o
YOLO26, são projetados para serem nativamente ponta a ponta. Eles aprendem
a prever exatamente uma caixa por objeto durante o treinamento, internalizando efetivamente o NMS . Isso elimina
a necessidade de pós-processamento externo, resultando em velocidades de inferência mais rápidas e pipelines de implementação mais simples na
Ultralytics .
Conceitos Relacionados
-
NMS: Uma
variação em que as caixas sobrepostas não são removidas estritamente, mas têm as suas pontuações de confiança reduzidas. Isso permite que
objetos um pouco sobrepostos (como pessoas em uma multidão) ainda sejam detectados se as suas pontuações permanecerem altas o suficiente após a
decadência.
-
Caixas âncora: Formas de caixa predefinidas
utilizadas por muitos detetores para estimar o tamanho do objeto. NMS aplicado às previsões finais refinadas a partir dessas âncoras.
-
Intersecção sobre União (IoU):
A fórmula matemática utilizada pelo NMS determinar o quanto duas caixas se sobrepõem, atuando como o limiar de decisão para
supressão.