Git Product home page Git Product logo

aa_2021's Introduction

Sistema de detección de mascarillas en rostros




Build Status License Contributors Julia Version Flux Version ScikitLearn Version

Autores

  • Pedro Guijas Bravo
  • Eliseo Bao Souto
  • Daniel Boubeta Portela
  • Eduardo Pérez Fraguela
  • Héctor Padín Torrente

Dependencias

julia> import Pkg; Pkg.update();
julia> Pkg.add("DelimitedFiles");
julia> Pkg.add("Flux");
julia> Pkg.add("PyPlot");
julia> Pkg.add("ScikitLearn"));

Introducción

Debido a las circunstancias en las que nos encontramos, reconocer caras con mascarillas se ha vuelto una necesidad que los sistemas de reconocimiento facial pre-pandémicos no son capaces de llevar a cabo. En este trabajo se propone un sistema simple que intenta imitar el proceso interno de reconocimiento facial para reconocer si un individuo lleva mascarilla o no, mediante las dos etapas básicas que conforman un sistema automático: extracción de características de una cara y clasificación de esta en una de las tres clases dadas (no es un rostro, es un rostro, rostro con mascarilla).

Para resolver el problema, utilizaremos una Redes de Neuronas Artificiales (RR.NN.AA.) densas y Redes de Neuronas Convolucionales (C.N.N.), Máquinas de Soporte Vectorial (SVM) o en inglés Support Vector Machine, k-vecinos próximos (KNN), en inglés k-Nearest Neighbors. En las RR.NN.AA., probaremos con distintas arquitecturas, de forma que nos quedemos con la configuración que mejores resultados obtenga y mejor se adapte al problema.

Dataset

La Base de Datos (BD) del problema (ver aquí) ha sido realizada por nosostros mismos. Para crear la base de datos, elegimos minuciosamente las imágenes siguiendo las pautas previamente establecidas en las restricciones, sacando las fotos de nuestros conocidos o familiares y de internet en páginas como This person does not exist. Cuenta con 140 imágenes de caras sin mascarillas, 140 imágenes de no-caras y 140 imágenes de caras con mascarillas.

Cara Cara con mascarilla No cara
cara cara con mascarilla no cara

Para generar el archivo faces.data (ya existe en el repositorio), ya sea porque se quiere cambiar la extracción o por el motivo que sea, será necesario descargar el dataset con imágenes. También será necesario descargarlo si queremos ejecutar el modelo de CNN, que se encuentra en DL.jl, ya que a estos modelos se les pasan las imágenes en 'crudo'. Actualmente se aplica la extracción de características que aparece en la siguiente imagen, aun que se pueden aplicar hasta 8 extracciones diferentes.



Generación del dataset

Tenemos un archivo llamado dataset.zip, que contiene todas las imágenes que utilizamos en el desarrollo de la práctica. Por lo tanto, para cambiar la extracción llegaría con descomprimir este archivo en la ruta en la que se encuentra.

cd datasets
unzip datasets.zip

Resultados

Se muestran a continuación las bondades finales para los distintos modelos con sus parámetros óptimos (en las CNN el resultado de la precisión es tan solo en un entrenamiento).

RNA CNN SVM Árbol de Decisión KNN
Precision 91.12% 100% 95.63% 82.78% 90.36%
F1-Score 90.95% 100% 95.54% 82.60% 90.47%

En los siguientes cuadros mostramos las matrices de confusión finales para nuestros modelos, ejecutando también cada uno de ellos con los parámetros óptimos:

Cara Mascarilla No Cara
Cara 16 0 0
Mascarilla 0 12 0
No Cara 0 0 13

Matriz de confusion para RNA.

Cara Mascarilla No Cara
Cara 16 0 0
Mascarilla 0 12 0
No Cara 0 0 13

Matriz de confusion para SVM con kernel gausiano.

Cara Mascarilla No Cara
Cara 11 0 0
Mascarilla 0 15 0
No Cara 1 1 10

Matriz de confusion para KNN.

Cara Mascarilla No Cara
Cara 19 0 0
Mascarilla 1 11 2
No Cara 1 1 5

Matriz de confusion para Árboles de Decisión.

aa_2021's People

Contributors

hectorpadin1 avatar pguijas avatar daniboube avatar eliseobao avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

hectorpadin1

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.