No último post, comecei a entender os modelos de detecção de objetos em dois estágios e falei sobre o mais básico e, portanto, o primeiro deles - o R-CNN . Hoje, olhamos para outros modelos dessa família: Fast R-CNN e Faster R-CNN . Vai!R-cnn rápido
Como a R-CNN é uma rede lenta e pouco eficiente, os mesmos autores propuseram rapidamente uma melhoria na forma de uma rede Fast R-CNN .O processo de processamento de imagem mudou e se parece com o seguinte:- Extrair um mapa dos atributos da imagem (não para cada hipótese separadamente, mas para toda a imagem);
- Pesquisa de hipóteses (semelhante ao R-CNN com base na Pesquisa Seletiva);
- – .. ( );
- ( , SVM-).
RoI layer
No conceito original da R-CNN, cada hipótese proposta é processada individualmente usando a CNN - essa abordagem se tornou um tipo de gargalo. Para resolver esse problema, uma camada de Região de Interesse (RoI) foi desenvolvida . Essa camada permite processar uma vez a imagem inteira usando a rede neural, recebendo na saída um mapa de características, que é usado para processar cada hipótese.A principal tarefa da camada RoI é comparar as coordenadas das hipóteses (coordenadas da caixa delimitadora) com as coordenadas correspondentes do mapa de feições. Fazendo uma “fatia” do mapa de recursos, a camada RoI o alimenta na entrada da camada totalmente conectada para a determinação subsequente da classe e correções nas coordenadas (consulte as seções a seguir).Surge uma questão lógica - como aplicar hipóteses de diferentes tamanhos e proporções à entrada de uma camada totalmente conectada? Para isso, é necessária uma camada RoI, que converte a imagem em dimensões no tamanho . Para fazer isso, você precisa dividir a imagem original em uma grade de tamanho (tamanho da célula aproximadamente ) e, em cada célula, selecione o número máximo.Suponha que exista um mapa de características 5 × 5 e a hipótese desejada neste mapa tenha coordenadas (1,1,4,5) (as duas primeiras coordenadas são o canto superior esquerdo, as duas últimas são o canto inferior direito). A camada totalmente conectada subsequente espera uma dimensão 4 × 1 (isto é, uma matriz 2 × 2 alongada). Em seguida, dividimos a hipótese em blocos desiguais de diferentes dimensões (o estágio Pooling) e obtemos o número máximo em cada uma delas (o estágio Pooling e, como resultado, o estágio Output).Assim, torna-se possível processar toda a imagem e, em seguida, trabalhar com cada hipótese com base em um mapa de características.Total:- Entrada: coordenadas da hipótese e um mapa de características da imagem original;
- Saída: representação vetorial da hipótese.
Camada totalmente conectada e suas saídas
Na versão anterior do R-CNN, foram utilizados classificadores SVM separados, na mesma implementação foram substituídos por uma saída de dimensão SoftMax . Note-se que a perda de precisão é inferior a 1%.A saída dos regressores é processada usando NMS (supressão não máxima).Total:- Entrada: representação vetorial da hipótese;
- Saída: probabilidades de hipótese pertencentes a classes e correções nas coordenadas da caixa delimitadora.
Perda de múltiplas tarefas
No treinamento simultâneo da rede, uma função de perda especial é usada para as tarefas de regressão da caixa delimitadora e classificação:
Aqui:Treinamento
Para uma melhor convergência, os autores usaram a seguinte abordagem para a formação do lote:- O número de hipóteses no lote é selecionado .
- Selecionado aleatoriamente imagens.
- Para cada um imagens tiradas hipóteses (ou seja, uniformemente em cada imagem).
Ao mesmo tempo, hipóteses positivas (25% do lote inteiro) e negativas (75% do lote inteiro) são incluídas em R. As hipóteses que se sobrepõem à localização correta do objeto em mais de 0,5 (IoU) são consideradas positivas. As negativas são tomadas de acordo com a regra Mineração Negativa Rígida - as instâncias mais errôneas (aquelas com IoU no intervalo [0,1,0,5).Além disso, os autores argumentam que com os parâmetros e a rede aprende muitas vezes mais rápido do que com e (ou seja, uma hipótese de cada imagem).R-cnn mais rápido
Uma melhoria lógica adicional é uma maneira de eliminar a dependência do algoritmo de Pesquisa Seletiva. Para fazer isso, representaremos todo o sistema como uma composição de dois módulos - a definição de hipóteses e seu processamento. O primeiro módulo será implementado usando a Rede de Proposta de Região (RPN) e o segundo é semelhante ao Fast R-CNN (começando com a camada RoI).Portanto, desta vez, o processo de trabalhar com a imagem mudou e agora acontece da seguinte maneira:- Removendo um mapa de recursos de imagem usando uma rede neural;
- Geração baseada no mapa obtido de sinais de hipóteses - determinação de coordenadas aproximadas e presença de um objeto de qualquer classe;
- Comparação de coordenadas de hipóteses usando RoI com um mapa de características obtido na primeira etapa;
- Classificação de hipóteses (já para a definição de uma classe específica) e refinamento adicional de coordenadas (de fato, pode não se aplicar).
A principal melhoria ocorreu precisamente no local em que as hipóteses foram geradas - agora, para isso, existe uma pequena rede neural separada, chamada Rede de Proposta de Região .Rede de propostas regionais
O objetivo final deste módulo é substituir completamente o algoritmo de busca seletiva. Para uma operação mais rápida, são necessários pesos comuns com uma rede que extrai os atributos necessários. Portanto, a entrada RPN é um mapa de recursos obtido após esta rede. Os autores do artigo original usam a rede VGG16 para extrair recursos, cuja saída é considerada a última camada convolucional - conv5_3. Essa rede possui as seguintes características do campo receptivo :- Compressão efetiva (avanços efetivos, ): dezesseis
- Tamanho do campo receptivo ): 196
Isso significa que o mapa de recursos será 16 vezes menor que o tamanho da imagem original (o número de canais é 512) e cada valor em suas células é afetado pelos pixels da imagem original em um retângulo de 196 × 196. Portanto, se você usar a entrada padrão VGG16 224 × 224, quase toda a imagem afetará a formação do valor da célula central do mapa de feições (14.14)! Com base no mapa de recursos recebido, o RPN para cada célula produz hipóteses (na implementação original ) tamanhos e proporções diferentes. Portanto, para o tamanho padrão, são 14 × 14 × 9 = 1764 hipóteses!Com base na imagem abaixo, consideramos o algoritmo do módulo RPN em mais detalhes (imagem clicável):
- .
- 3×3 ( – ). , (, ).
- 1×1 ( ):
- (cls) – - ( 2 ).
- (reg) – .
Observe que os vetores obtidos podem ser transformados em matrizes e . Assim, obtemos as matrizes, onde a linha corresponde aos valores para uma hipótese específica.
Surge uma questão lógica: como as coordenadas absolutas das hipóteses podem ser determinadas a partir do vetor que entra na camada de registro? A resposta é simples - de jeito nenhum. Para a determinação correta das coordenadas, é necessário usar as chamadas âncoras e correções em suas coordenadas.Uma âncora é um quadrilátero de diferentes proporções (1: 1, 2: 1, 1: 2) e tamanhos (128 × 128, 256 × 256, 512 × 512). O centro da âncora é o centro da célula () sinais de cartão. Então, por exemplo, vamos pegar uma célula (7,7), cujo centro são os valores (7,5,7,5), que correspondem às coordenadas (120,120) da imagem original (16 × 7,5). Compare com essas coordenadas os retângulos de três proporções e três tamanhos (um total de 3 × 3 = 9). No futuro, a camada de registro produzirá edições apropriadas com relação a essas coordenadas, ajustando assim a localização e a forma da caixa delimitadora.Total:- Entrada: mapa de características da imagem original;
- Saída: hipóteses contendo um objeto.
Função de perda
Para o treinamento de RPN, a seguinte notação de classe é usada:- Positivas são todas as âncoras com uma interseção (IoU) superior a 0,7 ou com a maior interseção entre todas as âncoras (aplica-se se não houver interseção superior a 0,7).
- Negativas são todas as âncoras com uma interseção menor que 0,3.
- Todas as outras âncoras não participam do treinamento (na verdade, são neutras).
Então a turma as âncoras são concedidas de acordo com a seguinte regra:
Com essa notação, a seguinte função é minimizada:
Aqui:- - número da âncora;
- - a probabilidade de encontrar o objeto em âncora;
- - o número correto da classe (indicado acima);
- - 4 correções previstas nas coordenadas;
- - correções esperadas (verdade do solo) nas coordenadas;
- - perda de log binária;
- - perda SmoothL1. Ativado somente se, ou seja, se a hipótese contiver pelo menos algum objeto;
- e - resultados dos modelos de classificação e regressão, respectivamente;
- - coeficiente para ajustar o equilíbrio entre classificação e regressão.
Ambas as partes da perda combinada normalizam para e respectivamente. Os autores usaram igual ao tamanho do mini lote (256) e igual ao número de âncoras.Para regredir correções para a caixa delimitadora, os valores são inicializados e calculados da seguinte maneira:
Aqui , , e indica o centro, a largura e a altura da caixa delimitadora. Variáveis, e denotar predição, verdade básica e significado das âncoras (por , e similarmente).O treinamento na lista completa de âncoras terá um viés em relação à classe negativa (há muito mais hipóteses com essa classe). A este respeito, o mini lote é formado em uma proporção de 1: 1 de âncoras positivas para negativas. Se não for possível encontrar o número apropriado de âncoras positivas, o minilote é complementado com a ajuda de classes negativas.Treinamento geral em rede
O objetivo principal é o uso conjunto de balanças entre os dois módulos - isso aumentará a velocidade do trabalho. Como é impossível (ou bastante difícil) treinar dois módulos independentes ao mesmo tempo, os autores do artigo usam uma abordagem iterativa:- Rede de treinamento RPN. As camadas convolucionais são inicializadas com pesos obtidos anteriormente durante o treinamento no ImageNet. Vamos treinar a tarefa de definir regiões com qualquer classe (a especificação da classe faz parte do Fast R-CNN).
- Rede rápida de treinamento da R-CNN. Como na etapa 1, inicializamos o Fast R-CNN com os pesos obtidos anteriormente durante o treinamento no ImageNet. Nós treinamos novamente usando hipóteses sobre objetos usando a rede RPN treinada no item 1. Desta vez, a tarefa do treinamento é esclarecer as coordenadas e determinar a classe específica do objeto.
- Usando os pesos da página 2, treinamos apenas a parte RPN (as camadas que vão para as redes RPN pertencentes ao extrator de recursos são congeladas e não são alteradas).
- Usando os pesos da página 3 (ou seja, o RPN mais refinado), treinamos as camadas do Fast R-CNN (os pesos restantes - aqueles que vão mais cedo ou estão relacionados ao RPN - são congelados).
Com a ajuda de um treinamento iterativo, verifica-se que toda a rede é construída nas mesmas escalas. Você pode continuar treinando a rede nesse princípio, mas os autores observam que não há grandes alterações nas métricas.Processo de previsão
Ao usar redes neurais para previsões, a propagação da imagem se parece com isso:- A imagem entra na entrada da rede neural, gerando um mapa de características.
- Cada célula do mapa de características é processada usando RPN, resultando na correção da posição das âncoras e na probabilidade da presença de um objeto de qualquer classe.
- Os quadros previstos correspondentes são então baseados no mapa de recursos e na camada RoI para processamento adicional da peça Fast R-CNN.
- Na saída, obtemos uma classe específica de objetos e sua posição exata na imagem.
Resumo das diferenças
Aqui está um breve resumo dos modelos entre si (idéias básicas são herdadas do mais jovem para o mais velho):R-CNN:- Usando a Pesquisa Seletiva como gerador de hipóteses.
- Usando SVM + Ridge para classificação e regressão de hipóteses (além disso, sua operação paralela não é possível).
- Executando uma rede neural para processar cada hipótese individualmente.
- Baixa velocidade.
R-CNN rápido:- Uma rede neural é lançada apenas uma vez por imagem - todas as hipóteses são testadas com base em um único mapa de recursos.
- Processamento inteligente de hipóteses de diferentes tamanhos devido à camada RoI.
- Substituindo SVN por uma camada SoftMax.
- A possibilidade de classificação e regressão paralela do trabalho.
R-CNN mais rápido:- Geração de hipóteses usando um módulo especial diferenciável separadamente.
- Alterações no processamento de imagens associadas ao advento do módulo RPN.
- O mais rápido desses três modelos.
- É um dos mais precisos até hoje.
Conclusão
Em conclusão, podemos dizer que o desenvolvimento do R-CNN mudou de algoritmos díspares que resolvem um problema em direção a uma única solução de ponta a ponta. Essa combinação permite tornar quase qualquer abordagem mais precisa e produtiva; a detecção de objetos não foi uma exceção.Bibliografia
- R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Rich feature hierarchies for accurate object detection and semantic segmentation.» In CVPR, 2014. arXiv:1311.2524
- R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Region-based convolutional networks for accurate object detection and segmentation.» TPAMI, 2015
- R. Girshick, «Fast R-CNN,» in IEEE International Conference on Computer Vision (ICCV), 2015.
- S. Ren, K. He, R. Girshick, and J. Sun, «Faster R-CNN: Towards real-time object detection with region proposal networks,» in Neural Information Processing Systems (NIPS), 2015.