Regressão de Bounding Box

A regressão de caixa delimitadora (bounding box regression) é a parte de um detector de objetos que transforma uma estimativa grosseira de localização em uma caixa delimitadora ajustada ao redor de um objeto. Diferentemente da classificação de imagens (que prevê apenas um rótulo), a detecção de objetos precisa prever onde um objeto está, tipicamente como um retângulo parametrizado por alguns números. A regressão de caixa delimitadora é o problema de aprendizado supervisionado de prever esses números com precisão.

A maioria dos detectores modernos combina:

  • Classificação: “Que objeto é este?”
  • Regressão de caixa: “Onde exatamente ele está?”

Este artigo explica como os alvos de regressão de caixa são definidos (frequentemente como deslocamentos a partir de âncoras ou propostas), parametrizações comuns de coordenadas, funções de perda populares (Smooth L1 e perdas da família IoU) e como a regressão de caixa interage com a geração de propostas, Supressão Não Máxima (NMS) e a avaliação com IoU/mAP.

Onde a regressão de caixa delimitadora se encaixa em um pipeline de detecção de objetos

Em um detector típico de aprendizado profundo (deep learning) (veja Detecção de Objetos), uma rede backbone extrai mapas de características, e então uma “cabeça” prevê:

  • pontuações de classe (ou objetividade)
  • coordenadas de caixa delimitadora (regressão)

Duas famílias comuns:

Detectores de dois estágios (baseados em propostas)

Exemplos: sistemas no estilo Faster R-CNN.

  1. Geração de propostas (por exemplo, uma RPN) prevê caixas candidatas (“propostas”) com probabilidade de conter objetos.
  2. Um segundo estágio refina cada proposta com:
    • classificação (classe final)
    • regressão de caixa delimitadora (refinamento)

Aqui, a regressão de caixa é frequentemente aplicada duas vezes: uma para refinar âncoras em propostas, e outra para refinar propostas em caixas finais.

Detectores de um estágio (predição densa)

Exemplos: RetinaNet, SSD, variantes do YOLO.

  • O modelo prevê caixas diretamente em uma grade densa (com âncoras ou pontos sem âncora).
  • A regressão de caixa é aplicada uma vez por localização/âncora para produzir caixas finais.

Em ambos os casos, o modelo geralmente prevê deslocamentos relativos a uma referência (caixa âncora, caixa proposta ou ponto do mapa de características), e não coordenadas absolutas em pixels do zero. Isso facilita o aprendizado: a rede aprende “como ajustar” um palpite inicial razoável.

Representações de caixas (parametrizações)

Uma caixa delimitadora pode ser representada de múltiplas formas equivalentes. A escolha afeta estabilidade numérica, facilidade de aprendizado e quais perdas são convenientes.

Coordenadas dos cantos (xyxy)

Uma caixa é representada por seus cantos:

  • (x1, y1, x2, y2) onde:
    • (x1, y1) é o canto superior esquerdo
    • (x2, y2) é o canto inferior direito

Esse formato é intuitivo e conveniente para computações de interseção/união (IoU), recorte aos limites da imagem e NMS.

Restrições:

  • É preciso garantir x2 > x1 e y2 > y1 (frequentemente imposto pela decodificação, por clamping ou usando outra parametrização internamente).

Centro-tamanho (xywh)

Uma caixa é representada por seu centro e tamanho:

  • (cx, cy, w, h)

Vantagens:

  • Largura/altura são representadas explicitamente e são naturalmente positivas.
  • Muitos detectores preveem deslocamentos nesse espaço porque ele separa translação (centro) de escala (tamanho).

Restrições:

  • É preciso garantir w > 0, h > 0. Isso normalmente é tratado prevendo deslocamentos log(w) / log(h) relativos a uma referência.

Outras variantes que você pode ver

  • Coordenadas normalizadas: escalonam x/y pela largura/altura da imagem para que os alvos fiquem em [0, 1].
  • Coordenadas do mapa de características: definem caixas em um sistema de coordenadas atrelado ao stride de um mapa de características (útil em detectores densos).
  • Caixas rotacionadas: adicionam um parâmetro de ângulo (não abordado a fundo aqui; comum em imagens aéreas/detecção de texto).

Na prática, muitas implementações usam xyxy para armazenamento/pós-processamento, mas predizem deslocamentos em um espaço centro-tamanho por estabilidade.

Alvos de regressão: prevendo deslocamentos a partir de âncoras ou propostas

Em vez de prever (x1, y1, x2, y2) absolutos, detectores frequentemente preveem deltas que transformam uma caixa de referência em uma caixa refinada.

