Faster R-CNN

O Faster R-CNN (Ren et al., 2015) consolidou a era moderna da detecção de objetos, evoluindo diretamente do fast-r-cnn para integrar todas as etapas do processo em uma única e unificada rede fim-a-fim (end-to-end).

O Contexto Evolutivo

Historicamente, o pipeline evoluiu tentando eliminar gargalos de performance computacional:

  • R-CNN: Passava 2.0002.000 recortes da imagem um por um pela rede neural. (Inviável e lento).
  • Fast R-CNN (e spp-net): Passava a imagem uma única vez pela rede, reaproveitando o mapa de features gerado usando roi-pooling. Resolveu o gargalo da rede, mas expôs um novo problema: a geração das Region Proposals (algoritmo Selective Search, rodando na CPU) tornou-se o gargalo, levando 2\sim 2 segundos por imagem.

O Trunfo: Region Proposal Network (RPN)

O salto de genialidade do Faster R-CNN foi jogar fora o Selective Search e substituí-lo por uma Region Proposal Network (RPN) totalmente convolucional.

A RPN é uma rede minúscula que desliza (sliding window) uma janela de 3×33 \times 3 sobre o mapa de features convolucional gerado pela espinha dorsal (backbone). Cada janela é codificada em um vetor curto (256256-d no backbone ZF, 512512-d no VGG-16) que alimenta duas camadas irmãs. Para cada posição, a rede usa o conceito de Anchor Boxes (caixas âncora pré-definidas em várias escalas e proporções) para prever:

  1. Objectness Score: Um número indicando a probabilidade de haver qualquer objeto ali (fundo vs. objeto).
  2. Bounding Box Regression: Ajustes precisos (deltas) em x,y,w,hx, y, w, h para enquadrar perfeitamente a âncora ao redor da massa do objeto.

Anchor Boxes e Invariância à Translação

As âncoras são caixas de referência centradas em cada posição da janela deslizante. O paper usa 3 escalas (áreas de 1282128^2, 2562256^2 e 5122512^2 pixels) e 3 proporções (1:11{:}1, 1:21{:}2, 2:12{:}1), totalizando k=9k = 9 âncoras por posição — cerca de 20.00020.000 âncoras por imagem. Assim, a camada de classificação tem 2k2k saídas (objeto/fundo por âncora) e a de regressão, 4k4k (os deltas por âncora).

O desenho é invariante à translação: se o objeto se move na imagem, a mesma função prevê a proposta na nova posição. Isso contrasta com métodos anteriores (MultiBox), cujas âncoras fixas por k-means exigiam uma camada de saída com ordem de magnitude mais parâmetros (2727M vs. 2,42,4M com VGG-16) — e mais risco de overfitting em datasets pequenos como o PASCAL VOC.

⚠️ Armadilha prática: âncoras que cruzam a borda da imagem devem ser ignoradas no treinamento (não contribuem para a perda). Sem isso, seus termos de erro grandes e incorrigíveis impedem a convergência. No teste, as caixas que cruzam a borda são simplesmente cortadas (clipped) para os limites da imagem.

Rotulagem das Âncoras

Durante o treino, cada âncora recebe um rótulo binário:

  • Positiva: a âncora com maior IoU com uma caixa ground-truth, ou qualquer âncora com IoU >0,7> 0,7 com alguma caixa real.
  • Negativa: âncora não-positiva com IoU <0,3< 0,3 para todas as caixas reais.
  • Ignorada: tudo que fica no meio do caminho não contribui para a perda.

Como as negativas dominam, o mini-batch amostra 256256 âncoras por imagem mantendo proporção de até 1:11{:}1 entre positivas e negativas.

A função de perda (Loss Function) da RPN também é do tipo multi-task, e otimiza essas duas saídas simultaneamente:

L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)L(\{p_i\}, \{t_i\}) = \frac{1}{N_{cls}} \sum_i L_{cls}(p_i, p_i^*) + \lambda \frac{1}{N_{reg}} \sum_i p_i^* L_{reg}(t_i, t_i^*)

Eq. 1: Função de Perda da Region Proposal Network (RPN).

Onde:

  • ii: índice da âncora sendo avaliada no lote.
  • pip_i: probabilidade predita de a âncora ii ser um objeto.
  • pip_i^*: ground truth binário (11 se a âncora for objeto, 00 se for fundo). Uma âncora é considerada objeto se tiver um IoU alto.
  • tit_i: vetor com os 4 deltas preditos do bounding box.
  • tit_i^*: vetor de ground truth contendo os deltas perfeitos da caixa.
  • LclsL_{cls}: função de perda de classificação (geralmente log loss binária).
  • LregL_{reg}: função de perda de regressão espacial (Smooth L1).
  • Ncls,NregN_{cls}, N_{reg}: termos de normalização.
  • λ\lambda: hiperparâmetro de balanceamento.
  • O termo piLregp_i^* L_{reg} garante que a regressão só seja calculada e penalizada se a âncora for de fato um objeto (pi=1p_i^* = 1).

A Unificação Fim-a-Fim

O pulo do gato é que a RPN compartilha o mesmo mapa de features convolucionais da rede de detecção final. Ou seja, gerar as propostas de região tornou-se um processo praticamente sem custo (leva apenas 10\sim 10 milissegundos).

As propostas geradas pela RPN passam por Non-Maximum Suppression (NMS, com IoU fixo em 0,70,7) para eliminar redundâncias, e apenas as 300300 propostas mais bem ranqueadas pelo score de objectness seguem adiante. Elas são então enviadas para uma camada de roi-pooling, que extrai vetores fixos para passar pelas camadas finais, onde a rede classifica (é um cachorro ou um carro?) e faz o refinamento final da bounding box.

Treinamento Alternado em 4 Passos

Treinar RPN e Fast R-CNN juntas de uma vez não converge trivialmente, pois o detector depende de propostas fixas. A solução pragmática do paper é a alternating optimization:

  1. Treina a RPN sozinha (inicializada com pesos pré-treinados na ImageNet).
  2. Treina o Fast R-CNN separadamente, usando as propostas da RPN do passo 1 — as duas redes ainda não compartilham convoluções.
  3. Reinicializa a RPN com os pesos do detector, congela as convoluções compartilhadas e ajusta só as camadas exclusivas da RPN. Agora as redes compartilham features.
  4. Ajusta só as camadas fully-connected do Fast R-CNN, mantendo as convoluções congeladas. Resultado: uma única rede unificada.

Resultados e Lições da Ablação

Com VGG-16, o sistema atinge 5 fps (198ms por imagem, contra 1830ms do pipeline com Selective Search) com 73,2%73,2\% de mAP no PASCAL VOC 2007 — e 17 fps com o backbone ZF. Os experimentos de ablação do paper valem tanto quanto os números finais:

  • Sem a camada cls (sem ranking por objectness), o mAP desaba de 56,8%56,8\% para 44,6%44,6\% com 100 propostas — o score de confiança é o que garante a qualidade do topo do ranking.
  • Sem a camada reg (âncoras cruas, sem regressão), o mAP cai para 52,1%52,1\% — as âncoras sozinhas não bastam; a regressão é o que refina as posições.
  • Two-stage vence one-stage: emular o estilo OverFeat (janelas densas em um único estágio) derruba o mAP em 4,8\sim 4,8 pontos, justificando a cascata proposta → detecção.

Referências e ferramentas


Relacionadas: fast-r-cnn · spp-net · roi-pooling · ablation-study · evolucao-mask-rcnn

Construído com Eleventy · busca por Lunr.js