GithubHelp home page GithubHelp logo

midusi / proyecto2019 Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 1.0 90.34 MB

Proyecto de investigación y desarrollo con alumnos. Detección de atributos faciales.

Home Page: https://midusi.github.io/proyecto2019

License: GNU Affero General Public License v3.0

JavaScript 20.15% Dockerfile 0.13% HTML 0.19% CSS 79.53%

proyecto2019's People

Contributors

facundoq avatar okason97 avatar ulises-jeremias avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

okason97

proyecto2019's Issues

To Do

Pantalla inicial

  • Elegir la seleccion de imagenes.

Juego - Emoción X

  • Recuadro sobre la cara (mostrar feedback binario) @okason97
  • Texto instructivo
  • Cuenta regresiva
  • Elegir pack de iconos (facebook) @ulises-jeremias

Pantalla de resultados

Aplicación web para localizar caras

Durante la última semana estuvimos con @okason97 desarrollando una app js con ReactJS la cual permite obtener imagenes de la webcam del usuario y realiza un reconocimiento y extracción del rostro de la persona que esté en frente utilizando Yolo.

Aquí se puede encontrar una descripción de Yolo y una comparación de performance con OpenCV.

Para esto se utiliza la librería face-api.js. face-api.js es una API de JavaScript para la detección y reconocimiento facial en el navegador implementado por encima de tensorflow.js.

Una de las principales propuestas de este desarrollo es delegar el correcto funcionamiento de la captura de imagenes al navegador, por lo que realizar la aplicación web resulta bastante conveniente en este sentido, y por otro lado, ejecutar los modelos de reconocimiento facial en el navegador no presenta reales perdidas de performance y la implementación de Yolo hace que sea realmente rápido.

Conversión de modelos

Creo esta issue para dar lugar a la discución sobre que estandar de modelos utilizar y el pipeline de conversión entre cada una de las herramientas.

Basándome en la reunión de hoy investigué la posibilidad de migrar modelos de Keras a TF.js y de Pytorch a TF.js y para ambos casos encontré distintas variantes de conversión las cuales podrían funcionar.

deep-learning-model-convertor es un repositorio con mucha información sobre herramientas y pipelines que permiten conversión de modelos. En ese repo encontré esto pytorch-tf que permitiría pasar de Pythorch a TF, y posteriormente a TF.js. Por otro lado encontré import_keras que explica como importar modelos de keras en tfjs.

Además vi este post el cual explica que el pipeline más conveniente para migrar modelos de pytorch a tfjs sería PyTorch -> ONNX -> TensorFlow -> TensorFlow.js. Y leyendo un poco sobre ONNX se explica muy bien el porque de ese pipeline.
Sin embargo, siempre está la variante PyTorch -> Keras -> TensorFlow -> TensorFlow.js.

Primeros modelos entrenados

  • Las redes fueron entrenadas usando los 7 sentimientos.
  • El 70% de las imágenes de cada sentimiento fueron usadas para el entrenamiento, El 30% restante fueron usadas para obtener las métricas de rendimiento.
  • Para el entrenamiento se usó data augmentation (ImageDataGenerator) y como optimizador Adam.

Dataset: expressions in the wild

Usando la red entrenada con el dataset expressions in the wild.
Metrica Angry Disgust Fear Happy Sad Surprise Neutral
precision 0% 50% 0% 58.36% 0% 33.33% 79.58%
recall 0% 4.87% 0% 89.34% 0% 0.90% 56.06%
accuracy 98.10% 98.98% 99.85% 69.07% 97.83% 97.23% 70.34%
f-measure 0% 8.88% 0% 70.60% 0% 1.76% 65.78%
Usando la red entrenada con el dataset facial_expressions.
Metrica Angry Disgust Fear Happy Sad Surprise Neutral
precision 0% 0% 0% 53.83% 0% 28.57% 79.56%
recall 0% 0% 0% 93.77% 0% 10.90% 41.53%
accuracy 98.13% 98.98% 99.85% 63.98% 98.18% 96.81% 64.85%
f-measure 0% 0% 0% 68.39% 0% 15.78% 54.58%

Dataset: facial_expressions

Usando la red entrenada con el dataset facial_expressions.
Metrica Angry Disgust Fear Happy Sad Surprise Neutral
precision 0% 0.5% 0% 58.36% 0% 33.33% 79.58%
recall 0% 4.87% 0% 89.34% 0% 0.90% 56.06%
accuracy 98.10% 98.98% 99.85% 69.07% 97.83% 97.23% 70.34%
f-measure 0% 8.88% 0% 70.60% 0% 1.76% 65.78%
Usando la red entrenada con el dataset expressions in the wild.
Metrica Angry Disgust Fear Happy Sad Surprise Neutral
precision 4.34% 6.25% 0% 33.93% 36.44% 41.37% 61.28%
recall 0.54% 0.15% 0% 83.26% 2.43% 0.95% 47.26%
accuracy 94.96% 95.97% 98.76% 54.11% 88.91% 92.19% 62.01%
f-measure 0.96% 3.05% 0% 48.21% 4.55% 1.85% 53.37%

To Do

Pantalla inicial y final

  • Eliminar pantalla inicial y final.

Juego

  • Comenzar a contar el tiempo luego de detección estable (por mas de un frame)
  • Solo tomar ultimo frame
  • Cambio de emoción no random

Cambios a UI

Juego

  • Icono al centro con texto explicativo
  • Titulo del juego arriba
  • Sonido de cámara al final de la cuenta atrás

Pantalla de resultados

  • Podio

Brainstorming de aplicaciones

Discutamos idesa para las aplicaciones.

  1. Simple detector de emociones. Sin tracking. Con varios usuarios en tele grande o uno solo en celular.
  2. Idem con atributos.
  3. Generador automático de avatar en base a atributos (y emociones) . Sin tracking. Con varios usuarios en tele grande o uno solo en celular.
  4. "actuá las N emociones". Un solo usuario, trackeo (más complejo en tele grande), app con estado.
  5. .....

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.