Âncoras e propostas como referências

  • Âncoras (anchors): caixas pré-definidas de vários tamanhos/razões de aspecto distribuídas pela imagem.
  • Propostas (proposals): caixas candidatas produzidas por um primeiro estágio (ou método externo).

Usar uma referência ajuda porque o modelo aprende pequenas correções em vez de coordenadas absolutas. Também torna o problema de aprendizado mais “local” e consistente ao longo da imagem.

Parametrização comum de deltas (estilo Faster R-CNN)

Seja a caixa de referência B_a = (cx_a, cy_a, w_a, h_a) e o alvo (ground truth) B* = (cx*, cy*, w*, h*).

Os alvos de regressão são:

  • tx* = (cx* - cx_a) / w_a
  • ty* = (cy* - cy_a) / h_a
  • tw* = log(w* / w_a)
  • th* = log(h* / h_a)

O modelo prevê (tx, ty, tw, th). Durante a decodificação, você reconstrói a caixa prevista:

  • cx = tx * w_a + cx_a
  • cy = ty * h_a + cy_a
  • w = exp(tw) * w_a
  • h = exp(th) * h_a

Esse design:

  • torna a translação invariante à escala (divide pelo tamanho da âncora)
  • torna razões de largura/altura mais fáceis de aprender (espaço log)

Exemplo numérico prático

Suponha que uma caixa âncora tenha centro (50, 60) e tamanho (w=40, h=20). Uma caixa ground-truth tem centro (54, 63) e tamanho (w=44, h=18).

Alvos:

  • tx* = (54 - 50) / 40 = 0.10
  • ty* = (63 - 60) / 20 = 0.15
  • tw* = log(44 / 40) ≈ log(1.10) ≈ 0.0953
  • th* = log(18 / 20) = log(0.9) ≈ -0.1053

Esses valores são pequenos e bem comportados — exatamente o que queremos que a rede faça na regressão.

Regressão de caixa específica por classe vs. independente de classe

  • Independente de classe (class-agnostic): um conjunto de deltas de caixa independentemente da classe (comum em muitos detectores modernos; robusto e eficiente em parâmetros).
  • Específica por classe (class-specific): deltas separados por classe (usado historicamente em alguns designs de dois estágios; pode melhorar a localização para certas categorias ao custo de mais parâmetros e potencial overfitting).

Treinamento: correspondência de caixas e definição de positivos/negativos

A regressão de caixa é supervisionada: você precisa de exemplos de entrada e deltas-alvo. O passo-chave é decidir quais caixas previstas devem regredir para quais caixas ground-truth.

Atribuição baseada em IoU

A maioria dos detectores faz a correspondência entre âncoras/propostas e ground truth usando Interseção sobre União (IoU):

  • Positivo se IoU ≥ limiar (por exemplo, 0.5 ou 0.7)
  • Negativo se IoU ≤ limiar (por exemplo, 0.3)
  • Ignorar caso contrário (não contribui para a perda)

Apenas amostras positivas contribuem para a perda de regressão de caixa, porque negativas não correspondem a nenhuma caixa real de objeto.

Aprendizado multitarefa com classificação

Detectores tipicamente minimizam uma perda combinada:

  • L = L_cls + λ * L_box

Onde:

  • L_cls é a perda de classificação/objetividade (frequentemente entropia cruzada ou perda focal)
  • L_box é a perda de regressão de caixa (Smooth L1 ou baseada em IoU)
  • λ equilibra ambas

A otimização é feita via treinamento padrão de aprendizado profundo e Descida do Gradiente usando Retropropagação.

Funções de perda para regressão de caixa delimitadora

Uma boa perda de caixa deve recompensar localização precisa e fornecer gradientes estáveis durante o treinamento.

Perda Smooth L1 (Huber)

Historicamente, a perda mais comum para deltas de caixa.

Para erro d = p - t (predição menos delta-alvo), Smooth L1 é:

  • quadrática quando |d| é pequeno (como L2)
  • linear quando |d| é grande (como L1)

Isso reduz a sensibilidade a outliers enquanto mantém gradientes estáveis perto de zero.

Em muitos frameworks, Smooth L1 é usada por coordenada (tx, ty, tw, th) e somada.

Por que funciona bem:

  • Otimização estável
  • Robustez a correspondências ocasionalmente ruins

Limitações:

  • Otimiza componentes de delta de forma independente, não o IoU final diretamente.
  • Um pequeno erro de coordenada pode causar quedas de IoU muito diferentes dependendo do tamanho/razão de aspecto da caixa.

Perda IoU (otimização direta de sobreposição)

Em vez de regredir deltas com uma perda por coordenada, perdas baseadas em IoU medem diretamente a sobreposição entre caixas previstas e ground-truth:

  • IoU = área(interseção) / área(união)
  • Perda IoU frequentemente usa L = 1 - IoU (ou -log(IoU))

