domingo, 9 de julio de 2017

Modulo 3 Deteccion de puntos de referencia, aplicaciones y uso.






Module 3.1 Facial Landmark Detection Applications & Usage
Table of Content
1. Facial Landmark Detection
2 Applications of Landmark Detection
2.1.1 Facial feature detection improves face recognition
1.1.2 Head pose estimation
1.1.3 Face Morphing
1.1.4 Face Averaging
1.1.5 Face Swap
1.1.6 Virtual Makeover
1.1.7 Blink & Drowsy Driver Detection
1.1.8 Face Filters
2. Dlibs 68-Points Model
3. Applying Facial Landmark Detection
2.1 Facial Landmark Detection Code & Tutorial
2.2 Displaying Writing Facial Landmarks to Disk
2.3 Writing Facial Landmarks to Disk
References and Further Reading

En este módulo, se explica lo que se conoce como “facial landmark”, que podríamos definir como unos hitos o puntos de referencia en la cara de cada persona como son los extremos de los ojos, la punta de la nariz, las comisuras de los labios. Una vez detectados estos puntos tienen aplicación para mejorar el reconocimiento de rostros, estimar la posición espacial de la cabeza, hacer la transformación de un rostro en otro, lo que se conoce como “morphing”, el promedio de los rasgos de varias caras, el intercambio de rostros, maquillaje virtual, detección de pestañeo y de que un conductor se duerme al volante, filtros para rostros como, bigote, barba y/o peluca postizos, accesorios como gafas, piercing etc.
Se presenta el modelo “Dlib” que genera una salida de 68 puntos de referencia que se pueden desplegar sobre la imagen de la persona, guardar en disco etc.

Module 3.2 How to Speed Up Facial Landmark Detection
Table of Content
1. How to speed up facial landmark detector
1.1. Compile Dlib in Release Mode with Optimizations turned on
1.1.1. Using CMAKE
1.1.2. Using Visual Studios
1.1.3. Using Qt
1.2. Speed Up Face Detection
1.2.1. Resize Frame
1.2.2. Skip frame
1.3. Optimizing Display
1.3.1. Resize Frame
1.3.2. Custom Face Renderer
1.4. Results
2 Speed Up Code & Tutorial
References and Further Readings
En este módulo, se explican métodos para aumentar la velocidad del detector de referencias faciales. Los cambios que más nos aportan son:
1.- Compilar Dlib en el modo “reléase”.
2.- Reducir el tamaño de los fotogramas.
3.- Saltar algunos fotogramas.
Para optimizar el desplegado de los puntos de referencia.
1.- Reducir el tamaño de los fotogramas.
2.- Usar un “render” hecho especialmente para desplegar los resultados.


Module 3.3 Stabilizing Landmark Points in Videos
Topics Covered
How to stabilize landmark points in a video
1. Moving average : A simple solution
2. Kalman Filtering
3. Optical Flow
3.1 What is Optical Flow?
3.2 Brightness Constancy Assumption
4. Lucas-Kanade Optical Flow
5. Handling Large Motion
5.1 What are Image Pyramids?
Combining Detection and Tracking
Stabilizing landmarks using OpenCV
References and Further readings


En este módulo, se explica cómo estabilizar los puntos de referencia en los videos. Para ello, consideramos cuatro variables:
1.- La ubicación de un punto de referencia en el fotograma actual.
2.- La ubicación del mismo punto de referencia en el fotograma anterior.
3.- La intensidad de los pixeles en una pequeña ventana alrededor del punto de referencia en el fotograma actual.
4.- La intensidad de los pixeles en una pequeña ventana alrededor del punto de referencia en el fotograma anterior.
Los métodos para calcular la nueva ubicación de reemplazo de los puntos de referencia son:
1.- Promedio móvil, que puede ser simple o ponderado.
2.- Filtrado Kalman.
3.- Flujo óptico, que no es otro que el vector velocidad de un punto. Si se calcula para todos los puntos del fotograma, se le llama “flujo óptico denso”, si solo se consideran algunos puntos, se llama “flujo óptico disperso”.


Module 3.4  Machine Learning, Algorithms Basics
Table of Contents
1. Supervised vs Unsupervised Learning Algorithms
2. Classification vs. Regression Problems
3. Decision Trees
3.1 Classification Trees
3.2 Regression Trees
3.3 What does it mean to train a decision tree?
3.4 The Pros and Cons of using Decision trees
4. Ensemble Methods in Machine Learning
4.1 Bagging
4.2 Boosting
4.3 Gradient Boosting
5. References and Further Reading

