Detecção de Objetos Reconheça e governe. Parte 1



A tecnologia de visão computacional permite que as realidades atuais tornem a vida e os negócios mais fáceis, mais baratos e mais seguros. De acordo com vários especialistas, este mercado vai passar nos próximos anos somente na direção do crescimento, o que permite o desenvolvimento de tecnologias apropriadas no sentido de produtividade e qualidade. Uma das seções mais populares é a Detecção de objetos (detecção de objetos) - a definição de um objeto na imagem ou no fluxo de vídeo.

Os tempos em que a detecção de objetos foi resolvida exclusivamente por meio do aprendizado de máquina clássico (cascatas, SVM ...) já passaram - agora abordagens baseadas no reinado de Aprendizado Profundo nesta área. Em 2014, foi proposta uma abordagem que influenciou significativamente a pesquisa e o desenvolvimento subsequentes nessa área - o modelo R-CNN. Suas melhorias subseqüentes (na forma de Fast R-CNN e Faster R-CNN) o tornaram um dos mais precisos, o que se tornou a razão de seu uso até hoje.

Além do R-CNN, existem muitas outras abordagens que procuram objetos: a família Yolo, SSD, RetinaNet, CenterNet ... Algumas oferecem uma abordagem alternativa, enquanto outras estão desenvolvendo a atual na direção de aumentar o indicador de desempenho. Uma discussão sobre quase cada um deles pode ser apresentada em um artigo separado, devido à abundância de fichas e truques :)

Para estudar, proponho um conjunto de artigos com análise de modelos de detecção de objetos em dois estágios. A capacidade de entender seu dispositivo traz uma compreensão das idéias básicas usadas em outras implementações. Neste post, consideraremos o mais básico e, consequentemente, o primeiro deles - R-CNN.

Terminologia


A caixa delimitadora - as coordenadas que delimitam uma área específica de uma imagem - geralmente na forma de um retângulo. Pode ser representado por 4 coordenadas em dois formatos: centralizado (cx,cy,w,h) e regular (xmin,ymin,xmax,ymax)

Hipótese (proposta), P - uma determinada região da imagem (especificada usando a caixa delimitadora) na qual o objeto está supostamente localizado.

Treinamento de ponta a ponta - treinamento no qual imagens brutas chegam à entrada da rede e respostas prontas.

IoU (Intersecção sobre união) - métrica do grau de interseção entre duas caixas delimitadoras.

R-CNN


Uma das primeiras abordagens aplicáveis ​​para determinar a localização de um objeto em uma imagem é a R-CNN (Rede Neural de Convolução de Região). Sua arquitetura consiste em várias etapas sucessivas e é ilustrada na Figura 1:

  1. Definindo um conjunto de hipóteses.
  2. Extrair recursos de regiões em potencial usando uma rede neural convolucional e codificá-los em um vetor.
  3. A classificação de um objeto dentro de uma hipótese baseada no vetor da etapa 2.
  4. Melhoria (ajuste) das coordenadas da hipótese.
  5. Tudo se repete da etapa 2 até que todas as hipóteses da etapa 1 sejam processadas.

Considere cada etapa com mais detalhes.



Pesquisa de Hipóteses


Tendo uma imagem específica na entrada, a primeira coisa é dividida em pequenas hipóteses de tamanhos diferentes. Os autores deste artigo usam a Pesquisa seletiva - de nível superior, que permite compilar um conjunto de hipóteses (a classe do objeto ainda não importa), com base na segmentação para determinar os limites dos objetos por intensidade de pixel, diferença de cor, contraste e textura. Ao mesmo tempo, os autores observam que qualquer algoritmo semelhante pode ser usado. Assim, destacam-se aproximadamente 2.000 regiões diferentes, que se sobrepõem parcialmente. Para um processamento subsequente mais preciso, cada hipótese é expandida ainda mais por 16 pixels em todas as 4 direções - como se estivesse adicionando contexto .

Total:

  • Entrada: imagem original.
  • Saída: um conjunto de hipóteses de diferentes tamanhos e proporções.

Codificação de imagem


Cada hipótese da etapa anterior, independente e separadamente, entra na entrada da rede neural convolucional. Como ele usa a arquitetura do AlexNet sem a última camada softmax. A principal tarefa da rede é codificar a imagem recebida em uma representação vetorial extraída da última camada FC7 totalmente conectada . Portanto, a saída é uma representação vetorial dimensional de 4096.

