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) | Detecção de Objetos
Fundamentos de Visão Computacional

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

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 a 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, aumentando a complexidade computacional e tornando 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;
  • Limite de supressão: suprime (remove) as caixas que possuem IoU acima de um limite definido (por exemplo, 0.5), pois provavelmente representam o mesmo objeto;
  • Repetição: continua 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 limite 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 limite 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 limite de IoU adequado é crucial:

  • Limites mais altos (por exemplo, 0.6 - 0.7): filtragem mais agressiva, mantendo apenas as caixas mais confiáveis, mas possivelmente perdendo algumas detecções válidas;
  • Limites 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.

Utilizar 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.

Supressão Não Máxima (NMS) é uma técnica fundamental em detecção de objetos para remover caixas delimitadoras redundantes e melhorar a precisão do modelo. A NMS padrão elimina de forma eficiente detecções duplicadas, enquanto a Soft-NMS aprimora o processo ajustando as pontuações de confiança ao invés 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 da Supressão Não Máxima (NMS) na detecção de objetos?

2. Como a 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 da Supressão Não Máxima (NMS) na detecção de objetos?

Select the correct answer

question mark

Como a 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 4. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

Awesome!

Completion rate improved to 3.45

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 a 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, aumentando a complexidade computacional e tornando 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;
  • Limite de supressão: suprime (remove) as caixas que possuem IoU acima de um limite definido (por exemplo, 0.5), pois provavelmente representam o mesmo objeto;
  • Repetição: continua 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 limite 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 limite 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 limite de IoU adequado é crucial:

  • Limites mais altos (por exemplo, 0.6 - 0.7): filtragem mais agressiva, mantendo apenas as caixas mais confiáveis, mas possivelmente perdendo algumas detecções válidas;
  • Limites 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.

Utilizar 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.

Supressão Não Máxima (NMS) é uma técnica fundamental em detecção de objetos para remover caixas delimitadoras redundantes e melhorar a precisão do modelo. A NMS padrão elimina de forma eficiente detecções duplicadas, enquanto a Soft-NMS aprimora o processo ajustando as pontuações de confiança ao invés 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 da Supressão Não Máxima (NMS) na detecção de objetos?

2. Como a 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 da Supressão Não Máxima (NMS) na detecção de objetos?

Select the correct answer

question mark

Como a 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 4. Capítulo 5
some-alt