Amigos, continuaremos a história sobre redes neurais que começamos da última vez e sobre como a tecnologia de reconhecimento facial funciona.

O que é uma rede neural?

Uma rede neural no caso mais simples é um modelo matemático que consiste em várias camadas de elementos que executam cálculos paralelos. Inicialmente, essa arquitetura foi criada por analogia com os menores elementos computacionais do cérebro humano — neurônios. Os elementos computacionais mínimos de uma rede neural artificial também são chamados de neurônios. As redes neurais geralmente consistem de três ou mais camadas: a camada de entrada, a camada oculta (ou camadas) e a camada de saída (Fig. 1); em alguns casos, as camadas de entrada e saída não são levadas em consideração e, em seguida, o número de camadas na rede é calculado pelo número de camadas ocultas. Esse tipo de rede neural é chamado de perceptron.

O perceptron mais simples
Fig. 1. O perceptron mais simples

Uma característica importante de uma rede neural é sua capacidade de aprender com os exemplos, isso é chamado de aprendizagem com um professor. A rede neural é treinada em um grande número de exemplos, consistindo em pares de entrada-saída (entrada e saída correspondentes). Nas tarefas de reconhecimento de objetos, esse par será a imagem de entrada e a etiqueta correspondente — o nome do objeto.

O treinamento da rede neural é um processo interativo que reduz o desvio da saída da rede de uma determinada «resposta do professor» — a etiqueta correspondente a esta imagem (Fig. 2). Esse processo é formado de etapas chamadas épocas de aprendizado (geralmente são de milhares), em cada uma das quais os «pesos» da rede neural são ajustados — os parâmetros das camadas ocultas da rede.

Após a conclusão do processo de treinamento, a qualidade da rede neural geralmente é boa o suficiente para concluir a tarefa para a qual foi treinada, embora muitas vezes seja impossível selecionar o conjunto ideal de parâmetros que reconheça idealmente todas as imagens.

Fig. 2. Treinamento da rede neural

O que são as redes neurais profundas

Redes neurais profundas são as redes neurais que consistem em várias camadas ocultas (Fig. 3). Esta imagem é uma imagem de uma rede neural profunda, dando uma ideia geral de como é uma rede neural. No entanto, a arquitetura real das redes neurais profundas é muito mais complicada.

Figure 3. Uma rede neural com muitas camadas ocultas

Os criadores de redes neurais convolucionais foram inspirados de início pelas estruturas biológicas do sistema visual. Os primeiros modelos computacionais baseados no conceito de organização hierárquica do fluxo visual de um primata são conhecidos como Neocognitron [1] de Fokushima (Fig. 4). Uma compreensão moderna da fisiologia do sistema visual é semelhante ao tipo de processamento de informações em redes convolucionais, pelo menos para o reconhecimento rápido de objetos.

Figure 4. Um diagrama mostrando as conexões entre as camadas no modelo Neocognitron [1].

Mais tarde, esse conceito foi implementado pelo pesquisador canadense Ian LeKun em sua rede neural convolucional, criada por ele para reconhecer caracteres manuscritos [2]. Essa rede neural consistia de dois tipos de camadas: camadas convolucionais e camadas de subamostragem (ou camadas de pool). Nesta rede, cada camada possui uma estrutura topográfica, ou seja, cada neurônio está associado a um ponto fixo na imagem original, bem como ao campo receptivo (a área da imagem de entrada que é processada por esse neurônio).

Em cada local de cada camada, há vários neurônios diferentes, cada um com seu próprio conjunto de pesos de entrada associados a neurônios em um fragmento retangular da camada anterior. Diferentes fragmentos retangulares de entrada com o mesmo conjunto de pesos estão associados a neurônios de diferentes locais.

A arquitetura geral da rede neural profunda para reconhecimento de imagens é mostrada na Figura 5. A imagem de entrada é representada como um conjunto de pixels ou pequenas seções da imagem (por exemplo, 5 por 5 pixels)

Fig. 5. Diagrama de rede neural convolucional

Normalmente, as redes neurais profundas são representadas de forma simplificada: como etapas de processamento, às vezes chamados de filtros. Cada etapa é diferente do outro com uma série de características: o tamanho do campo receptivo, o tipo de características que a rede aprende a reconhecer nessa camada e o tipo de cálculo realizado em cada etapa.

As áreas de uso das redes neurais profundas, incluindo as redes convolucionais, não se limitam ao reconhecimento facial. Elas são amplamente utilizadas para reconhecimento de voz e sinais de áudio, para processar leituras de vários tipos de sensores ou para segmentar imagens complicadas de várias camadas (como mapas de satélite [3]) ou imagens médicas (raios-x, imagens da Ressonância magnética funcional, veja aqui). Elas são aplicadas na área de segurança, no setor financeiro e muito mais.