Você pode notar que a entrada do AlexNet tem uma dimensão de 3 × 227 × 227, e o tamanho da hipótese pode ser quase qualquer proporção e tamanho. Esse problema é contornado simplesmente comprimindo ou esticando a entrada para o tamanho desejado.

Total:

  • Entrada: cada hipótese proposta na etapa anterior.
  • Saída: representação vetorial para cada hipótese.

Classificação


Após a obtenção do vetor que caracteriza a hipótese, seu processamento posterior se torna possível. Para determinar qual objeto está localizado na região pretendida, os autores usam o método clássico de classificação de plano de separação baseado em SVM (Support Vector Machine - uma máquina de vetores de suporte, pode ser modelado usando a perda de dobradiça ). E deveria serNc+1 indivíduo (aqui, Ncdenota o número de classes definidas de objetos e uma unidade é adicionada para determinar separadamente o plano de fundo) dos modelos treinados de acordo com o princípio OvR (Um vs. Descanso - um contra todos, um dos métodos de classificação multiclasse). De fato, o problema de classificação binária está sendo resolvido - existe uma classe concreta de um objeto dentro da região proposta ou não. Então a saída éNc+1-dimensional vector representando confiança em uma classe específica do objeto contido na hipótese (o fundo é historicamente denotado pela classe zero,Ci=0)

Total:

  • Entrada: o vetor de cada uma das hipóteses propostas da penúltima camada da rede (no caso do AlexNet, esse é o FC7).
  • Resultado: após o lançamento seqüencial de cada hipótese, obtemos uma matriz de dimensão 2000×Ncrepresentando a classe do objeto para cada hipótese.

Especificação de coordenadas de hipóteses


As hipóteses obtidas na etapa 1 nem sempre contêm as coordenadas corretas (por exemplo, um objeto pode ser "recortado" sem êxito), portanto, faz sentido corrigi-las adicionalmente. Segundo os autores, isso traz um adicional de 3-4% para as métricas. Portanto, hipóteses contendo um objeto (a presença de um objeto é determinada na etapa de classificação) são processadas adicionalmente por regressão linear. Ou seja, hipóteses com a classe "background" não precisam de processamento adicional das regiões, pois, de fato, não há objeto ...

Cada objeto, específico de sua classe, possui determinados tamanhos e proporções, portanto, o que é lógico, é recomendável usar seu próprio regressor para cada classe .

Diferentemente da etapa anterior, os autores usam um não vetor da camada FC7 para que a entrada funcione melhore mapas de recursos extraídos da última camada do MaxPooling (no AlexNet, MaxPool5, dimensão 256 × 6 × 6). A explicação é a seguinte - o vetor armazena informações sobre a presença de um objeto com alguns detalhes de características, e o mapa de recursos melhor armazena informações sobre a localização dos objetos.

Total:

  • Entrada: um mapa de atributos da última camada MaxPooling para cada hipótese que contém qualquer objeto, exceto o plano de fundo.
  • Saída: correções nas coordenadas da caixa delimitadora da hipótese.

Truques do ajudante


Antes de prosseguir com os detalhes do treinamento do modelo, consideraremos dois truques necessários que precisaremos posteriormente.

Designação de hipóteses positivas e negativas


Ao ensinar com um professor, sempre é necessário um certo equilíbrio entre as aulas. O inverso pode levar a uma baixa precisão de classificação. Por exemplo, se em uma amostra com duas classes a primeira ocorre apenas em alguns por cento dos casos, é difícil para a rede aprender como determiná-la, porque ela pode ser interpretada como um desvio. No caso de tarefas de detecção de objetos, existe exatamente esse problema - na figura com um único objeto, apenas algumas hipóteses (de ~ 2000) contêm esse mesmo objeto (Ci>0) e todo mundo é o plano de fundo (Ci=0)

Aceitamos a notação necessária: hipóteses contendo objetos serão chamadas de positivas (positivas) e sem objetos (contendo apenas o fundo ou uma parte insignificante do objeto) - negativas (negativas).

Para determinar subseqüentemente a interseção entre as duas regiões da imagem, será usada a métrica Intersecção sobre União . É considerado bastante simples: a área de interseção de duas regiões é dividida pela área total das regiões. Na imagem abaixo, você pode ver ilustrações de exemplos de contagem de métricas.



