
Na prática de auditoria interna, existem tarefas em que é necessário realizar uma verificação para identificar a entrada incorreta de dados do cliente. Um desses problemas pode ser a discrepância entre os dados inseridos e a foto do cliente no momento do cadastro do produto.
Por exemplo, as seguintes informações estão disponíveis: sexo, idade e link para a foto. Para verificar a conformidade, usaremos a biblioteca py-agender da linguagem Python.
A biblioteca funciona em duas etapas. Primeiro, o opencv determina a posição do rosto na foto. No segundo, a rede neural da arquitetura EfficientNetB3, que é treinada no UTKFace DataSet, determina o sexo e a idade do dono do rosto na foto.
Primeiro, vamos importar as bibliotecas necessárias:
import cv2
from pyagender import PyAgender
Vamos criar um objeto detector de sexo e idade:
agender = PyAgender()
Faça upload de uma foto usando o opencv:
img = cv2.imread("habensky.jpeg")
A seguir, definimos as características do rosto usando o método detect_genders_ages do objeto agender:
face_info = agender.detect_genders_ages(img)
onde a variável face_info contém as seguintes informações:
[{'left': 0,
'top': 5,
'right': 299,
'bottom': 299,
'width': 299,
'height': 294,
'gender': 0.0075379927,
'age': 41.585840644804094}]
Aqui, os parâmetros ('esquerda', 'superior', 'direita', 'inferior', 'largura', 'altura') caracterizam a posição do rosto na foto. O parâmetro gênero caracteriza pertencer a um determinado gênero, onde 0 corresponde a um homem, 1 - a uma mulher. Essa. após o processamento da imagem, no limiar de 0,5, dividimos a amostra processada em homens e mulheres.

O algoritmo determinou que esta imagem mostra um homem (o valor do gênero é muito próximo de zero: 0,0075379927), e também que nesta foto ele tem 41 anos e meio (41,5858), não sei quantos anos Konstantin Khabensky tem nesta foto, mas acho que o algoritmo está perto para a verdade.
Um bom exemplo, uma imagem nítida e um resultado bastante impressionante. No entanto, quando você começa a aplicar o algoritmo a dados reais, as coisas não são tão otimistas quanto gostaríamos. E o ponto aqui não está tanto no algoritmo, mas na qualidade dos dados iniciais.
No meu caso, era um conjunto de 1542 imagens com resolução de 300x300. Para 64 imagens, o algoritmo não foi capaz de determinar as características do rosto. O principal motivo é a pouca iluminação no momento da fotografia (os rostos são quase invisíveis). Para 1478 imagens, o erro mediano de idade foi de 4,96 anos. A figura abaixo mostra a distribuição do erro:

Para 8,5% das imagens (125 de 1478), o algoritmo cometeu um erro ao determinar o sexo de uma pessoa. Destes, em 122 casos, o algoritmo confundiu uma mulher com um homem. Novamente, não culpe o algoritmo em todos os casos. Na maioria dos exemplos errados, há muitos rostos com óculos que podem ocultar algumas características faciais. A figura abaixo mostra a distribuição de idade para o UTKFace DataSet:

Você pode ver que a maior parte do conjunto de dados contém imagens de pessoas com idade entre 20-40. Apesar disso, o algoritmo mais frequentemente cometeu um erro precisamente para o intervalo especificado, ou seja, muito provavelmente os erros estão associados à peculiaridade do conjunto de dados para o qual o algoritmo foi aplicado. A figura abaixo mostra a distribuição da idade das pessoas nas quais o algoritmo cometeu um erro:

Py-Agender é uma ferramenta interessante que pode ajudar a automatizar uma série de tarefas de rotina, ou pelo menos reduzir o tamanho da amostra para análise manual. O artigo apresenta uma estimativa para um conjunto de dados específico, talvez no seu caso o algoritmo funcione com mais eficiência.