Como prometemos da última vez, falaremos sobre como avaliar o software de reconhecimento facial. Material preparado pela nossa equipe do laboratório da NtechLab.
Preâmbulo
Recentemente, o desenvolvimento do algoritmo de reconhecimento facial atraiu muitos interesses comerciais e governamentais. Mas a medição correta da precisão de tais sistemas é uma tarefa difícil e contém muitos nuances. Nós constantemente recebemos solicitações de testes da nossa tecnologia de reconhecimento e projetos piloto com base nela, e percebemos que muitas vezes surgem perguntas sobre a terminologia e os métodos de teste de algoritmos em relação a problemas de negócios. Como resultado, ferramentas inadequadas podem ser escolhidas para resolver o problema e isso leva a perdas financeiras. Decidimos publicar este artigo para ajudar as pessoas a se sentirem mais confortáveis com grande parte do idioma e dos números brutos que envolvem a tecnologia de reconhecimento facial e simplificar sua comparação. Nosso objetivo é explicar os conceitos principais da área de maneira simples e compreensível e mostrar como funciona o sistema de reconhecimento facial com base no algoritmo. Esperamos que isso permita que as pessoas das áreas técnicas e os empreendedores falem o mesmo idioma, entendam melhor os cenários de uso do reconhecimento facial no mundo real e tomem decisões baseadas em dados.
Tarefas do reconhecimento facial
O termo «reconhecimento facial» pode incluir várias tarefas diferentes, como detectar rostos em uma foto ou fluxo de vídeos, reconhecimento de gênero e idade, busca de uma pessoa específica em várias imagens de rostos e verificar se as duas imagens pertencem à mesma pessoa. Neste artigo, focaremos nos dois últimos, referindo-se a essas tarefas como identificação e verificação, respectivamente. Para resolver esses problemas têm que extrair descritores especialmente criados, ou vetores de características, necessários para reconhecimento facial. Neste caso, o problema da identificação pode ser reduzido para busca de vetor de características mais próximo, e a verificação pode ser realizada usando um limite simples para as distâncias entre os vetores. Combinando essas duas ações, é possível identificar uma pessoa em uma imagem ou determinar se essa pessoa não está nas imagens. Esse procedimento é chamado de open-set identification (identificação de conjunto aberto) Ver fig. 1.
Qualidade da precisão Conjuntos de dados
Quase todos os softwares modernos de biometria facial são baseados em aprendizado de máquina. Os algoritmos de reconhecimento de rosto são treinados em grandes conjuntos de dados de imagens rotuladas. Tanto a qualidade quanto a natureza desses conjuntos de dados têm um impacto significativo na precisão. Quanto melhores os dados de origem, melhor será o algoritmo para resolver as tarefas.
Uma maneira natural de verificar exatamente como o sistema de reconhecimento facial funciona é medir a precisão de reconhecimento em um conjunto de dados de teste. É crucial escolher um conjunto de dados apropriado para teste. Idealmente, a empresa deve adquirir um conjunto de dados próprio para fins de teste, que deve corresponder ao cenário de casos de uso o mais próximo possível.
Preste atenção no tipo de câmera, condições de filmagem, idade, gênero e etnia das pessoas que aparecem nos conjuntos de dados de teste. Tendo o conjunto de dados mais semelhante aos dados que o software realmente processará, torna os resultados dos testes mais confiáveis. Geralmente, é uma boa ideia investir tempo e dinheiro na coleta e rotulagem do seu conjunto de dados. Mas caso isso não seja possível, é necessário recorrer ao uso de conjuntos de dados públicos, por exemplo, LFW e MegaFace.
O conjunto de dados LFW contém apenas 6.000 pares de imagens de rostos, o que o torna inadequado para muitas aplicações práticas: por exemplo, não será possível usá-lo para medir taxas de erro, o que mostraremos em seguida. O conjunto de dados MegaFace contém muito mais imagens e é apropriado para testar algoritmos de reconhecimento facial em escala. Mas as partes de treinamento e teste deste conjunto de dados estão disponíveis publicamente, por isso, é necessário ter um cuidado especial ao usá-lo para teste.
Outra opção é usar os resultados dos testes fornecidos por terceiros. Esses testes são realizados por pessoal qualificado em conjuntos de dados privados, assim os resultados são confiáveis. Um exemplo é o NIST Face Recognition Vendor Test Ongoing. Este é um teste realizado pelo Instituto Nacional de Padrões e Tecnologia (NIST), sob o Departamento de Comércio dos EUA. Uma «desvantagem» dessa abordagem é que o conjunto de dados do testador pode não corresponder o suficiente ao cenário de uso do interessado.
Retreinamento
Como dissemos, o aprendizado de máquina é a base do software de reconhecimento facial moderno. Um fenômeno comum de aprendizado de máquina é chamado de «retreinamento». É o que acontece quando o software tem resultados bons com as imagens nas quais foi treinado, mas falha em manter resultados semelhantes em novos dados. Consideramos um exemplo específico: suponha que um cliente queira instalar o melhor sistema de controle de acesso com reconhecimento facial. Para esse fim, ele coleta fotos das pessoas para ter acesso e, em seguida, treina um algoritmo para distinguir essas pessoas das outras. Durante os testes os resultados são bons e o sistema é implantado na empresa. Depois foi decidido adicionar mais pessoas com acesso na lista e como funciona o sistema de reconhecimento facial?- o sistema falha ao conceder acesso a novos funcionários. O algoritmo foi testado nos mesmos rostos em que foi treinado, mas ninguém testou a precisão de reconhecimento com novas fotos. Este é um exemplo exagerado, mas ainda serve para ilustrar o problema.
Em alguns casos, o retreinamento não é tão óbvio. Vamos supor que o algoritmo foi treinado em um conjunto de dados composto principalmente por pessoas de uma etnia. Quando esse algoritmo é usado para analisar os rostos de pessoas multinacionais, a precisão dele provavelmente vai diminuir. A superestimação da precisão de algoritmo devido a testes inadequados — é um erro muito comum. O algoritmo sempre deve ser testado nos dados novos, que deve processar em casos reais, e não nos dados em que foi treinado. Resumindo, fizemos uma lista de recomendações: não use fotos de pessoas nas quais o algoritmo foi treinado durante o teste, use um conjunto de dados fechado especial para teste. Se isso é impossível e você vai testar um conjunto de dados público, verifique se o fornecedor não o usou durante o treinamento e/ou na configuração do algoritmo. Conheça o conjunto de dados antes do teste e considere sua semelhança com os dados, que entrarão durante a operação do sistema.
Métricas
Depois que o conjunto de dados de teste for escolhido, deve-se escolher uma métrica para avaliar os resultados. Uma métrica é uma função útil que recebe os resultados de um algoritmo (identificação ou verificação) como entrada e retorna um número que corresponde à qualidade do algoritmo em um conjunto de dados específico. O uso de um número para a comparação quantitativa de diferentes algoritmos ou fornecedores permite a apresentação concisa dos resultados do reconhecimento e facilita o processo de tomada de decisão. Neste artigo, consideramos as métricas mais usadas no reconhecimento facial e discutimos seu significado nos negócios.
Verificação
A verificação facial pode ser considerada como o processo de tomar a decisão binária: «sim» (as duas imagens são da mesma pessoa) ou «não» (pessoas diferentes estão em um par de fotos). Antes de lidar com as métricas de verificação, é útil entender como podemos classificar erros em tais problemas. Dado que existem 2 respostas possíveis do algoritmo e 2 opções para o estado verdadeiro das coisas, existem 4 resultados possíveis:
As respostas corretas do algoritmo são marcadas com um fundo verde, as respostas erradas com um fundo vermelho. Baseado nesses resultados, dois correspondem às respostas corretas do algoritmo e dois correspondem a erros do primeiro e do segundo tipo, respectivamente.
Erros do primeiro tipo são chamados de «aceitação falsa», «falso positivo» ou «correspondência falsa» (aceito incorretamente), e erros do segundo tipo são chamados «rejeição falsa», «falso negativo» ou «falsa não correspondência» (rejeitada incorretamente). Quando somamos o número de erros diferentes entre os pares de imagens no conjunto de dados e dividimos pelo número de pares, obtemos uma taxa de aceitação falsa (FAR) e uma taxa de rejeição falsa (FRR).
No caso de sistema de controle de acesso, «falso positivo» corresponde a permitir a entrada de uma pessoa não autorizada, enquanto «falso negativo» significa que o sistema negou por engano o acesso a uma pessoa autorizada. Esses erros são diferenciados porque cada um tem custos de negócios diferentes associados a eles. No exemplo de controle de acesso, «falso negativo» pode exigir que um responsável pela segurança verificasse novamente o passe do funcionário.
Dar acesso não autorizado a um invasor em potencial (falso positivo) pode levar a consequências muito piores. Dado que erros de vários tipos estão associados a vários riscos, os fornecedores de software de reconhecimento facial geralmente fornecem uma maneira de ajustar o algoritmo para minimizar um dos tipos de erros. Para fazer isso, o algoritmo retorna não uma resposta binária, mas um número real, refletindo a confiança do algoritmo em sua decisão.
Assim o usuário pode estabelecer independente um o limite e corrigir o nível de erros em determinados valores. Por exemplo, considere um conjunto de dados de «brinquedo» com três imagens. As imagens 1 e 2 pertencerem à mesma pessoa e a imagem 3 a outra pessoa. Suponha que o programa tenha avaliado sua confiança para cada um dos três pares da seguinte maneira:
Escolhemos especificamente os valores para que nenhum limite classifique os três pares corretamente. Em particular, qualquer limiar abaixo de 0,6 resultaria em duas aceitações falsas (para pares de rostos 2−3 e 1−3). Obviamente, esse resultado pode ser melhorado. Escolher o limite de 0,6 a 0,85 resultará na rejeição de um par de rostos 1−3, um par de rostos 1−2 ainda será aceito e 2−3 será falsamente aceito. Se o limite for aumentado para 0,85−0,9, um par de rostos 1−2 será falsamente rejeitado. Valores do limite acima de 0,9 resultarão em duas rejeições verdadeiras (pares de rostos 1−3 e 2−3) e uma rejeição falsa (1−2). Portanto, os limites do intervalo de 0,6 a 0,85 (uma aceitação falsa 2−3) e um limite acima de 0,9 (levando à rejeição falsa 1−2) são as melhores opções.
Qual valor escolher como final depende do custo de erros de diferentes tipos. Neste exemplo, o limite varia em amplos intervalos, principalmente devido ao conjunto de dados muito pequeno e à maneira de como escolhemos os valores de confiança do algoritmo. Para grandes conjuntos de dados usados para casos de uso real, seriam obtidos valores de limite significativamente mais precisos. Frequentemente, os fornecedores de software de reconhecimento facial fornecem valores de limite padrão para diferentes FAR, que são calculados de maneira semelhante nos próprios conjuntos de dados do fornecedor. Também é fácil de notar, que à medida que o FAR de interesse diminui o número de pares de imagens positivas necessários para medir com precisão o limite aumenta. É necessário pelo menos 1.000 pares para medir FAR = 0,001, e FAR = 10−6 exigiria mais de 1 milhão de pares. A coleta de um conjunto de dados desse tamanho é um desafio, portanto, os clientes interessados em FARs muito baixos podem considerar benchmarks públicos como o NIST Face Recognition Vendor Test ou MegaFace. O último conjunto deve ser tratado com cuidado, pois os conjuntos de dados de treinamento e teste estão disponíveis para o público o que pode levar a uma avaliação da precisão muito otimista (consulte a seção “Retreinamento”).
Curvas ROC
Os tipos de erros diferem em termos de custos, e o cliente pode mudar a balança na direção de erros favoráveis. Para fazer isso, é preciso estudar uma ampla gama de valores de limite. Uma maneira útil de visualizar a precisão de um algoritmo através de diferentes valores de FAR é construir curvas ROC (ingl. receiver operating characteristic, característica de operação do receptor).
Vamos ver como se pode construir e analisar uma curva ROC. A confiança do algoritmo (e, portanto, o limite) pode assumir valores de um intervalo fixo. Em outras palavras, eles são delimitados em cima e em baixo. Vamos supor que esse intervalo seja 0−1. Agora podemos estimar o número de erros variando o valor do limite de 0 a 1 em pequenos incrementos. Para cada valor de limite, registramos o FAR e TAR (taxa de aceitação verdadeira). A seguir, desenharemos cada ponto para que FAR corresponda ao eixo da abscissa e TAR corresponda ao eixo das ordenadas.
É fácil ver que o primeiro ponto terá as coordenadas 1,1. Com um limite de 0, aceitamos todos os pares de rostos e não rejeitamos nenhum par. Da mesma forma, o último ponto será 0,0: com um limite de 1, não aceitamos nenhum par de rostos e rejeitamos todos os pares. Em outros pontos, a curva geralmente é convexa. Pode-se ver que a pior curva está em algum lugar na diagonal do gráfico e corresponde a suposições aleatórias de resultados. Por outro lado, a melhor curva possível forma um triângulo com pontos (0,0), (0,1) e (1,1). Mas isso é visto raramente na prática em conjuntos de dados de tamanho razoável.
É possível construir uma similaridade de curvas ROC com diferentes métricas / erros no eixo. Por exemplo, consideramos a Figura 4. Ela mostra que os organizadores do NIST FRVT desenharam a FRR ao longo do eixo Y (na figura — taxa de não correspondência falsa) e FAR ao longo do eixo X (na figura — taxa de correspondência falsa).
Nesse caso em particular, os melhores resultados foram alcançados por curvas localizadas mais abaixo e são mais próximas à esquerda, o que corresponde a FRRs e FARs mais baixos. Portanto, vale a pena prestar atenção em quais valores são marcados ao longo dos eixos.
Esse gráfico facilita a avaliação da precisão do algoritmo com FAR escolhido: basta encontrar um ponto na curva com uma coordenada X igual ao FAR desejado e o valor TAR correspondente. A «qualidade» da curva ROC também pode ser estimada com um número, para isso é necessário calcular a área abaixo dela. Nesse caso, o melhor valor possível será 1 e um valor de 0,5 corresponde a suposições aleatórias.
Esse número é chamado de ROC AUC ( ingl. Area Under Curve-área abaixo da curva). No entanto, deve-se notar que o ROC AUC pressupõe implicitamente que os erros do primeiro e do segundo tipo não sejam ambíguos, o que nem sempre é assim. Se o preço dos erros variar, é melhor estudar a forma da curva, prestando atenção especial aos valores FAR que atendem às necessidades dos negócios.
Identificação
A segunda tarefa popular de reconhecimento facial é a identificação ou a busca do rosto desejado entre um conjunto de imagens. Os resultados são classificados por valor de confiança do algoritmo e as correspondências mais prováveis estão no topo da lista. Dependendo de se a pessoa procurada está ou não está em um banco de dados de rostos, a identificação pode ser dividida em duas subcategorias: identificação closed-set (a pessoa procurada está em um banco de dados) e identificação open-set (a pessoa procurada pode não estar em um banco de dados).
Uma métrica confiável e interpretável para medir a identificação closed-set é a precisão. Em poucas palavras, a precisão mede o número médio de vezes que a pessoa procurada aparece entre os resultados de busca de rostos.
Vamos ver como isso funciona na prática. Começamos com definição das necessidades de negócios. Imagine que temos uma página da Web onde podem aparecer até 10 resultados de busca. Devemos medir o número de vezes que a pessoa procurada é encontrada entre as dez primeiras respostas do algoritmo. Este número se chama precisão Top-N ( nesse caso em particular, N é igual a 10).
Para cada tentativa, determinamos a imagem da pessoa que estamos procurando e a galeria de rostos na qual procuraremos, para que a galeria contenha pelo menos uma outra imagem da mesma pessoa. Analisamos os dez primeiros resultados da busca e verificamos se a pessoa procurada está entre os resultados. Para obter a precisão, somam-se todas as tentativas onde a pessoa foi encontrada e depois divide pelo número total de tentativas.
A identificação Open-set é uma busca de pessoas que sejam mais parecidas com a imagem que estamos buscando e determinação se uma delas é a pessoa que estamos buscando baseado na confiança do algoritmo. A identificação Open-set pode ser considerada como uma combinação de identificação closed-set e verificação, assim, todas as mesmas métricas para a tarefa de verificação podem ser aplicadas e para esta tarefa.
Também está claro que é possível realizar a identificação open-set, verificando a imagem procurada com todas as outras imagens da galeria. Na prática, isso não é usado por razões de velocidade computacional. Alguns softwares de reconhecimento facial são fornecidos com algoritmos de busca rápidos, capazes de encontrar os rostos semelhantes entre milhões por milissegundos. As comparações por pares levaram muito mais tempo.
Exemplos práticos
Como ilustração, vejamos alguns exemplos que demonstram a medição da qualidade dos algoritmos de reconhecimento facial para comparação em um caso de uso real.
Loja de varejo
Consideramos uma loja de varejo de médio porte que deseja melhorar seu programa de fidelidade e reduzir a quantidade de roubos. As duas tarefas são praticamente as mesmas para biometria facial. O principal objetivo deste projeto é reconhecer o mais breve possível um cliente ou um infrator, verificando as imagens de câmeras e passar essas informações ao vendedor ou ao oficial de segurança.
Vamos supor que o programa de fidelidade tem 100 clientes. Esta tarefa pode ser considerada como um exemplo de identificação open-set. Depois de estimar os custos, o departamento de marketing chegou à conclusão de que um nível aceitável de erro é considerar um visitante como um cliente regular por dia. Se a loja recebe 1000 visitantes todos os dias, cada um dos quais deve ser verificado com uma lista de 100 clientes regulares, o FAR necessário será 1 / (1000 * 100) = 10−5.
Uma vez que o nível aceitável de erros está definido, devemos escolher um conjunto de dados adequado para teste. Uma opção boa seria instalar uma câmera no local desejado (os fornecedores podem ajudar na recomendação de dispositivos e locais).
Ao comparar as transações do titular do cartão de fidelidade com as imagens da câmera e filtrar os resultados manualmente os funcionários da loja podem coletar um conjunto de pares «positivos». Também é recomendável adicionar várias imagens de visitantes aleatórios (uma imagem por pessoa). Esse número de imagens deve ser aproximadamente igual ao número médio diário de visitantes da loja. Ao combinar os dois conjuntos, você pode obter conjuntos de dados dos pares «positivos» e «negativos».
Mil pares «positivos» devem ser suficientes para uma verificação de precisão de reconhecimento desejado. Ao combinar vários clientes regulares e visitantes ocasionais, você pode coletar cerca de 100.000 pares «negativos».
O próximo passo é executar (ou pedir ao fornecedor para executar) o software de reconhecimento facial e obter a confiança do algoritmo para cada par no conjunto de dados. Quando estiver pronto, você pode construir uma curva ROC para garantir que o número de clientes regulares corretamente reconhecidos com FAR = 10−5 atenda às suas necessidades de negócios.
E-Gate no aeroporto
Os aeroportos modernos atendem dezenas de milhões de passageiros anualmente, o que significa que cerca de 300.000 pessoas passam pelo controle de passaportes todos os dias. A automação desse processo pode economizar muito dinheiro para o aeroporto. Por outro lado, o custo de deixar um invasor entrar também é muito alto, e a administração do aeroporto gostaria de manter o risco desse resultado o mais baixo possível. FAR=10−7 corresponde a dez infratores por ano e pode parecer razoável nesse caso. Se, com este FAR, o FRR for 0,1 (o que corresponde aos resultados da NtechLab no conjunto de dados de imagens de visto NIST), o custo da verificação manual de documentos poderá ser reduzido em dez vezes. No entanto, para avaliar a precisão em um determinado nível FAR, serão necessárias dezenas de milhões de imagens. A coleta de um conjunto de dados tão grande exige fundos significativos e pode exigir uma coordenação adicional do processamento de dados pessoais. Como resultado, investir em um sistema desse tipo pode render por muito tempo. Nesse caso, faz sentido consultar o relatório de teste NIST Face Recognition Vendor Test, que contém um conjunto de dados com fotos de pessoas com vistos. A administração do aeroporto deve escolher um fornecedor com base nos testes desse conjunto de dados, levando em consideração o fluxo de passageiros.
Correspondência direcionada
Até agora, consideramos os exemplos onde o cliente estava interessado em um FAR baixo, mas esse nem sempre é o caso. Imagine um estande de publicidade equipado com uma câmera em um grande shopping. O shopping possui seu próprio programa de fidelidade e gostaria de identificar os participantes que pararam no estande. Além disso, essas pessoas poderiam receber mensagens direcionadas com descontos e ofertas interessantes com base no que as interessasse no estande. Suponhamos que o custo de manutenção desse sistema seja de US $ 10, enquanto cerca de 1000 visitantes por dia param no estande.
O departamento de marketing estima que o lucro de cada um desses e-mails será US $ 0,0105. Gostaríamos de identificar o maior número possível de clientes regulares sem incomodar os outros. Para que o anúncio ( está correspondência) seja recompensado, a precisão deve ser igual ao custo do estande dividido pelo número de visitantes e pelo lucro esperado de cada e-mail. Para o nosso exemplo, precisão = 10 / (1000 * 0,0105) = 95%.
A administração do shopping pode coletar o conjunto de dados da maneira descrita na seção «Loja de varejo» e medir a precisão conforme descrito na seção «Identificação». Com base nos resultados do teste, você pode decidir se pode obter o benefício esperado usando o sistema de reconhecimento facial.
Considerações práticas
Suporte de vídeo
Ao longo deste artigo, discutimos o processamento das imagens faciais sem focar no fluxo de vídeo. O vídeo pode ser visto como uma série de imagens estáticas, portanto, as métricas e as abordagens de teste que funcionam para imagens estáticas também funcionam para vídeo. Devemos notar, que o processamento de fluxos de vídeo é muito mais caro computacionalmente e impõe restrições adicionais a todos os etapas de reconhecimento facial. Ao trabalhar com vídeo, devem ser realizados os testes de processamento separados, por isso os detalhes desse processo não serão abordados neste artigo.
Erros comuns
Nesta parte, gostaríamos de listar problemas e erros comuns que surgem durante o teste de software de reconhecimento facial, fornecendo recomendações sobre como evitá-los.
Testes em um conjunto de dados de tamanho insuficiente
Você sempre deve ter cuidado ao escolher um conjunto de dados para testar algoritmos de reconhecimento facial. Uma das prioridades mais importantes de um conjunto de dados é seu tamanho. O tamanho do conjunto de dados deve ser escolhido com base nas necessidades de negócios e nos valores FAR / TAR. Os conjuntos de dados de «brinquedo» de várias imagens dos rostos das pessoas do seu escritório tornarão possível «brincar» com o algoritmo, estimar seu rendimento ou testar situações fora do padrão, mas com base nestes testes, é impossível fazer conclusões sobre a precisão do algoritmo. Para testes de precisão, use conjuntos de dados de tamanho razoável.
Testar com um único valor de limite
Às vezes, as pessoas testam o software de reconhecimento facial com um valor de limite fixo (geralmente escolhido pelo fabricante como «padrão») e consideram apenas um tipo de erro. Isso está incorreto, pois os valores de limite padrão variam entre os fornecedores ou estão escolhidos com base em diferentes valores FAR ou TAR. Nos testes deve prestar atenção nos dois tipos de erros.
Comparação dos resultados em conjunto de dados diferentes
Os conjuntos de dados são diferentes em termos de tamanho, qualidade e complexidade, portanto, os resultados do algoritmo não são comparáveis entre os conjuntos de dados diferentes. É fácil rejeitar a solução melhor, apenas porque foi testado em um conjunto de dados mais complexo do que tem os seus concorrentes.
Fazer conclusões com base no teste em um único conjunto de dados
Os testes devem ser realizados em vários conjuntos de dados. Ao escolher um único conjunto de dados público, não têm garantia de que ele não foi usado no treinamento ou no ajuste do algoritmo. Nesse caso, a precisão será reavaliada. Felizmente, a probabilidade desses eventos pode ser reduzida comparando os resultados em diferentes conjuntos de dados.
Conclusões
Neste artigo, descrevemos os principais componentes dos testes de algoritmos de reconhecimento facial: conjuntos de dados, tarefas, métricas correspondentes e casos de uso comuns.
Obviamente, isso está longe de ser tudo o que gostaríamos de dizer sobre os testes, e o melhor procedimento pode ser diferente dependendo de vários casos de uso excepcionais (a equipe da NtechLab terá prazer em ajudar). Mas esperamos realmente que este texto ajude a planejar os testes corretamente, comparar vários algoritmos de reconhecimento de rosto, avaliar seus pontos fortes e fracos e interpretar métricas de qualidade do ponto de vista das tarefas de negócios, para finalmente escolher o melhor sistema de reconhecimento facial.
Amigos! Como sempre, agradecemos seus comentários a respeito.