Com hipóteses positivas, tudo fica claro - se a classe for definida incorretamente, você precisará ser multado. Mas e o negativo? Existem muito mais do que positivas ... Para começar, observamos que nem todas as hipóteses negativas são igualmente difíceis de reconhecer. Por exemplo, casos que contêm apenas o plano de fundo ( negativo fácil ) são muito mais fáceis de classificar do que conter outro objeto ou uma pequena parte do desejado ( negativo rígido ).

Na prática, o negativo fácil e o negativo duro são determinados pela interseção da caixa delimitadora (apenas usada Intersecção sobre união) com a posição correta do objeto na imagem. Por exemplo, se não houver interseção ou for extremamente pequeno, isso é facilmente negativo (Ci=0) se grande for difícil, negativo ou positivo.

A abordagem Mineração Negativa Rígida sugere o uso de apenas negativas rígidas para o treinamento, pois, depois de aprender a reconhecê-las, alcançamos automaticamente o melhor trabalho com hipóteses negativas fáceis. Mas essa ideologia será aplicada apenas em implementações subsequentes (começando com o Fast R-CNN).

Supressão não máxima


Muitas vezes, verifica-se que o modelo identifica várias hipóteses com grande confiança apontando para o mesmo objeto. Usando a supressão não máxima (NMS), você pode lidar com esses casos e deixar apenas uma, melhor, caixa delimitadora. Mas, ao mesmo tempo, não se esqueça do caso em que a imagem pode ter dois objetos diferentes da mesma classe. A Figura 3 ilustra o efeito da operação antes (esquerda) e depois (direita) da operação do algoritmo.



Considere o algoritmo para trabalhar em uma classe (na realidade, ele é aplicado a cada classe separadamente):

  1. Na entrada, a função usa um conjunto de hipóteses para uma classe e um limite que define a interseção máxima entre hipóteses.
  2. As hipóteses são classificadas por sua "confiança".
  3. No ciclo, a primeira hipótese é selecionada (tem o maior valor de confiança) e é adicionada ao conjunto de resultados.
  4. No ciclo, a segunda hipótese seguinte é selecionada (entre as que restam após a etapa 3).
  5. Se a interseção entre as hipóteses selecionadas for maior que o limite selecionado (a interseção é calculada com base na interseção da união), a segunda hipótese será descartada e não estará mais presente no conjunto de resultados.
  6. Tudo se repete da etapa 3 até que as hipóteses sejam completamente enumeradas.

O pseudocódigo é assim:

function nms(hypotheses, threshold):
    sorted = sort(hypotheses.values, key=hypotheses.scores)
    result = []
    for first in sorted:
        result.join(first)
        without_first = sorted / first
        for second in without_first:
            if IoU(first, second) > threshold:
                 sorted.remove(second)
    return result


Treinamento


O bloco de isolamento de hipóteses não pode ser aprendido.

Como a rede é dividida em vários blocos separados um do outro, ela não pode ser treinada de ponta a ponta. Portanto, o aprendizado é um processo seqüencial.

Treinamento de exibição de vetor


A rede pré-treinada no ImageNet é tomada como base - essas redes já podem extrair recursos importantes das imagens recebidas, resta treiná-las para trabalhar com as classes necessárias. Para fazer isso, altere a dimensão da camada de saída paraNce treine uma versão já modificada. As primeiras camadas podem ser bloqueadas porque extraem os recursos primários (quase idênticos para todas as imagens), e os subseqüentes durante o treinamento se adaptam aos recursos das classes desejadas. Portanto, a convergência será alcançada muito mais rapidamente. Mas se o treinamento ainda estiver indo mal, você pode desbloquear as camadas primárias. Uma vez que é necessário ajustar com precisão os pesos existentes. Não é recomendável usar uma alta taxa de aprendizado (taxa de aprendizado) - você pode limpar rapidamente os pesos existentes.

Quando a rede aprende a classificar bem os objetos, a última camada com a ativação do SoftMax é descartada e a camada FC7 se torna a saída, cuja saída, por sua vez, pode ser interpretada como uma representação vetorial da hipótese.

Positivas nesta etapa são hipóteses que se cruzam com a posição correta do objeto (IoU) em mais de 0,5. Todos os outros são considerados negativos. Para atualizar as escalas, é utilizado um 128 mini-lote, composto por 32 hipóteses positivas e 96 negativas.

