Yah subtitle is correct, FPN é um método muito simples que pode ser usado com quase qualquer modelo para melhorar os resultados. Em breve entraremos em detalhes técnicos do artigo, mas para este blog, há alguns pré-requisitos. Você deve ter uma idéia de alto nível sobre os seguintes Fast RCNN, Faster RCNN, anchor boxes, conhecimento de SSD virá a calhar. Eu também tenho blogs para todos esses artigos, você pode checá-los (links no final deste blog). FPN é relativamente mais simples se você entender bem todos os pré-requisitos.
Image pyramids(múltiplas imagens de múltiplas escalas) são frequentemente usadas no momento das previsões para melhorar os resultados. Mas computar resultados usando arquiteturas modernas de aprendizagem profunda é frequentemente um processo caro tanto em termos de computação quanto de tempo.
FPN é baseado na exploração da hierarquia piramidal multi-escala inerente da CNN profunda. É análogo à diferença entre RCNN e Fast RCNN, RCNN é um detector de objetos baseado na região, no qual primeiro encontramos ROI’s usando um algoritmo como a busca seletiva e depois recortamos esses ROI’s (cerca de 2000) da imagem e os alimentamos na CNN para obter resultados e no Fast RCNN as camadas iniciais da CNN são compartilhadas para a imagem completa e o corte do ROI é feito no mapa de características extraído, economizando assim muito tempo. No caso da FPN, a pesquisa é baseada na exploração da natureza multi-escala interna, e a pirâmide de imagens é de alguma forma implementada internamente para a arquitetura e compartilhamento da maioria das partes da rede. Vamos saltar para detalhes técnicos agora.
CNN é baseado na estrutura hierárquica em que a resolução do mapa de características é reduzida após cada camada, mas a semântica capturada por cada camada mais profunda é mais forte do que a camada anterior. As características semanticamente mais fortes são espacialmente mais grosseiras devido a downsampling. A FPN cria uma arquitetura onde as características semanticamente mais fortes são fundidas com as características das camadas anteriores (que são subamostragens menos vezes e, portanto, têm informações de localização mais precisas).
A arquitectura consiste em dois caminhos:
- Percurso de baixo para cima (Normal feed-forward CNN)
- Percurso de cima para baixo (Nova arquitetura usada para fundir características)
- É a arquitetura CNN de alimentação normal. No artigo, os autores utilizaram a arquitetura Resnet para avaliação do desempenho. Vamos nomear as camadas como C2, C3, C4, C5 que são Conv 2,3,4 e 5 camadas na arquitetura Resnet. O tamanho do mapa de características depois de aplicar C2 é imageize/4 e esta dimensão espacial é reduzida por um fator de 2 após cada camada.
Top-down pathway (Pirâmide direita na imagem acima)
Neste caminho, características mais profundas são mescladas com características mais baixas usando conexões laterais. Como o número de canais de camadas no caminho de baixo para cima não é o mesmo, uma convolução de 1*1 é aplicada primeiro para obter um número fixo de canais para cada camada (esta dimensão é mantida 256 no papel). O tamanho espacial também é diferente, assim, nós aumentamos as características mais profundas(2x) para que o tamanho espacial desta característica seja combinado com um mapa de características de maior resolução da camada anterior no caminho de baixo para baixo. Agora as dimensões de dois mapas de características são as mesmas e eles são fundidos por adição de element-wise.
Nós podemos entender isso com um exemplo. Digamos que o tamanho da nossa imagem é 512*512, agora o tamanho do mapa de características após cada camada de convolução (C2, C3, C4, C5) será . O número de canais de saída de cada camada é . Agora aplicamos uma convolução de 1*1(com número de canais de saída = 256) nas saídas de C2, C3, C4, C5 para obter um número igual de canais. Vamos chamar estas características intermediárias com o mesmo número de canais de saída que S2, S3, S4, S5 correspondentes a C2, C3, C4, C5. Agora o S5 é ampliado para 32*32 e fundido com o S4 usando a adição no sentido dos elementos. Agora, esta saída será ampliada para 64*64 e será mesclada com S3 e assim por diante. Vamos chamar as saídas deste estágio como T2, T3, T4, T5.
Para reduzir o efeito de aliasing por causa do upsampling uma convolução 3*3 é aplicada em T2, T3, T4, T5 para obter nossos mapas de características finais P2, P3, P4, P5 correspondentes a C2, C3, C4, C5. Estas características são usadas para gerar a classificação final e as pontuações de regressão(bbox). Os parâmetros para a cabeça podem ser compartilhados e a cabeça separada não dá nenhum benefício adicional.
É isso na teoria da FPN. Mas veremos como a FPN pode ser implementada para RCNN mais rápido e RCNN rápido.
FPN para RCNN mais rápido
Faster RCNN usa rede de proposta de região. RPN é usado para gerar propostas de caixas de delimitação e essas propostas são posteriormente usadas para gerar previsões finais. RPN é uma pequena rede que é implementada sobre as características extraídas da última camada(C5). Uma convolução 3*3 é aplicada a esta funcionalidade extraída seguida por duas camadas semelhantes de convolução 1*1 (uma para classificação e outra para regressão).
RPN é aqui adaptada através da simples substituição de um mapa de funcionalidades de escala única por FPN. Assim, agora a RPN é implementada para P2-P5 e não apenas para C5. Para a formação de RPN, são utilizadas caixas de ancoragem de múltiplas escalas. Mas como a multiescala é agora inerente à funcionalidade extraída, não é necessário ter caixas de ancoragem de múltiplas escalas em nenhum dos níveis. Em vez disso, uma única caixa de âncora de escala é atribuída a cada nível. O tamanho das caixas de ancoragem utilizadas no papel é {32², 64², 128², 256², 512²} para {P2, P3, P4, P5, P6}. P6 é aqui introduzido para que uma caixa de ancoragem de tamanho grande possa ser usada. P6 é subamostragem de P5 com passo 2. As caixas de ancoragem de {1:1, 1:2, 2:1} são usadas.
Estas caixas de ancoragem são combinadas com caixas de verdade de terra e o modelo é treinado de ponta a ponta.
FPN para RCNN rápido
A implementação da FPN em RCNN rápido é muito simples. Fast RCNN usa técnicas de proposta regional como a busca seletiva para gerar ROI e usa o ROI pooling no mapa de características em escala única para obter resultados finais. Ao aplicar a FPN teremos vários mapas de características de diferentes escalas e precisamos de uma estratégia para atribuir dado ROI ao mapa de características (agora temos vários mapas de características, que mapa de características usar para dado ROI?).
O mapa de características utilizado é calculado usando:
Aqui 224 é o tamanho de treino da imagem no conjunto de dados imagenet(resnet utilizado é retido no imagenet). k0 é o mapa de características ao qual é atribuído o ROI do tamanho 224, w e h é a largura e altura do ROI. A cabeça tem parâmetros partilhados para cada mapa de características.