Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Supressão Não Máxima (NMS) | Seção
/
Visão Computacional Aplicada

bookSupressão Não Máxima (NMS)

Deslize para mostrar o menu

Modelos de detecção de objetos frequentemente preveem múltiplas caixas delimitadoras sobrepostas para o mesmo objeto. Isso ocorre porque os modelos analisam uma imagem em diferentes escalas e posições, resultando em previsões redundantes. Non-Max Suppression (NMS) é uma etapa fundamental de pós-processamento que refina essas detecções ao selecionar as caixas delimitadoras mais relevantes e descartar as desnecessárias.

nms

Por que ocorrem múltiplas caixas sobrepostas

Detectores de objetos preveem múltiplas caixas delimitadoras para um único objeto devido a:

  • Anchor boxes: alguns modelos, como Faster R-CNN e YOLO, utilizam anchor boxes predefinidas de diferentes tamanhos, levando a múltiplas detecções do mesmo objeto;
  • Abordagens de janela deslizante: alguns métodos de detecção analisam uma imagem em pequenas regiões, causando detecções repetidas de um objeto em áreas sobrepostas;
  • Altas pontuações de confiança: o modelo atribui pontuações de confiança para cada previsão, e previsões semelhantes com alta confiança podem se sobrepor significativamente.

Se essas caixas redundantes não forem filtradas, podem impactar negativamente o desempenho da detecção de objetos ao aumentar a complexidade computacional e tornar a contagem de objetos não confiável.

Como Funciona a Supressão Não Máxima (NMS)

A NMS é aplicada para remover detecções duplicadas, mantendo a caixa delimitadora mais confiável. Ela segue estes passos:

  • Ordenação por pontuação: organiza todas as caixas delimitadoras previstas em ordem decrescente com base em suas pontuações de confiança;
  • Seleção da melhor caixa: seleciona a caixa com maior pontuação e a adiciona à lista final de detecções;
  • Cálculo do IoU: calcula a Interseção sobre União (IoU) entre a caixa selecionada e todas as caixas restantes;
  • Aplicação do limiar: suprime (remove) as caixas que possuem IoU acima de um limiar definido (por exemplo, 0,5), pois provavelmente representam o mesmo objeto;
  • Repetição: repete esse processo para a próxima caixa com maior pontuação até que todas as caixas sejam processadas.
import numpy as np

def non_max_suppression(boxes, scores, iou_threshold=0.5):
    # Sort boxes by confidence scores in descending order
    sorted_indices = np.argsort(scores)[::-1]
    selected_boxes = []
    
    while len(sorted_indices) > 0:
        # Pick the highest confidence box
        best_idx = sorted_indices[0]  
        selected_boxes.append(boxes[best_idx])
        
        # Compute IoU with the remaining boxes
        remaining_boxes = boxes[sorted_indices[1:]]
        ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
        
        # Suppress boxes with IoU above threshold
        sorted_indices = sorted_indices[1:][ious < iou_threshold]
    
    return selected_boxes

Soft-NMS: Uma Alternativa Mais Inteligente

NMS padrão remove todas as caixas sobrepostas acima de um determinado limiar de IoU, o que pode, às vezes, eliminar detecções úteis. Soft-NMS aprimora esse processo ao decair as pontuações de confiança das caixas sobrepostas em vez de removê-las completamente. Esse método permite uma supressão mais suave e pode melhorar o desempenho da detecção em cenários com objetos densos.

Principais Diferenças Entre NMS Padrão e Soft-NMS:

  • NMS padrão: remove caixas sobrepostas acima do limiar de IoU;
  • Soft-NMS: reduz as pontuações de confiança das caixas sobrepostas em vez de eliminá-las, tornando-o mais flexível para detectar objetos parcialmente ocluídos.

Equilíbrio Entre Precisão e Velocidade na NMS

A escolha do limiar de IoU adequado é crucial:

  • Limiares mais altos (por exemplo, 0,6 - 0,7): filtragem mais agressiva, mantendo apenas as caixas mais confiáveis, mas podendo perder algumas detecções válidas;
  • Limiares mais baixos (por exemplo, 0,3 - 0,4): retém mais caixas sobrepostas, o que pode ser útil em cenas lotadas, mas pode aumentar os falsos positivos.

O uso de implementações otimizadas, como as funções NMS integradas do TensorFlow ou OpenCV, pode ajudar a acelerar o processamento para aplicações em tempo real.

Non-Max Suppression é uma técnica fundamental em detecção de objetos para remover caixas delimitadoras redundantes e melhorar a precisão do modelo. O NMS padrão elimina eficientemente detecções duplicadas, enquanto o Soft-NMS refina o processo ajustando as pontuações de confiança em vez de remover diretamente. Ao ajustar os limiares de IoU, é possível alcançar o equilíbrio ideal entre precisão de detecção e eficiência computacional.

1. Qual é o principal objetivo do Non-Max Suppression (NMS) na detecção de objetos?

2. Como o NMS padrão determina quais caixas delimitadoras devem ser suprimidas?

3. Qual é a principal diferença entre NMS padrão e Soft-NMS?

question mark

Qual é o principal objetivo do Non-Max Suppression (NMS) na detecção de objetos?

Select the correct answer

question mark

Como o NMS padrão determina quais caixas delimitadoras devem ser suprimidas?

Select the correct answer

question mark

Qual é a principal diferença entre NMS padrão e Soft-NMS?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 23

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 23
some-alt