TP3B: Métamorphose de visages++ (English version) Posez une question sur ce TP!

HW3B: Faces morphing++ (version française) Ask us a question!

morph mean face
Visage moyen de la base de données d'Utrecht
Average face of the Utrecht database

Survol

Dans la partie A de ce travail, vous avez implanté un algorithme de métamorphose. Cela vous a permis de morpher votre visage vers celui de quelqu'un autre, ou peut-être même de morpher un objet ou un animal vers autre chose. Dans cette partie du travail, vous utiliserez votre algorithme de métamorphose afin de calculer le visage moyen d'un ensemble de visages.

En créant un visage moyen, vous aurez l'occasion d'observer les traits et les formes dominants d'un ensemble de visages. De plus, il est possible d'utiliser la forme d'un visage moyen pour modifier un visage ; chose que vous ferez en vous prenant comme cobaye!

Overview

In part A of this assignment, you implemented a morphing algorithm. You used this algorithm to morph your face toward the face of someone else, and perhaps you morphed and animal or an object toward another things. In this part, you will have to calculate the average face of a face dataset using morphing.

In generating this average face, you will be able to notice dominant traits and shapes in a face set. Furthermore, it is possible to use the shape of an average face to modify a face; in the context of this assignment, you will do it on your face!

1. Calcul du « visage moyen » (80%, 60% pour les étudiants gradués)

1. Computing the "average face" (80%, 60% for graduate students)

Pour calculer le visage moyen d'un ensemble de personnes, il faut

  1. détecter les visages et identifier les caractéristiques du visage
  2. calculer la forme du visage moyen
  3. déformer tous les visages dans cette forme
  4. calculer la moyenne de toutes ces images.

Cette technique exige un marquage uniforme de tous les visages. Dans ce TP, vous devrez utiliser les photos des étudiants du cours, ainsi que l'ensemble d'images de la base de données d'Utrecth (source). Celle-ci contient 131 images de 69 personnes : 20 femmes et 49 hommes.

To calculate the average face of a set of persons, we must:

  1. detect faces and identify facial features
  2. compute the average shape
  3. warp all faces into that shape
  4. average the colors together

This requires consistent labeling of all the faces. In this homework, you will have to use the photos from our class, as well as the Utrecht face image dataset (source). This dataset contains 131 images of 69 persons: 20 women and 49 men.

1. Détection des visages et des caractéristiques

1. Face and facial feature detection

Dans l'ensemble d'images mentionné plus haut, vous ne connaissez pas la position des visages et encore moins la position des points caractéristiques de celui-ci. Puisqu'il serait fastidieux de sélectionner manuellement les points de tous les visages comme vous deviez le faire dans la partie A, nous utiliserons un algorithme de détection de points d'intérêts automatique. Pour ce faire, nous vous fournissons un script python qui détecte automatiquement ces points sur un visage.

In the faces dataset mentioned earlier, you do not know the face position, let alone its landmarks. Since it would be impractical to manually select every features of every faces, we will be using an automatic face and face landmarks detector. For this, we provide you with a python script to allow you to get the points on the faces.

Pour utiliser le script python, il faut préalablement installer la libraire dlib avec les commandes

pip install cmake
pip install dlib

Vous pouvez ensuite utilisez le script de cette façon:

python3 face_landmark_detection.py -d utrecht/ -o output/

L'argument -d indique le répertoire contenant vos images, et -o le répertoire où seront enregistrés les fichiers contenant les points d'intérêt.

To use the python script, you must first install the dlib library with the command

pip install cmake
pip install dlib

You can then use the script this way:

python3 face_landmark_detection.py -d utrecht/ -o output/

The -d argument is for the directory containing your images, and the -o argument is for the directory where you want your files containing the keypoints to be stored.

ultrech face detection
Une image de la base de données d'Utrecht avec le visage et ses caractéristiques détectés automatiquement.
One image from the Utrecht database with the face and facial features automatically detected.

Vous remarquerez (voir figure ci-dessus) que la sortie du détecteur vous donne un rectangle de détection ainsi que 68 points d'intérêts entre les sourcils et le menton. Si un visage n'est pas détecté dans une image, retirez cette image de votre ensemble.