Prós:

  • Otimiza diretamente o que a avaliação considera (sobreposição).
  • Invariante a escalonamento uniforme das coordenadas da imagem.

Contras:

  • Se as caixas não se sobrepõem, IoU = 0 e os gradientes podem ser pouco informativos.

GIoU (IoU Generalizado, Generalized IoU)

GIoU corrige o problema de “sem sobreposição = sem gradiente” adicionando uma penalidade baseada na menor caixa que envolve ambas:

  • Incentiva as caixas a se moverem uma em direção à outra mesmo quando estão disjuntas.

Isso melhora a estabilidade do treinamento quando as predições iniciais são ruins.

DIoU (IoU de Distância, Distance IoU)

DIoU adiciona uma penalidade proporcional à distância ao quadrado entre os centros das caixas:

  • Incentiva convergência mais rápida ao minimizar explicitamente a distância entre centros.

Útil quando você quer que as caixas previstas “mirem” nos alvos rapidamente.

CIoU (IoU Completo, Complete IoU)

CIoU inclui adicionalmente consistência de razão de aspecto:

  • penaliza a distância entre centros
  • penaliza discrepância na razão de aspecto
  • usa IoU como termo base de sobreposição

CIoU é popular em detectores da família YOLO porque tende a melhorar a qualidade de localização na prática.

Qual perda você deve usar?

Escolhas comuns hoje:

  • Detectores de dois estágios: Smooth L1 continua comum e forte; perdas da família IoU também são cada vez mais usadas.
  • Detectores de um estágio (estilo YOLO): perdas da família IoU (frequentemente CIoU) são amplamente usadas.

Uma heurística prática:

  • Se o seu treinamento tem muitas predições iniciais sem sobreposição, use GIoU/DIoU/CIoU em vez de IoU simples.
  • Se você está regredindo a partir de boas propostas (dois estágios), Smooth L1 ou perda IoU podem funcionar bem.

Detalhes práticos de decodificação e truques de estabilidade

Clipping e limites

Após decodificar as caixas previstas para coordenadas na imagem:

  • recorte para [0, W-1] × [0, H-1]
  • garanta x2 > x1, y2 > y1 (às vezes impondo tamanhos mínimos)

Limitação de mudanças extremas de escala

Como largura/altura frequentemente são decodificadas com exp(tw) e exp(th), valores muito grandes de tw/th podem explodir os tamanhos. Implementações frequentemente fazem clamp de tw/th a um máximo (por exemplo, para que exp não transborde).

Normalização dos alvos de regressão

Alguns sistemas normalizam alvos de delta (por exemplo, subtraem a média e dividem pelo desvio padrão por coordenada) para estabilizar o treinamento. Isso é especialmente comum quando a distribuição de deltas varia entre datasets.

Como a regressão de caixa interage com a geração de propostas

Em sistemas de dois estágios:

  1. Regressão de caixa da RPN: âncoras → propostas
    • correção grosseira; objetivo é propostas “boas o suficiente” com alto recall
  2. Regressão do head de ROI: propostas → caixas finais
    • correção fina; objetivo é localização de alta precisão

Essa divisão de trabalho importa:

  • O estágio de propostas prioriza não perder objetos (alto recall), então frequentemente usa limiares mais frouxos e mantém muitas caixas candidatas.
  • O segundo estágio refina localização e classificação, frequentemente produzindo menos caixas e mais precisas.

Como a geração de propostas já produz caixas um tanto alinhadas, o regressor do segundo estágio pode aprender deltas menores e pode convergir mais rápido.

Detectores de um estágio pulam propostas; seu regressor precisa ser bom em uma faixa mais ampla de condições iniciais.

Como a regressão de caixa interage com NMS

Após as predições serem geradas, detectores tipicamente produzem muitas caixas que se sobrepõem fortemente. A Supressão Não Máxima (NMS) remove duplicatas ao:

  1. Ordenar caixas por pontuação de confiança
  2. Manter a caixa com maior pontuação
  3. Suprimir outras caixas cujo IoU com ela exceda um limiar

A regressão de caixa afeta o NMS de duas maneiras:

  • Melhor localização reduz sobreposição de duplicatas: Se cada objeto gera um cluster compacto de caixas, o NMS pode selecionar claramente a melhor.
  • Erros de localização podem causar supressão incorreta:
    • Se caixas de dois objetos próximos se sobrepõem demais devido a regressão ruim, um objeto pode suprimir o outro (menor recall).
    • Se a regressão é ruidosa e as caixas não se sobrepõem o suficiente, o NMS pode falhar em mesclar duplicatas (menor precisão).