En este módulo, se pretende dar unas nociones básicas de aprendizaje automatico, la jerga que utiliza y los algoritmos básicos.
La distinción entre el aprendizaje supervisado y sin supervisión está en que las imágenes pueden estar etiquetadas o no.
Los problemas de clasificación etiquetan las imágenes según la clase a la que pertenecen (ejemplo hombre, mujer)
Los problemas de regresión dan como resultado un valor de una variable continua, por ejemplo la edad de la persona en la imagen.
Arboles de decisión, en cada nodo hay una pregunta y la respuesta te dirige hacia el nodo siguiente, la respuesta final está en los nodos de las hojas del árbol.
Entrenar un árbol de decisión quiere decir encontrar que característica dividir en cada nodo y que umbral usar.
Conjunto de clasificadores (Ensemble Learning)
“Bagging” Construir nuevos conjuntos de entrenamiento usando “bootstrap”:
muestreo con reemplazo de las instancias.

“Boosting”
Comenzar con un modelo (simple) entrenado sobre todos los datos: h0
–En cada iteración i, entrenar hi dando (gradualmente) mayor importancia a los datos mal clasificados por las iteraciones anteriores.
–Terminar al conseguir cierto cubrimiento, o luego de un número de iteraciones.
–Clasificar nuevas instancias usando una votación ponderada (p.ej.) de todos los clasificadores construidos.


Module 3.5 Theory of Facial Landmark Detection
Table of Contents
Facial Landmark Detection : Theory
Dlibs Facial Landmark Detector
Data
Cascade of Regressors
Learning a Regressor
What is inside the black box?
Features used in landmark detection
Choosing the node split
References and Further Reading


En este módulo,  se presenta la detección de los puntos de referencia faciales, la teoría detrás del detector Dlib de puntos de referencia faciales.
Se explica el método de cascada de regresores, donde se puede pensar de cada uno de los regresores como una caja negra con las siguientes entradas y salidas.
Entrada
1.- Forma estimada en uso.
2.- La imagen de la cara de entrada.
Salida
1.- El cambio en el estimado actual que producirá una forma estimada mas refinada (un mejor estimado de la localización de los puntos de referencia).
Cada regresor es una colección de regresores débiles y cada regresor débil es un árbol de decisión. Cada regresor rt es entrenado usando un “gradient boosting” lo que significa que un regresor débil en la secuencia aprende a predecir y por tanto a corregir el error por el regresor en el paso anterior.
Las características usadas en la detección de puntos de referencia son las diferencias entre dos pixeles elegidos aleatoriamente en la cara. La ubicación de los pixeles son definidas con respecto al promedio de la forma usando todas las imágenes en el conjunto de entrenamiento.


Module 3.6 How to Train a Custom Facial Landmark Detector
Table of Content
Introduction
Train 70-points Facial Landmarks
Data
Visualize Annotations
Train-Test Data Preparation
Training
Train 33-points Facial Landmarks
Data
Visualize Annotations
Train-Test Data Preparation
Training
References and Further Reading

En este modulo, se ofrece una dirección en Google drive donde se encuentran los archivos con las imágenes y las anotaciones de las etiquetas sobre la posición de los puntos de referencia facial en conjuntos de 70 puntos y de 33 puntos, también hay programas para visualizar los datos y entrenar el detector.

Assigments
This week there isn’t any assignment. On the other hand I am off the track because I am waiting to get my 64 bits computer, after that I will try to install at least the basic stuff: Visual Studio 15, Cmake, Anaconda and Dlib. If the computer is operating successfully all that software I will be on track again to try some of the concepts in module 3.
While I was waiting for my computer, I found this web page on “face landmarks” https://www.faceplusplus.com/landmarks/#demo  , it is online and you can upload an image and they process the image and return the landmark drawing points on your image and the landmark coordinates in a JSON file that you can copy and convert easily to a .yml file that my actual 32 bits OpenCV ver 2.4.10 can read. I wrote some lines of code that read this .yml file and draws some lines joining the landmark points the way I liked in the nose and other features.
Here I show you some of the images from the program output.







I hope that with Dlib, we will get landmark points fitting tighter than the previous ones.
I’ll be back next Sunday with something else.



No hay comentarios:

Publicar un comentario