You will notice (see figure above) that detector output is a bounding box as well as 68 features points between the eyebrows and the chin. If a face is not detected in an image, you should remove it from your set.

2. Calculer la forme du visage moyen

2. Average face shape calculation

Le calcul de la forme du visage moyen se fait de la même façon que pour la métamorphose habituelle (partie A du travail). Vous devez calculer la moyenne de la position des points caractéristiques de tous les visages détectés.

The average face shape calculation is done the same way than the normal morphing approach (part A of this assignment). You have to average the position of every feature points of every detected face.

3-4. Déformation et moyennage

3-4. Warping and averaging

Une fois la forme du visage moyen calculé, vous devez déformer chacun des visages détectés vers celle-ci en utilisant votre algorithme de métamorphose de la partie A. Puisque tous les visages ont maintenant la forme du visage moyen, il est possible de directement additionner toutes ces images et d'en calculer la moyenne. Attention, convertissez vos images en « float » avant de calculer la moyenne.

Once the average face shape calculated, you must deform each detected face towards it; use your implementation from part A of this assignment. Since all faces now have the shape of the mean face, we can compute their mean. Beware, convert your images in floating point values before you compute the mean.

Suggestions

Tips

Crédits supplémentaires

Bells and Whistles

Créez un fichier nommé main_visagemoyen.py qui exécute cette partie du TP.

Create a file named main_visagemoyen.py which executes this part of the homework.

Partie 2: Masculinisation et féminisation de votre visage (20%)

Part 2: Masculinizing and feminizing your own face (20%)

Créez un visage moyen pour tous les visages de femmes et un visage moyen pour tous les visages d'hommes dans la base de données d'Utrecht. Ensuite, masculinisez et féminisez-vous en morphant votre visage avec le visage moyen masculin et féminin!

First, you generate the average face for woman faces and the average face for man faces in the Utrecht database. Then, masculinize and feminize yourself by morphing your face with the mean man and woman faces!

Suggestions

Tips

Crédits supplémentaires

Bells and Whistles

Créez un fichier nommé main_editionvisage.py qui exécute cette partie du TP.

Create a file named main_editionvisage.py which executes this part of the homework.

Livrables

Deliverables

Incluez les informations suivantes dans votre rapport. Rappel : votre rapport doit présenter vos résultats des deux parties (A et B) de votre projet!

Partie A (50% de la note totale du TP)

Partie B (50% de la note totale du TP)

Idées pour les discussions

L'objectif des discussions dans vos rapports est que vous nous fassiez part de vos réflexions sur vos résultats. Tentez d'être précis(es) dans vos descriptions. Voici quelques idées :

Include the following in your report. Reminder : your report must present results from both parts (A and B) of the homework!

Part A (50% of total grade)

Part B (50% of total grade)

Ideas for discussions

The main objective is that you share your thoughts on your results with us. No need to write a novel, just try to be precise. Here are some ideas:

Remise

Pour la remise de votre travail, créez un fichier tp3b.zip qui contient:

Finalement, veuillez téléverser votre fichier tp3b.zip sur le portail des cours avant la date limite. La politique des retards mentionnée dans le plan de cours sera appliquée. Pour toutes questions concernant la procédure de remise ou le travail lui-même, contactez-nous sur PAX!

Attention! La taille limite permise sur le portail des cours est de 250MB.

Handing in procedure

For this homework, you must create a tp3b.zip file. In this file you'll put:

Finally, you should upload this file (tp3.zip) on the "portail des cours" before the deadline. The late submission policy described in the course plan will be applied. For any question regarding the submission process or the project as such, ask us on PAX!

Be careful! File size limit on the "portail" is 250MB.

Liens rapides

Quick links

Remerciements

Thanks

Merci à Alyosha Efros d'avoir créé le TP original qui a servi d'inspiration pour celui-ci!

Many thanks to Alyosha Efros for creating the assignment which inspired this one!

Retour à la page web du cours.

Back to the class webpage.