Modelos e plataformas de IA

DeepFace para Reconhecimento Facial Avançado

mm
Adicione Unite.AI às suas fontes preferidas no Google

O reconhecimento facial tem sido um campo em tendência em IA e ML por vários anos, e as implicações culturais e sociais generalizadas do reconhecimento facial são de longo alcance. No entanto, existe uma lacuna de desempenho entre os sistemas visuais humanos e as máquinas que atualmente limitam as aplicações do reconhecimento facial.

Para superar o buffer criado pela lacuna de desempenho e entregar precisão de nível humano, a Meta introduziu o DeepFace, um framework de reconhecimento facial. O modelo DeepFace é treinado em um grande conjunto de dados faciais que difere significativamente dos conjuntos de dados usados para construir os benchmarks de avaliação, e ele tem o potencial de superar os frameworks existentes com adaptações mínimas. Além disso, o framework DeepFace produz representações faciais compactas quando comparado a outros sistemas que produzem milhares de recursos de aparência facial.

O framework DeepFace proposto usa Aprendizado Profundo para treinar em um grande conjunto de dados consistindo em diferentes formas de dados, incluindo imagens, vídeos e gráficos. A arquitetura da rede DeepFace assume que, uma vez que o alinhamento esteja completo, a localização de cada região facial é fixa ao nível do pixel. Portanto, é possível usar os valores de RGB do pixel bruto sem usar múltiplas camadas convolucionais como feito em outros frameworks.

A pipeline convencional dos frameworks modernos de reconhecimento facial compreende quatro estágios: Detecção, Alinhamento, Representação e Classificação. O framework DeepFace emprega modelagem facial 3D explícita para aplicar uma transformação por partes, e usa uma rede neural profunda de nove camadas para derivar uma representação facial. O framework DeepFace tenta fazer as seguintes contribuições

  1. Desenvolver uma arquitetura de DNN ou Rede Neural Profunda eficaz que possa aproveitar um grande conjunto de dados para criar uma representação facial que possa ser generalizada para outros conjuntos de dados.
  2. Usar modelagem 3D explícita para desenvolver um sistema de alinhamento facial eficaz.

Entendendo o Funcionamento do Modelo DeepFace

Alinhamento Facial

O Alinhamento Facial é uma técnica que gira a imagem de uma pessoa de acordo com o ângulo dos olhos. O Alinhamento Facial é uma prática popular que é usada para pré-processar dados para reconhecimento facial, e conjuntos de dados faciais alinhados ajudam a melhorar a precisão dos algoritmos de reconhecimento ao fornecer uma entrada normalizada. No entanto, alinhar faces de forma não restrita pode ser uma tarefa desafiadora devido a vários fatores envolvidos, como expressões não rígidas, poses corporais e mais. Técnicas de alinhamento sofisticadas, como usar um modelo analítico 3D do rosto ou procurar por pontos fiduciais de um conjunto de dados externo, podem permitir que os desenvolvedores superem os desafios.

Embora o alinhamento seja o método mais popular para lidar com verificação e reconhecimento facial não restrito, não há uma solução perfeita no momento. Modelos 3D também são usados, mas sua popularidade diminuiu significativamente nos últimos anos, especialmente quando trabalhando em um ambiente não restrito. No entanto, porque os rostos humanos são objetos 3D, pode ser a abordagem certa se usada corretamente. O modelo DeepFace usa um sistema que usa pontos fiduciais para criar uma modelagem analítica 3D do rosto. Essa modelagem 3D é então usada para deformar uma crop facial para um modo frontal 3D.

Além disso, assim como a maioria das práticas de alinhamento, o alinhamento DeepFace também usa detectores de pontos fiduciais para direcionar o processo de alinhamento. Embora o modelo DeepFace use um detector de pontos simples, ele o aplica em várias iterações para refinar a saída. Um Regressor de Vetor de Suporte ou SVR treinado para prejuízo de configurações de pontos extrai os pontos fiduciais de um descritor de imagem a cada iteração. O descritor de imagem DeepFace é baseado em Histogramas LBP, embora ele também considere outros recursos.

Alinhamento 2D

