TP3: Morphage de visages, partie B (English version)

HW3: Faces morphing, part B (version française)

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 morphage. 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 morphage 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 vous suggérons d'utiliser le détecteur de visage et caractéristiques du visage suivant.

Nous vous fournissons un script python pour vous permettre d'obtenir les points sur les visages. Pour ceux qui travaillent avec Matlab, cette partie se fera en python, mais vous n'aurez pas besoin de travailler dans le code.

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 invite you to use this face and face landmarks detector.

We provide you with a python script to allow you to get the points on the faces. For those who work with Matlab, this part will be done in python, but you will not need to work in the code.

Pour utiliser le script python, il faut préalablement installer la libraire dlib avec la commande pip install dlib --verbose. Vous pouvez ensuite utilisez le script de cette façon:

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

L'argument -d est pour le répertoire contenant vos images, et l'argument -o est pour le répertoire où sera stocké 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 dlib --verbose . 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 le morphage normal (partie A de ce travail). Vous devez faire 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 morphage de la partie A.

Once the average face shape calculated, you must deform each detected face towards it; use your implementation from part A of this assignment.

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, si vous additionnez toutes les images sur des valeurs de type entier non-signés de 8-bits (uint8), les valeurs des pixels vont excéder la valeur maximale pouvant être représentée par un uint8 (c'est-à-dire 255). Convertissez vos images avec im2double pour éviter ce problème.

Since all faces now have the shape of the mean face, we can compute their mean. Beware, if you add all the images on 8-bit unsigned integer type (uint8), pixel values will exceed the maximum value that uint8 can represent (which is 255). To avoid this problem, convert your images with im2double.

Suggestions

Tips

Crédits supplémentaires

Bells and Whistles

Livrables

Deliverables

Pour cette section, incluez les résultats suivants dans votre rapport:

(20%) Vous devez tout d'abord présenter vos résultats obtenus dans la partie A du travail. Présentez vos résultats, vos crédits supplémentaires (s'il y a lieu), et discutez.

For this section, include the following results in your report:

(20%) You must first present the results you have obtained in part A of this assignment . Present your results, your bells & whistles (if any), and discuss.

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

Livrables

Deliverables

Pour cette section, incluez les résultats suivants dans votre rapport:

For this section, include the following results in your report:

Crédits supplémentaires

Bells and Whistles

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, utilisez Piazza!

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, use Piazza!

Beware! 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.