Treinamento do Classificador


Deixe-me lembrá-lo, para classificar cada hipótese, Nc+1Os modelos SVM que recebem a entrada da representação vetorial da hipótese e com base no princípio de um contra o outro (Um vs Resto) determinam a classe do objeto. Eles são treinados como modelos SVM comuns, com uma exceção - nesta etapa, a definição de pontos positivos e negativos é um pouco diferente. Aqui, as hipóteses são consideradas negativas, cuja interseção com a posição correta é menor que 0,3.

Regressar Treinamento


Denotar:

  • G=(gx,gy,gw,gh)- as coordenadas corretas do objeto;
  • G^=(gx^,gy^,gw^,gh^)- posição corrigida das coordenadas das hipóteses (deve coincidir com G);
  • T=(tx,ty,tw,ty)- correções corretas nas coordenadas;
  • P=(px,py,pw,ph)- coordenadas da hipótese;

Portanto, os regressores (um para cada classe) representam quatro funções:

  • dx(P), dy(P)- determinar as correções nas coordenadas do centro (x,y) Para obter o efeito de independência do tamanho original, a correção deve ser normalizada.
  • dw(P)e dh(P)- determine as correções na largura e altura no espaço logarítmico (o espaço logarítmico é usado para estabilidade numérica e divisão - para determinar a direção da correção).

Denotar por φ5(P)mapa de características obtido de MaxPool5camada de rede (lembre-se, ela tem uma dimensão de 256 × 6 × 6 e é simplesmente esticada), quando uma hipótese é limitada às coordenadas aplicando-a à rede P. Vamos procurar uma transformaçãoP às Gcomo:

\ begin {align} Além disso
gx^=pwdx(P)+pxgy^=phdy(P)+pygw^=pwedw(P)gh^=phedh(P)

d(P)=wTφ5(P)(aqui (x,y,w,h)) é uma função linear e o vetor wé pesquisado usando o problema de otimização (regressão de cume):

w=argmaxw^iN(Tid(P))2+λwx^2


Para determinar as correções nas coordenadas, coletamos pares entre a posição correta das hipóteses Ge seu estado atual Pe defina os valores Tcomo:

\ begin {align} A notação nas fórmulas contidas neste artigo pode ser diferente da notação do artigo original para melhor compreensão. Como existem ~ 2000 hipóteses na saída da rede, elas são combinadas usando a supressão não máxima. Os autores do artigo também indicam que, se em vez de SVM você usar a camada SoftMax (que foi dobrada na segunda etapa), a precisão cai em ~ 4-4,5% (conjunto de dados VOC 2007), mas eles observam que o melhor "ajuste" das escalas provavelmente ajudará a se livrar de tal problema.
Tx=gxpxpwTy=gypyphTw=loggwpwTh=logghph





Concluindo, destacamos as principais desvantagens dessa abordagem:


  1. As hipóteses propostas na etapa 1 podem se duplicar parcialmente - hipóteses diferentes podem consistir em partes idênticas, e cada uma dessas hipóteses foi processada separadamente por uma rede neural. Acontece que a maioria das redes é duplicada mais ou menos desnecessariamente.
  2. Ele não pode ser usado para operação em tempo real, pois são gastos ~ 53 segundos na passagem de 1 imagem (quadro) (GPU NVIDIA Titan Black).
  3. O algoritmo de extração de hipóteses não é ensinado de maneira alguma e, portanto, é quase impossível melhorar ainda mais a qualidade (ninguém cancelou hipóteses ruins).

Isso analisa o primeiro modelo da R-CNN. Implementações mais avançadas (na forma de Fast R-CNN e Faster R-CNN) são discutidas em um artigo separado .

Bibliografia


1. R. Girshick, J. Donahue, T. Darrell e J. Malik. “Hierarquias ricas em recursos para detecção precisa de objetos e segmentação semântica.” No CVPR, 2014. arXiv: 1311.2524

2. R. Girshick, J. Donahue, T. Darrell e J. Malik. “Redes convolucionais baseadas na região para detecção e segmentação precisa de objetos.” TPAMI, 2015

Publicado por: Sergey Mikhaylin, Especialista em aprendizado de máquina, Jet Infosystems

All Articles