O modelo DeepFace inicia o processo de alinhamento detectando seis pontos fiduciais dentro da crop de detecção, centrada no meio dos olhos, localizações da boca e ponta do nariz. Eles são usados para girar, dimensionar e traduzir a imagem em seis locais de âncora, e iterar na imagem deformada até que não haja alteração visível. A transformação agregada gera então um corp alinhado 2D. O método de alinhamento é bastante semelhante ao usado em LFW-a, e ele tem sido usado ao longo dos anos em uma tentativa de aumentar a precisão do modelo.

Alinhamento 3D

Para alinhar faces com rotações fora do plano, o framework DeepFace usa um modelo de forma 3D genérico e registra uma câmera 3D que pode ser usada para deformar o corp 2D alinhado para a forma 3D em seu plano de imagem. Como resultado, o modelo gera a versão 3D alinhada do corp, e é alcançada localizando 67 pontos fiduciais adicionais no corp 2D alinhado usando um segundo SVR ou Regressor de Vetor de Suporte.

O modelo então coloca manualmente os 67 pontos de âncora no modelo 3D e é capaz de alcançar a correspondência completa entre referências 3D e seus pontos fiduciais correspondentes. Na próxima etapa, uma câmera afim 3D-2D é adicionada usando uma solução de mínimos quadrados generalizada para os sistemas lineares com uma matriz de covariância conhecida que minimiza certas perdas.

Frontalização

Como deformações não rígidas e projeções de perspectiva completa não são modeladas, a câmera 3D-2D ajustada serve apenas como uma aproximação. Em uma tentativa de reduzir a corrupção de fatores importantes de identidade para a deformação final, o modelo DeepFace adiciona os resíduos correspondentes aos componentes x-y de cada ponto fiducial de referência. Tal relaxamento para o propósito de deformar a imagem 2D com menos distorções para a identidade é plausível, e sem ele, os rostos seriam deformados para a mesma forma em 3D, perdendo fatores discriminativos importantes no processo.

Finalmente, o modelo alcança a frontalização usando uma transformação afim por partes direcionada pela triangulação de Delaunay derivada de 67 pontos fiduciais.

  1. Rosto detectado com 6 pontos fiduciais.
  2. Corp 2D alinhado induzido.
  3. 67 pontos fiduciais no corp 2D alinhado.
  4. Forma de referência 3D transformada para a imagem do corp 2D alinhado.
  5. Visibilidade do triângulo em relação à câmera 3D-2D.
  6. 67 pontos fiduciais induzidos pelo modelo 3D.
  7. Versão 3D alinhada do corp final.
  8. Nova visão gerada pelo modelo 3D.

Representação

Com um aumento na quantidade de dados de treinamento, os métodos baseados em aprendizado provaram ser mais eficientes e precisos quando comparados com recursos projetados, principalmente porque os métodos baseados em aprendizado podem descobrir e otimizar recursos para uma tarefa específica.

Arquitetura DNN e Treinamento

A DNN DeepFace é treinada em uma tarefa de reconhecimento facial de múltiplas classes que classifica a identidade de uma imagem de rosto.

A figura acima representa a arquitetura geral do modelo DeepFace. O modelo tem uma camada convolucional (C1) com 32 filtros de tamanho 11x11x3 que é alimentada com uma imagem 3D alinhada de 3 canais RGB de tamanho 152×152 pixels, e resulta em 32 mapas de recursos. Esses mapas de recursos são então alimentados em uma camada de pooling de máximo (M2) que pega o máximo sobre 3×3 vizinhanças espaciais, e tem uma stride de 2, separadamente para cada canal. Em seguida, há outra camada convolucional (C3) que compreende 16 filtros, cada um de tamanho 9x9x16. O propósito principal dessas camadas é extrair recursos de baixo nível, como textura e bordas simples. A vantagem de usar camadas de pooling de máximo é que elas tornam a saída gerada pelas camadas convolucionais mais robusta a traduções locais, e quando aplicadas a imagens de rosto alinhadas, elas tornam a rede muito mais robusta a erros de registro em pequena escala.

Múltiplos níveis de pooling fazem com que a rede seja mais robusta a certas situações, mas também causam que a rede perca informações sobre a posição precisa de microtexturas e estruturas faciais detalhadas. Para evitar que a rede perca essas informações, o modelo DeepFace usa uma camada de pooling de máximo apenas com a primeira camada convolucional. Essas camadas são então interpretadas pelo modelo como uma etapa de pré-processamento adaptativo de front-end. Embora elas façam a maior parte do cálculo, elas têm parâmetros limitados por si mesmas, e elas simplesmente expandem a entrada em um conjunto de recursos locais.