Alguns modelos usam variantes como Soft-NMS ou NMS aprendível, mas o NMS padrão permanece comum e fortemente ligado à qualidade da regressão de caixa.

Avaliação: IoU e mAP

Interseção sobre União (IoU)

IoU é a métrica padrão para sobreposição de caixas:

  • IoU = 1 significa correspondência perfeita
  • IoU = 0 significa nenhuma sobreposição

Uma detecção é contada como verdadeiro positivo se:

  • a classe prevista coincide com a ground truth
  • IoU excede um limiar escolhido (por exemplo, 0.5)

mAP (média da Precisão Média, mean Average Precision)

mAP resume precisão-recall ao longo de limiares de confiança e faz a média entre classes. Benchmarks modernos frequentemente avaliam em múltiplos limiares de IoU:

  • PASCAL VOC: AP em IoU=0.5
  • COCO: mAP médio em limiares de IoU de 0.5 a 0.95 (passo 0.05)

Por que isso importa para a regressão:

  • Se sua regressão de caixa estiver levemente imprecisa, você pode passar em IoU=0.5 mas falhar em IoU=0.75+.
  • Melhorias nas perdas de regressão frequentemente aparecem mais claramente em AP com IoU alto.

Pseudocódigo mínimo: alvos de treinamento e perda (baseado em âncoras)

A seguir há um pseudocódigo simplificado para um detector baseado em âncoras:

# Given anchors A[i] and ground-truth boxes GT[j]

matches = assign_by_iou(anchors=A, gt=GT,
                        pos_iou=0.5, neg_iou=0.4)

# Classification targets
cls_target[i] = 1 if matches[i] is positive else 0

# Box targets (only for positives)
if matches[i] is positive:
    gt_box = GT[matches[i].gt_index]
    box_target[i] = encode_deltas(anchor=A[i], gt=gt_box)  # (tx*,ty*,tw*,th*)

# Model outputs
cls_logits[i], box_pred[i] = model(features)

# Loss
L_cls = classification_loss(cls_logits, cls_target)

L_box = smooth_l1(box_pred[pos_indices], box_target[pos_indices])
# or L_box = giou_loss(decode(A[pos], box_pred[pos]), GT[matched_gt])

L_total = L_cls + lambda_ * L_box

Principal conclusão: a perda de regressão de caixa é computada apenas para positivos correspondidos, enquanto a classificação/objetividade usa positivos e negativos.

Armadilhas comuns e dicas práticas

Limiar de correspondência ruim pode sabotar a regressão

Se positivos incluem muitas correspondências com IoU baixo, os alvos de regressão ficam grandes e ruidosos. Se positivos são rigorosos demais, você obtém poucos exemplos de regressão. Muitos sistemas ajustam limiares e amostragem para equilibrar estabilidade e recall.

Convenções de coordenadas devem ser consistentes

É fácil introduzir erros de off-by-one ou de sistema de coordenadas:

  • As coordenadas são índices de pixel ou coordenadas contínuas?
  • As caixas são inclusivas ou exclusivas no limite?
  • Você está usando (x1,y1,x2,y2) com x2 como o último pixel, ou como o limite?

Convenções inconsistentes podem prejudicar silenciosamente IoU e treinamento.

A escolha da perda de caixa muda o comportamento de otimização

  • Smooth L1 incentiva acertar deltas “numericamente”
  • perdas da família IoU incentivam sobreposição “geometricamente”

Muitos sistemas modernos misturam ideias (por exemplo, perda IoU para caixas + perdas L1 auxiliares, ou pontuações de classificação conscientes de qualidade).

Relação com outras tarefas de localização

A regressão de caixa delimitadora fornece localização grosseira. Se você precisa de limites com precisão de pixel, veja:

Para outras predições geométricas (por exemplo, landmarks de pose humana), veja:

Resumo

A regressão de caixa delimitadora é o mecanismo central de localização na detecção de objetos:

  • Modelos frequentemente preveem deslocamentos relativos a âncoras ou propostas, não coordenadas absolutas.
  • Parametrizações comuns incluem coordenadas dos cantos (xyxy) para geometria e centro-tamanho (xywh) para regressão estável.
  • Perdas padrão incluem Smooth L1 (por coordenada) e perdas baseadas em IoU (IoU/GIoU/DIoU/CIoU) que se alinham melhor com a avaliação.
  • A qualidade da regressão de caixa afeta fortemente a qualidade das propostas, o comportamento do NMS e o mAP — especialmente em limiares de IoU altos.

Quando bem feita, a regressão de caixa delimitadora transforma um detector de “aproximadamente correto” em “precisamente localizado”, o que é essencial para sistemas de detecção de alta qualidade.