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. Dlib’s 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
Dlib’s 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