Analisar, extrair e armazenar dados a partir de imagens
Neste post irei mostrar como extrair dados e extrair informações importantes para futuras análises a partir de fotos de rostos inicialmente.
para realizar as análises foi utilizado o framework em python chamado DeepFace: https://github.com/serengil/deepface
Em outro post foi mostrado como identificar fotos em em imagens, segue link :
https://medium.com/data-hackers/webapp-para-detectar-faces-8ee83a1442be
Porém seria interessante além de armazenar e contar os rostos extrair mais dados dessas imagens como;
- Gênero
- Idade
- Raça
- Humor
Para explicar melhor o que pretendemos fazer segue abaixo vídeo;
Face detector
Para fazer a detecção dos rostos em imagens usamos MTCNN ( Multi-Task Cascaded Convolutional Neural Network) igual no projeto anterior, porque MTCNN ? porque os resultados são melhores que outras tecnologias para detecção que foram testadas como ( haar cascades, dlib )
Para realizar a extração dos rostos em uma imagem foi usado a função abaixo;
após cada detecção iremos salvar cada detecção foto em um diretório local para realizar a análises dos atributos descritos;
Reconhecimento Facial
Para realizar a análise dos atributos para cada foto de rosto salva usamos um framework chamado deepFace
img = 'sample.png'attributes = ['age', 'gender', 'race', 'emotion']demography = DeepFace.analyze(img, attributes)st.write(demography['age'])st.write(demography['dominant_emotion'])st.write(demography['gender'])st.write(demography['dominant_race'])
Agora que temos as análises para cada foto iremos salvar essas informações em um dicionário, usamos um serviço gratuito chamado firebase, onde é possível usar funcionalidades do ‘storage’ para armazenar arquivos de fotos e o serviço ‘realtime-database’, para armazenar dados nosql.
Armazenamento
O serviço em nuvem para desenvolvedores móveis é um back-end completo para aplicações mobile (Android e iOS) e aplicações web. Com visual limpo e de uso simples, o Firebase é uma plataforma dedicada e SDK para a construção de aplicativos. Atualmente, o serviço suporta desenvolvimento nas linguagens de programação C++, Java, Javascript, Node.js, Objective-C e Swift.
incluindo informações no banco ex ;
data = {"name": "Mortimer 'Morty' Smith"}
db.child("users").push(data)
incluindo imagens e arquivos no banco
for i in imageList:storage.child(str(i)).put(i)