Redes neurais em biometria e reconhecimento facial

Para alcançar a alta precisão de reconhecimento, a rede neural é pré-treinada em uma grande variedade de imagens, por exemplo, como no banco de dados MegaFace. Este é o principal método de treinamento para reconhecimento facial.

Fig. 6. O banco de dados MegaFace contém 1 milhão de imagens de mais de 690 mil pessoas

Depois que a rede foi treinada para reconhecer faces de pessoas, o processo de reconhecimento facial pode ser descrito da seguinte maneira (Fig. 7). Primeiro, a imagem é processada usando um detector facial: um algoritmo que determina um fragmento retangular de uma imagem com um rosto.

Esse fragmento é normalizado para ser processado de maneira mais fácil pela rede neural: o melhor resultado será alcançado se todas as imagens de entrada tiverem o mesmo tamanho, cor, etc. A imagem normalizada é direcionada para entrada da rede neural para ser processada pelo algoritmo. Esse algoritmo geralmente é de desenvolvimento exclusivo da empresa para melhorar a qualidade do reconhecimento, mas também existem soluções «padrão» para essa tarefa. A rede neural cria um vetor exclusivo de características, que depois é transferido para o banco de dados.

O sistema de busca compara estes vetores com todos os vetores de características, armazenados no banco de dados, e proporciona o resultado de busca na forma de um determinado número de nomes de usuários ou perfis com características faciais semelhantes, cada um dos quais recebe um número específico. Esse número representa o grau de semelhança do nosso vetor de características com o encontrado no banco de dados.

Fig. 7. Processo de reconhecimento facial

Determinação da qualidade do algoritmo

Precisão

Usando a inteligência artificial como reconhecimento facial, ao escolher qual algoritmo usar na tarefa de reconhecer um objeto ou rosto, precisamos ter um meio de comparar a eficácia de vários algoritmos. Nesta parte, descrevemos as ferramentas com as quais isso é feito [5].

A avaliação da qualidade do sistema de reconhecimento facial é realizada usando um conjunto de métricas que correspondem aos casos de uso típicos do sistema para autenticação usando biometria. Normalmente, o funcionamento de qualquer rede neural pode ser medida em termos de precisão: depois de definir os parâmetros e concluir o processo de aprendizado, a rede é testada em um conjunto de testes, para o qual temos a resposta de um professor, mas que é separado do conjunto de treinamento. Geralmente, esse parâmetro é uma medida quantitativa: um número (geralmente em porcentagem), que mostra o quanto o sistema é capaz de reconhecer novos objetos. Outra medida típica é um erro (pode ser em porcentagem e em equivalente numérico). No entanto, existem medidas mais precisas para biometria. Na biometria em geral e na biometria para reconhecimento facial, em particular, existem dois tipos de aplicações: verificação e identificação. A verificação é o processo de confirmação de uma pessoa específica, comparando uma imagem de um indivíduo (um vetor de sinais faciais ou outro vetor de sinais, por exemplo, uma retina ou impressões digitais) com um ou mais modelos salvos anteriormente. A identificação é um processo de determinação da identidade de um indivíduo. As amostras biométricas são coletadas e comparadas com todos os modelos no banco de dados.

Existe identificação em um conjunto fechado de sinais se for assumido que uma pessoa existe no banco de dados. Assim, o reconhecimento combina um ou ambos os termos — verificação e identificação.Frequentemente, além do resultado direto da comparação, é necessário avaliar o nível de «confiança» do sistema em sua decisão. Esse valor é chamado de termo «nível de similaridade» (similarity score). Um índice de similaridade maior indica que as duas amostras biométricas comparadas são mais semelhantes.

BIBLIOGRAFIA

  1. Fukushima, «Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position,» Biological Cybernetics, 1980.
  2. LeCun, B. Boser, J.S. Denker, D. Henderson, R.E. Howard, W. Hubbard and L.D. Jackel. «Backpropagation Applied to Handwritten Zip Code Recognition», Neural Computation, vol. 1, pp., 541−551,1989.
  3. Ian Goodfellow, Yoshua Bengio, Aaron Courville (2016) Deep Learning. MIT press.
  4. Jiaxuan You, Xiaocheng Li, Melvin Low, David Lobell, Stefano Ermon Deep Gaussian Process for Crop Yield Prediction Based on Remote Sensing Data.
  5. How computers are learning to be creative (TED)