Date de remise: 5 mars 2020 à 23h59
Due date: 23h59 on March 5th, 2020
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!
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!
Pour calculer le visage moyen d'un ensemble de personnes, il faut
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:
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.
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.
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.
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.
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
.
NaN
(Not a Number) dans votre image morphée. Essayez de trouver une méthode pour détecter et gérer ces cas.NaN
(Not a Number) values. Try to find a way to detect and manage these situations.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.
dlib
;dlib
;dlib
;dlib
;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.
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!
strfind
or regexpi
.Pour cette section, incluez les résultats suivants dans votre rapport:
For this section, include the following results in your report:
dlib
pour détecter les points d'intérêts dans vos photos. Ajoutez de la musique à votre vidéo pour un effet encore plus réussi!dlib
to detect the facial keypoints in your photos. Add music to your video for added effect!dlib
pour chacune des images du vidéo. Ensuite, déformez votre visage pour qu'il «parle» de la même façon que la personne dans la vidéo originale. Est-ce que l'effet est convaincant?dlib
for each frame in the video. Then, deform your own face so that it can "talk" as the person in the original video. Is the effect convincing?Pour la remise de votre travail, créez un fichier tp3b.zip
qui contient:
tp3b/web
. Vos images doivent être dans un dossier tp3b/web/images
.tp3b/code
. N'incluez pas les images que vous avez utilisées pour produire vos résultats dans ce dossier dans le but de ne pas alourdir le fichier.tp3b/video
.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!
For this homework, you must create a tp3b.zip
file. In this file you'll put:
tp3b/web/
.Your result images inside a folder named tp3/web/images
.tp3/code
. Do not include the images you have used to generate your results inside this folder, as this will likely generate huge files.tp3/video
.
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!
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!