R-CNN

Regions with CNN features

O R-CNN foi a primeira grande arquitetura a aplicar Redes Neurais Convolucionais para a tarefa de detecção de objetos, pavimentando o caminho para modelos como o fast-r-cnn.

Como Funciona

A arquitetura do R-CNN (Girshick et al., 2014) opera em quatro etapas sequenciais:

  1. Proposta de Regiões: Utiliza um algoritmo externo e não-neural chamado Selective Search para encontrar cerca de 2.000 regiões (bounding boxes) que possivelmente contêm objetos na imagem.
  2. Warping: Como as CNNs exigem entradas de tamanho fixo, cada uma dessas 2.000 regiões é redimensionada (warped) para um tamanho padrão (ex: 227x227).
  3. Extração de Features: A grande novidade: cada uma das 2.000 regiões é passada independentemente por uma CNN (geralmente a AlexNet) para extrair um vetor de features.
  4. Classificação e Regressão:
    • O vetor de features é passado para SVMs lineares (uma para cada classe) para classificar o objeto.

    • O vetor também alimenta um regressor linear que faz ajustes finos nas coordenadas do bounding box. Esse regressor aprende a transformar a proposta inicial PP na caixa de ground truth predita G^\hat{G} através de translações e transformações de escala:

      g^x=pwdx(P)+px,g^y=phdy(P)+py\hat{g}_x = p_w d_x(P) + p_x, \quad \hat{g}_y = p_h d_y(P) + p_y

      g^w=pwexp(dw(P)),g^h=phexp(dh(P))\hat{g}_w = p_w \exp(d_w(P)), \quad \hat{g}_h = p_h \exp(d_h(P))

      Eq. 1: Transformações de translação e escala na regressão linear de Bounding Box do R-CNN.

      Onde:

      • g^x,g^y,g^w,g^h\hat{g}_x, \hat{g}_y, \hat{g}_w, \hat{g}_h: coordenadas do centro (x,y)(x,y), largura e altura da bounding box refinada.
      • px,py,pw,php_x, p_y, p_w, p_h: coordenadas do centro (x,y)(x,y), largura e altura da region proposal (proposta de região) original PP.
      • dx,dy,dw,dhd_x, d_y, d_w, d_h: transformações lineares aprendidas pelo regressor (os offsets ou deltas preditos).

O Problema do R-CNN (Por que evoluiu?)

Apesar de revolucionário na precisão, o R-CNN tinha problemas críticos de performance:

  • ⚠️ Extremamente Lento: Como a CNN roda independentemente para ~2.000 regiões por imagem, não há compartilhamento de computação. A inferência levava quase 50 segundos por imagem.
  • ⚠️ Treinamento Complexo: Era um pipeline multi-estágio (treinar a CNN, depois as SVMs, depois os regressores). Não era um treinamento ponta-a-ponta (end-to-end).

Relacionadas: fast-r-cnn · object-detection

Construído com Eleventy · busca por Lunr.js