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:
- 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.
- 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).
- 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.
- 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 na caixa de ground truth predita através de translações e transformações de escala:
Eq. 1: Transformações de translação e escala na regressão linear de Bounding Box do R-CNN.
Onde:
- : coordenadas do centro , largura e altura da bounding box refinada.
- : coordenadas do centro , largura e altura da region proposal (proposta de região) original .
- : 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