BT

Experimente a nova interface visual do InfoQ! Veja o novo design do InfoQ 3.0 e nos diga o que você achou.

Face-api.js: reconhecimento facial em JavaScript

| por Diogo Carleto Seguir 46 Seguidores , traduzido por Diogo Carleto Seguir 46 Seguidores em 28 nov 2018. Tempo estimado de leitura: 2 minutos |

Face-api.js é uma API JavaScript para detecção e reconhecimento facial no browser implementado sobre a API principal do tensorflow.js. O Face-api.js implementa uma série de redes neurais convolucionais (CNNs), otimizada para a web e dispositivos móveis.

Em uma conversa com o InfoQ, Vincent Mühler, criador do face-api.js e o face-recognition.js, explicou sua motivação em criar o face-api.js:

Basicamente, eu tinha uma outra API, o face-recognition.js, que foi capaz de detectar rostos e realizar reconhecimento facial com o Node.js. Em algum ponto, eu descobri o tensorflow.js e me interessei no aprendizado de máquina no browser.

Assim, fiquei curioso para saber se era possível portar modelos existentes para detecção e reconhecimento facial para o tensorflow.js, e isso funcionou muito bem.

Foi assim que tudo começou.

(Imagem obtida de github.com)

Para detecção facial, o face-api.js implementa os modelos SSD Mobilenet V1, Tiny Face Detector, e o experimental MTCNN.

O SSD (Single Shot Multibox Detector) MobileNet V1 é um modelo baseado no MobileNet V1 que visa obter alta precisão na detecção facial. Esse modelo basicamente calcula a localização de cada face em uma imagem e retorna as caixas delimitadoras junto com sua probabilidade para cada face detectada.

O Tiny Face Detector é um modelo para a detecção facial em tempo real, que quando comparado com o SSD Mobilenet V1, é menor, mais rápido, e consome menos recursos. Esse modelo foi treinado em um conjunto de dados de 14 mil imagens rotuladas com caixas delimitadoras. De acordo com Mühler, clientes com recursos limitados não devem ter problemas ao usar este modelo.

O MTCNN (redes neurais convolucionais em cascata multitarefa) é um modelo experimental que representa uma alternativa de detecção facial para SSD MobileNet V1 e Tiny Yolo V2, que oferece muito mais possibilidades de configurações.

Para detecção de pontos de referência de 68 pontos, existem dois modelos leves e rápidos, o face_landmark_68_model que requer somente 350kb, e o face_landmark_68_tiny_model que requer 80kb. Os modelos foram treinados em um conjunto de dados de aproximadamente 35 mil imagens faciais rotuladas com 68 pontos de referência de face.

Para o reconhecimento facial, um modelo baseado em uma arquitetura do tipo ResNet-34 é fornecido no face-api.js para calcular um descritor de face a partir de qualquer imagem de face. Esse modelo não está limitado ao conjunto de faces usadas para o treinamento, o que significa que os desenvolvedores podem usá-la para o reconhecimento facial de qualquer pessoa. É possível determinar a similaridade de duas faces arbitrárias comparando seus descritores de face.

Para iniciar com o face-api.js, faça o download o último build de dist/face-api.js ou dist/face-api.min.js e inclua o script:

<script src="face-api.js"></script>

Para carregar um modelo é necessário fornecer os arquivos de modelo, e após isso, assumindo que os modelos estão em /models:

await faceapi.loadSsdMobilenetv1Model('/models')
// accordingly for the other models:
// await faceapi.loadTinyFaceDetectorModel('/models')
// await faceapi.loadMtcnnModel('/models')
// await faceapi.loadFaceLandmarkModel('/models')
// await faceapi.loadFaceLandmarkTinyModel('/models')
// await faceapi.loadFaceRecognitionModel('/models')

Para os desenvolvedores que quiserem executar os exemplos localmente, basta executar as instruções abaixo e no browser digitar http://localhost:3000/:

git clone https://github.com/justadudewhohacks/face-api.js.git 
cd face-api.js/examples
npm i
npm start

Mais informações sobre o face-api.js podem ser encontradas no repositório no GitHub. Também estão disponíveis tutoriais sobre reconhecimento facial e rastreamento facial.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
BT