As camadas seguintes L4, L5 e L6 são conectadas localmente, e assim como uma camada convolucional, elas aplicam um banco de filtros onde cada localização no mapa de recursos aprende um conjunto único de filtros. Como diferentes regiões em uma imagem alinhada têm estatísticas locais diferentes, não pode manter a suposição de estacionariedade espacial. Por exemplo, a área entre as sobrancelhas e os olhos tem uma capacidade discriminativa mais alta quando comparada à área entre a boca e o nariz. O uso de camadas leais afeta o número de parâmetros sujeitos a treinamento, mas não afeta a carga computacional durante a extração de recursos.

O modelo DeepFace usa três camadas no início apenas porque ele tem uma grande quantidade de dados de treinamento bem rotulados. O uso de camadas conectadas localmente pode ser justificado ainda mais como cada unidade de saída de uma camada conectada localmente pode ser afetada por um grande patch de dados de entrada.

Finalmente, as camadas superiores são conectadas completamente, com cada unidade de saída conectada a todas as entradas. As duas camadas podem capturar as correlações entre recursos capturados em diferentes partes das imagens de rosto, como posição e forma da boca, e posição e forma dos olhos. A saída da primeira camada fully connected (F7) será usada pela rede como seu vetor de recurso de representação facial bruto. O modelo então alimenta a saída da última camada fully connected (F8) em um softmax K-vias que produz uma distribuição sobre rótulos de classe.

Conjuntos de Dados

O modelo DeepFace usa uma combinação de conjuntos de dados, com o conjunto de dados de Classificação Facial Social ou SFC sendo o principal. Além disso, o modelo DeepFace também usa o conjunto de dados LFW e o conjunto de dados YTF.

Conjunto de Dados SFC

O conjunto de dados SFC é aprendido a partir de uma coleção de fotos do Facebook (META ), e ele consiste em 4,4 milhões de imagens rotuladas de 4.030 pessoas, com cada uma delas tendo 800 a 1.200 faces. As 5% mais recentes das imagens de faces do conjunto de dados SFC de cada identidade são deixadas de fora para fins de teste.

Conjunto de Dados LFW

O conjunto de dados LFW consiste em 13.323 fotos de mais de cinco mil celebridades que são então divididas em 6.000 pares de faces em 10 divisões.

Conjunto de Dados YTF

O conjunto de dados YTF consiste em 3.425 vídeos de 1.595 assuntos, e é um subconjunto das celebridades no conjunto de dados LFW.

Resultados

Sem a frontalização e usando apenas o alinhamento 2D, o modelo alcança uma pontuação de precisão de apenas cerca de 94,3%. Quando o modelo usa o corp central de detecção de face, ele não usa nenhum alinhamento, e nesse caso, o modelo retorna uma pontuação de precisão de 87,9% porque algumas partes da região facial podem cair fora do corp central. Para avaliar a capacidade discriminativa da representação facial em isolamento, o modelo segue a configuração de aprendizado não supervisionado para comparar o produto interno de recursos normalizados. Isso aumenta a precisão média do modelo para 95,92%.

A figura acima compara o desempenho do modelo DeepFace quando comparado com outros modelos de reconhecimento facial de última geração.

A figura acima representa as curvas ROC no conjunto de dados.

Conclusão

Idealmente, um classificador de faces será capaz de reconhecer faces com a precisão de um ser humano, e ele será capaz de retornar alta precisão independentemente da qualidade da imagem, pose, expressão ou iluminação. Além disso, um framework de reconhecimento facial ideal será capaz de ser aplicado a uma variedade de aplicações com poucas ou nenhuma modificação. Embora o DeepFace seja um dos frameworks de reconhecimento facial mais avançados e eficientes atualmente, ele não é perfeito, e ele pode não ser capaz de entregar resultados precisos em certas situações. Mas o framework DeepFace é um marco significativo na indústria de reconhecimento facial, e ele fecha a lacuna de desempenho usando uma técnica de aprendizado de métrica poderosa, e ele continuará a melhorar com o tempo.

Um engenheiro por profissão, um escritor por coração. Kunal é um escritor técnico com um amor e compreensão profundos de AI e ML, dedicado a simplificar conceitos complexos nestes campos por meio de sua documentação envolvente e informativa.