Génération Vidéo Automatique avec GANs
Génération Vidéo Automatique avec GANs
*-*-*-*-*
HAUT COMMISSARIAT AU PLAN
*-*-*-*-*-*-*-*
INSTITUT NATIONAL
DE STATISTIQUE ET D’ECONOMIE APPLIQUEE
INSEA
Résumé :
Cette mémoire a pour objectif de donner un aperçu de stage que j'ai effectué au sein
de l’université Mohammed 6 polytechnique dont La thématique du projet repose sur la
génération des vidéos à l’aide des GANs, utile à l’évolution et à l’amélioration des services
du E-Learning.
En effet, de plus en plus aujourd’hui, la technologie est présente partout et que tous
les organismes se précipitent à l’intégrer dans leurs services, la raison pour laquelle L’UM6P
a lancé ce projet.
Ce système a pour objectif de pouvoir travailler dans la plus grande commodité́ avec
une rentabilité́ accrue. ce projet est un système de génération des vidéos à partir des textes,
est mis en place pour automatiser leur traitement.
➢ Text2speech.
➢ Audio2mouth.
2
Table des matières
3
Table des matières
4
Table des matières
Motivation : .................................................................................................................................... 50
1- Outils utilisés : ........................................................................................................................ 50
1- Description de la dataset : ....................................................................................................... 54
2- Data Preprocessing :................................................................................................................ 55
2-1- Extraction des images à partir des vidéos : ........................................................................ 55
2-2- Extraction de l’audio : ........................................................................................................ 56
2-3- extraction des points clés de la bouche : ............................................................................ 58
2-4- extraction des points clés des audios : ................................................................................ 60
2-5- Analyse en composants principales (ACP) : ...................................................................... 61
2- Text2speech : ............................................................................................................................. 61
2-1- La génération de voix à l’aide de pyttxs3 : ........................................................................ 62
2-3- Génération à l’aide d’un réseau de neurone convolutif profond : ...................................... 64
2-3- Adaptation de voix : ........................................................................................................... 66
3- Audio-to-mouth :..................................................................................................................... 69
3-1- Méthodologie : ................................................................................................................... 69
3-2-Architecture : ....................................................................................................................... 71
5-1- Fonction de perte :........................................................................................................ 71
5-2- Résultat : ...................................................................................................................... 72
6- FACIAL TEXTURE SYNTHESIS : ...................................................................................... 73
4-1- Pix2Pix model : .................................................................................................................. 73
4-2- UNET : ............................................................................................................................... 76
4-3- Architecture : ...................................................................................................................... 77
4-4- Fonction de perte : .............................................................................................................. 77
4-5- Génération des images : ..................................................................................................... 78
Conclusion : ................................................................................................................................... 80
Chapitre 5 : Résultats & Discussion ................................................................................................. 81
Introduction .................................................................................................................................... 81
Motivation : .................................................................................................................................... 81
1- Qualité des images : ................................................................................................................ 82
1-1- Entrainement des images : ........................................................................................... 82
1-2- Similarité : .................................................................................................................... 84
1-3- Synchronisation vidéo-audio : ..................................................................................... 86
2- Contraintes : ............................................................................................................................ 86
3- Limites de projet : ................................................................................................................... 87
4- Perspectives :........................................................................................................................... 88
3-1- Audio to mouth :................................................................................................................. 88
3-2- FACIAL TEXTURE SYNTHESIS .................................................................................... 90
5
Table des matières
5- Apports : .................................................................................................................................. 91
6- Synthèse : ................................................................................................................................ 92
Conclusion : ....................................................................................................................................... 93
Références .......................................................................................................................................... 94
6
Liste des abréviations
7
Table de figures
Table de figures :
Figure 1 : Méthode scrum.
Figure 2 : Cycle CRISP-DM.
Figure 3 : Cycle CRISP-DM.
Figure 4 : Diagramme de Gantt
Figure 5 : Composants du GAN.
Figure 6 : Architecture VAE.
Figure 7 : Résultat de génération à travers VAE.
Figure 8 : Architecture de projet.
Figure 9 : Architecture des GANs
Figure 10 : Architecture RNN.
Figure 11 : Applications RNN.
Figure 12 : Schéma d’un réseau LSTM.
Figure 13 : Architecture d’un CNN.
Figure 14 : Couches du réseau CNN.
Figure 15 : Fonction linéaire.
Figure 16 : La fonction non linéaire.
Figure 17 : Fonction sigmoïde
Figure 18 : Fonction Tanh.
Figure 19 : La fonction softmax.
Figure 20 : Ligne de commande pour extraction des images
Figure 21 : Exemple des images extraites.
Figure 22 : Ligne de commande pour l’extraction des audios
Figure 23 : Waveforme d’un audio extrait.
Figure 24 : Spectrogramme de l’audio extrait
Figure 25 : L’index de 68 coordonnées de Dlib.
Figure 26 : Coordonnées de la bouche d’une image extraite.
Figure 27 : MFCCS des audios extraits.
Figure 28 : Waveforme de l’audio généré.
Figure 29 : Le spectrogramme d’audio généré.
8
Table de figures
9
Remerciement
Remerciement :
En préambule à ce mémoire, je rends grâce au Tout Puissant qui m’a aidé et m’a donné la
patience et le courage durant ces longues années d’étude.
Mes sincères remerciements sont adressés à M. Rafiq EL ALAMI qui m’a fait confiance et
m’a offert cette opportunité pour développer mes capacités dans le domaine du deep learning. Merci
infiniment.
Je tiens à remercier dans un premier temps mes professeurs et toute l’équipe pédagogique de
l’Institut National de Statistique et d’Économie Appliquée pour avoir assuré la partie théorique de
ma formation, durant mes 3 ans d'études à l'INSEA.
Également à M. Hamza Sbaai pour sa patience et son partage de connaissance qui était plus
que bénéfique pour moi. Je remercie aussi [Link] Salhi et M. Ayoub Bella pour leur
gentillesse et courtoisie.
Je remercie surtout toute ma promotion sans exception, ils m’ont été tous utiles au cours de
ce cursus scolaire. Je salue ainsi la cohabitation harmonieuse au sein de cette entité.
10
Dédicace
Dédicace :
Toutes les lettres ne sauraient trouver les mots qu’il faut. Tous les mots ne sauraient
exprimer la gratitude, l’amour, le respect, la reconnaissance.
A mes parents,
A la mémoire de mon cher père, je rêvais de ce jour-là pour que vous soyez fier de moi, de
ce que je suis aujourd’hui et de ce que je serai demain, mais malheureusement vous n’êtes plus avec
nous, que votre âme soit en paix.
Je dédie ce travail à ma petite sœur Rajae et mon grand frère Mohammed. Grâce à leur
soutien, leur tendresse, je n’aurai pas pu réaliser ce travail. Vous me complétez. Vous êtes mes
perles.
A Youness :
Je dédie ce travail aussi à Youness…. Mon conseiller, mon ami fidèle qui m’a assisté dans
les moments difficiles. Je te suis très reconnaissante, et je ne te remercierai jamais assez pour ton
amabilité, ta générosité, ton aide précieuse.
11
Abstract
Abstract:
In order to follow the wave and digitize its services, the DFR with the UM6P decided to
launch this project to facilitate the manipulation of videos. This system is designed to be able to
work in the greatest convenience with increased profitability. Our project is a system for generating
videos from text, which is set up to automate their processing.
This system implemented according to the architecture of LSTM and GANs aims to
supplement the DLL team who validate the videos courses and post them on the E-learning
platform.
This graduation report is part of the design and construction of a Complete System for
Generating Videos with GANs.
➢ Text2speech.
➢ Audio2mouth.
12
Introduction générale
Introduction générale :
Le progrès informatique et technologique n’a pas cessé d’avoir un impact primordial sur la
vie des populations, en constituant le socle de l’épanouissement et de l’amélioration des conditions
de vie.
En effet, L’intelligence artificielle est la science dont le but est de permettre à des machines
d’accomplir des tâches et de résoudre des problèmes normalement réservés aux humains et à
certains animaux. Cette discipline est devenue irrévocable car elle permet de simuler l’intelligence
humaine en permettant à une machine d’analyser et de comprendre un objet bien précis ainsi que
son fonctionnement.
Tels que les vidéos ainsi que les images qui sont de nos jours des supports pouvant en
contenir une multitude d’information. De ce fait ; il y a une obligation de les traiter, les reconnaître,
d’y stocker ou d’y extraire des informations. C’est pourquoi, de nombreuses recherches et de cas
d’utilisation des technologies de l’intelligence artificielle portent sur le traitement d’image.
Notamment en ce qui concerne le Machine Learning qui est une branche de l’intelligence artificielle
qui permet de mettre en place des programmes informatiques capables de réaliser des tâches sans
être explicitement programmés.
• Le deuxième chapitre présentera les approches populaires pour la génération des vidéos
ainsi qu'une exploration des recherches déjà faite sur le sujet.
13
Introduction générale
• Le troisième chapitre sera un aperçu sur des ensembles de données qu’on a utilisé tout au
long de ce projet avec une explication détaillée de l'étape de prétraitement, de la phase d'ingénierie
des caractéristiques, ainsi que de leurs résultats d'évaluation.
• Le quatrième décrit d'abord le modèle de base et sa mise en œuvre, puis explique nos
solutions proposées, leurs paramètres clés, la formation et le processus d'optimisation.
• Le dernier chapitre couvre les résultats et les limites obtenus à la fin, ainsi qu'une
explication étape par étape du résultat final, ses performances prévisionnelles sur l'ensemble des
tests.
14
Chapitre 1 : contexte général du projet
Chapitre 1 : Contexte
général du projet
Introduction :
Le but de ce chapitre introductif est de présenter le contexte général du projet. Tout d'abord,
il présente l'organisme d'accueil, son histoire, ses projets ainsi que la plateforme « E-learning »
Ensuite, on a prévu une présentation du cadre général du projet, en insistant sur sa problématique,
ses motivations et ses objectifs. Comme pour la dernière partie, l'accent sera mis sur la description
de la méthodologie adoptée pour mener à bien ce projet.
Motivation :
L’environnement dans lequel j’ai effectué le stage est considéré parmi les facteurs qui
peuvent affecter l’élaboration du projet, donc il est nécessaire de présenter l’organisme en premier
lieu puis on va se concentrer sur le besoin de ce dernier envers ce projet ainsi que la problématique
sans négliger la méthodologie adoptée lors de la réalisation.
15
Chapitre 1 : contexte général du projet
Inaugurée en 2017 par Sa Majesté le Roi Mohammed VI que Dieu L’assiste, dans le cadre
des grands projets de développement du Groupe OCP, l’UM6P ambitionne de s’ériger comme un
pôle universitaire de rang mondial. Elle a pour vocation d’offrir un cadre de vie attractif et
écologiquement exemplaire autour d’un écosystème du savoir. L’Université se positionne dans une
ville nouvelle, aux dimensions à la fois locale et nationale.
Construite par les architectes Ricardo Bofill et Elie Mouyal, l'Université et ses installations
ont été conçues pour l'enseignement et la qualité de vie à dimension humaine, où l'individu a sa
place [1].
2- Missions de l'UM6P :
Ayant pour mission principale le développement du savoir, de la science et de la technologie,
l’Université s’est fixée de grandes ambitions :
16
Chapitre 1 : contexte général du projet
• Promouvoir la recherche.
3- Partenaires de l'UM6P :
Parmi les institutions avec lesquelles l’Université a initié des collaborations :
17
Chapitre 1 : contexte général du projet
• SciencesPO, France.
✓ 540 : Étudiants.
✓ 120 : Doctorants.
✓ 5 : Formations Postbac.
✓ 5 : Masters.
✓ 7 : Masters Exécutifs.
✓ 10 : Certificats.
✓ 17 Ha de Superficie du campus.
18
Chapitre 1 : contexte général du projet
6- État de l’art :
Suivre des cours en ligne est devenu une tendance voire une obligation vu les opportunités
qu’ils offrent et aussi les circonstances qu’on vit ces jours-là. Surtout qu’on a la possibilité d’avoir
des certificats des universités ou des organisations internationales à partir de chez soi.
Ces cours sont souvent sous format vidéo pour plus d’interaction, mais pour produire des
vidéos si parfaites, un long processus est fait derrière. Ce processus peut être compliqué et
interrompu des fois à cause des erreurs qui sont commis par les professeurs ou les caméramans lors
de l’enregistrement.
Pour corriger ces imperfections, les spécialistes utilisent des logiciels de montages pour
avoir un résultat cohérant, ce montage peut causer la perte de grandes parties du cours ce qui
demande la plupart du temps de filmer de nouveau la partie manquante.
Dans cette partie, l’objectif est de discuter l’état de l’art des nouvelles technologies qui
peuvent remplacer les méthodes existantes.
7- Contexte du projet :
6-1- Analyse du besoin :
C’est un dispositif d’apprentissage qui est organisé à distance et en ligne, à partir de l’outil
informatique (tout objet connecté et une connexion internet). Il consiste à mettre à disposition d’un
apprenant ou d’un groupe d’apprenants des modules qui délivrent un contenu pédagogique et qui
peuvent inclure différentes interactions comme des Tests, des Qcm et des Tps. Pour se former les
plateformes « E-learning » se structurent autour de vidéos, d’animations, de textes, et de tests en tout
genre.
19
Chapitre 1 : contexte général du projet
Ces jours-là, Le Maroc vit des circonstances particulières avec la pandémie COVID-19.
Pour cela l’UM6P et plus précisément le Digital Learning Lab a développé une plateforme e-
learning (Figure 1) destiné aux élèves de classes préparatoires pour leur présenter les cours de
maths et physique sous forme de vidéos avec des description de chaque partie. L’intérêt principal de
ce projet est de permettre aux étudiants de bénéficier d’une salle de classe virtuelle et mobile où Le
cours devient accessible 7 jours sur 7, 24h sur 24, tout en contrôlant le temps de leur apprentissage.
La majorité des vidéos présentées sur la plateforme doit respecter des exigences bien
précises qu’on peut les résumer dans la qualité des vidéos faites pour faciliter la compréhension aux
étudiants, et aussi la disponibilité des professeurs pour présenter leurs cours.
Donc ce projet s’inscrit dans le cadre d’amélioration de la qualité des vidéos offertes et la
génération d’autres qui sont plus lisible que les précédentes.
Le problème c’est que ces vidéos peuvent contenir des fautes commises par les professeurs.
Souvent, elles peuvent se résider dans l’articulation des mots ou bien au niveau du visage du
professeurs.
20
Chapitre 1 : contexte général du projet
Chaque professeur prononce un mot d’une manière différente des autres, mais il peut
commettre une erreur lors de l’articulation d’une lettre c’est-à-dire quand il dit « Bonjour », ce qui
sort de sa bouche n’est pas compatible avec ce qu’il doit dire.
Il se peut aussi qu’un professeur lors de sa présentation du cours, ferme ses yeux ou bien
éternue ; ce qui va rendre la vidéo imparfaite.
C’est alors dans cette perspective que ce sujet de stage de fin d’études se présente afin de
répondre aux questions suivantes :
• Comment peut-on bénéficier des vidéos précédentes pour réaliser nos objectifs ?
• Quelles sont les critères à respecter pour avoir une vidéo réaliste ?
L’UM6P est aussi attirée par cette vague, surtout qu’elle stock une large masse de données ;
c’est la raison pour laquelle elle utilise cette science souvent dans ces projets.
L’idée de la mise en place d’un projet de génération des vidéos vient pour offrir aux étudiants
une meilleur expérience durant leur utilisation de la plateforme, ce projet se compose de plusieurs
modèles. Commençant par le modèle TEXT2SPEECH qui va générer un audio à partir d’un texte en
adaptant la voix avec celle du professeur. Puis la génération du contour de la bouche selon le mot qui
va prononcer le professeur va se faire à l’aide d’un modèle appelé AUDIO TO MOUTH puis on va
utiliser le FACIAL TEXTURE SYNTHESIS afin d’adapter le visage du professeur avec le cadre de
la vidéo et faire le fine tuning ou bien les dernières retouches.
• Corriger les fautes commises par les professeurs dans les vidéos.
21
Chapitre 1 : contexte général du projet
7- Études conceptuelles :
7-1- Méthode adoptée :
Avoir une méthode de gestion est nécessaire pour réussir chaque projet. Chaque méthode
fournit des étapes de processus. Ainsi que l’utilisation de cette méthodologie nous permet
d’éliminer le besoin et de réinventer la roue pour chaque nouveau projet. Dans notre cas, et pour
réussir un bon déroulement du projet on a choisi le Framework agile d’organisation de produits
complexes SCRUM (Figure 2).
22
Chapitre 1 : contexte général du projet
explication des relations entre ces tâches et aussi un modèle de processus car elle offre un aperçu du
cycle de vie de l’exploration de données
• Connaissance du Métier.
• Évaluation.
• Déploiement.
✓ Compréhension du problème :
La première étape insiste sur la bonne compréhension des éléments métiers et
problématiques que la Data Science vise à résoudre ou à améliorer puis transformer ces
connaissances en une définition de problème d'exploration de données et un plan préliminaire.
✓ La modélisation :
Puisque certaines techniques comme les réseaux de neurones ont des exigences spécifiques
concernant la forme des données. Cette étape comprend le choix, le paramétrage et le test de
23
Chapitre 1 : contexte général du projet
✓ L’évaluation :
L’évaluation vise à vérifier les modèles ou les connaissances obtenues afin de s’assurer
qu’ils répondent aux objectifs formulés au début du processus. Elle contribue aussi à la décision de
déploiement du modèle ou, si besoin est, à son amélioration. A ce stade, on teste notamment la
robustesse et la précision des modèles obtenus.
✓ Le déploiement
Il s’agit de l’étape finale du processus. L’objectif de cette phase est de mettre la
connaissance obtenue par la modélisation, dans une forme adaptée, et l’intégrer au processus de
prise de décision pour mettre en production pour les utilisateurs finaux des modèles obtenus.
✓ Planification du projet :
Cette phase est considérée parmi les phases procédurales les plus importantes dans la gestion
du projet où la documentation nécessaire est créée pour assurer la réussite du projet. Le plan va
définir les différentes étapes (Figure 3) qui vont permettre la création et l’exécution du projet tout
en contrôlant ces tâches et en les clôturant, toutes ces informations vont être insérer dans un
diagramme de Gantt qui va nous présenter d’une manière chronologique les différentes tâches en
affichant la date de début de chaque tâche, sa durée ainsi que sa date de fin.
24
Chapitre 1 : contexte général du projet
Conclusion :
Ce chapitre nous aide à connaitre le contexte du projet et avoir une idée générale afin de
comprendre les objectifs à atteindre à la fin de ce stage.
le fameux logiciel Gantt Project, on a développé un plan de travail et définissant les différentes
tâches.
Après avoir éclaircir l’idée générale du projet, on va présenter dans le chapitre suivant les
différentes solutions pour la génération des vidéos et les outils utilisés.
26
Chapitre 2 : Génération des videos
Motivation :
Les applications mobiles du genre face swap sont à la hausse durant ces dernières années,
considérées comme des jeux amusants pour certains et comme des applications dangereuses pour
d’autres.
Cependant, la technologie continue d’avancer à pas géants, tellement, qu’elle peut faire peur.
Comme dit Oncle Ben : « Un grand pouvoir implique de grandes responsabilités ».
27
Chapitre 2 : Génération des videos
1-1- FakeApp :
FakeApp est une application qui permet avec des techniques d’entraînement d’IA d’ajouter
des photos de visages à une vidéo à l’aide d’un algorithme qui crée des masques pour remplacer les
visages de la vidéo d’origine. Le résultat est surprenant et très réel et le développement est continue
pour améliorer le résultat et simplifier l’emploi du software.
Le problème est le suivant : même si cette technologie pourrait s’utiliser pour changer le
visage de n’importe qui sur n’importe quelle vidéo pour qu’une personne créative puisse s’amuser un
peu, sans nuire personne, il arrive qu’elle soit utilisée avec une mauvaise intention.
Cette technologie sera utile au cinéma. Des études ont démontré que ce software est capable
d’ajouter des images en quelques minutes tandis que le processus normalement suivi durant le film
dura des semaines [4].
Face App est d’une simplicité confondante, avec une interface basique permettant de
retoucher des selfies grâce à des filtres préétablis.
Comment ça marche ? Face App applique des modifications automatiques sur la photo d’un
visage. Ces images peuvent être prises avec la fonction selfie de l’application, être retrouvée dans la
galerie photo du portable de l’utilisateur ou en faisant une recherche sur Internet, grâce à un moteur
de recherche intégré, une fois la photo à modifier sélectionnée, Face App la charge sur ses serveurs
à distance. C’est ensuite dans son environnement cloud que Face App apporte les modifications
28
Chapitre 2 : Génération des videos
voulues au visage. Ces retouches ont lieu grâce à des logiciels d’apprentissage automatique, qui
fonctionnent grâce à des technologies d’intelligence artificielle [5] .
Le générateur essaie donc de produire des outputs sans que l’on puisse déterminer s’ils sont
faux. Ainsi, au fil du processus, le générateur produit des outputs de meilleure qualité tandis que le
discriminateur détecte de mieux en mieux les faux.
La première étape est de déterminer ce que l’on souhaite que le GAN produit. La seconde
consiste à composer un ensemble de données basé sur ces paramètres. Ces données sont ensuite
entrées dans le générateur jusqu’à ce qu’il commence à produire des résultats convaincants.
Les images générées sont ensuite transmises au discriminateur, à côtés des véritables points
de données du dataset. Ensuite vérifiées manuellement, et le processus est répété jusqu’à ce que le
résultat souhaité soit atteint.
Puis les images générées sont introduites dans le discriminateur accompagnées des points de
données réelles provenant de la conception d'origine. Le discriminateur filtre les informations et
renvoie une probabilité entre 0 et 1 pour représenter l'authenticité de chaque image (1 pour une image
réelle et 0 pour une image contrefaite).
Enfin encore une fois, ces valeurs sont contrôlées manuellement et répétées jusqu'à obtention
du résultat souhaité. Les deux réseaux essaient d'optimiser des fonctions différentes, opposées, dans
un jeu à somme nulle.[6]
Les GANs peuvent avoir de multiples cas d’usage. Il est possible de s’en servir pour imiter du
contenu multimédia, des textes ou encore des discours. De manière générale, la principale utilité d’un
GAN est de créer des données à partir de rien.
29
Chapitre 2 : Génération des videos
technologie. De même, les GANs peuvent servir à recréer une peinture ou une photo populaire.
C’est ainsi que Mona Lisa a pu prend vie grâce à l’IA de Samsung. On peut aussi s’en servir
pour entraîner une IA à écrire des articles pour un blog ou un site web en se basant sur du contenu
existant. Il est aussi possible de générer une image à partir de texte, ou encore de produire des
représentations photoréalistes de prototypes de produits.
Le modèle de décodeur peut être considéré comme un modèle génératif capable de générer
des caractéristiques spécifiques.
31
Chapitre 2 : Génération des videos
Les réseaux de neurones sont l'une des nombreuses méthodes possibles qu’on peut utiliser
pour obtenir une approximation de fonction. Une des raisons pour lesquelles ils sont devenus
populaires est leur capacité à apprendre les représentations. Les réseaux peuvent apprendre les
représentations spécifiques qui importent lors de la classification d'une image en tant qu’humain ou
animal, en supposant qu’on leur fournit les étiquettes correctes.
Dans certains cas, on n’a pas ces étiquettes. Néanmoins, on peut former deux réseaux, l'un
qui apprend la représentation et l'autre qui reconstruit à partir de la représentation en minimisant la
fonction de perte de reconstruction. Il s'agit d'un encodeur automatique. Il obtient ce nom car il
trouve automatiquement le meilleur moyen de coder l'entrée afin que la version décodée soit aussi
proche que possible de l'entrée.
Les résultats fournis par ce genre de modèle ont tendance d’être flou. Ce problème est dû à
l’attribution d’une probabilité élevée aux points dans les données définies mais aussi vers d'autres
points flous [9].
32
Chapitre 2 : Génération des videos
Le modèle VAE n’est pas particulièrement bon. Avec plus de temps et une meilleure
sélection d'hyperparamètres et ainsi de suite. On peut probablement obtenir des résultats
satisfaisants et aussi claire au contraire des GANs.
La génération vidéo est intimement liée à la prédiction vidéo. La prédiction vidéo vise à
rendre réaliste le mouvement des objets dans un environnement stable. A l’aide. Des réseaux de
neurones récurrents (RNN) et le modèle séquence à séquence largement utilisé (Sutskever, Vinyals
et Le, 2014) se sont montrés très prometteurs dans ces applications (Villegas et al., 2017 ; De
Brabandere et al.,2016 ; van Amersfoort et al., 2017 ; Kalchbrenner et al., 2017).
33
Chapitre 2 : Génération des videos
Un dénominateur commun entre ces travaux est le réseau neurone convolutif (CNN) code /
décode chaque image et se connecte à un modèle séquence à séquence pour prédire les pixels des
cadres futurs. De plus, Liu et al. (2017) proposé en profondeur réseaux de flux voxel pour
l'interpolation d'images vidéo. En particulier, Karras et al. (2017) ont essayé de générer les
animations faciales en se basant sur des audios segmentés. Mais ce que Suwajanakorn et al. (2017)
ont fait est le plus proche à ce qu’on a fait mais il y a deux grandes différences ; d’abord, on a
utilisé un réseau neurone à la place d’un modèle computer vision traditionnel et on a ajouté la partie
text-to-speech afin d’avoir un système de text-to-video complet [11].
Les modèles d'apprentissage qui génèrent des vidéos peuvent également être un moyen efficace
pour apprendre des représentations. Par exemple, on peut former des générateurs sur un grand
référentiel de vidéos non étiquetées, puis affiner le discriminateur sur un petit ensemble de données
étiquetées afin de reconnaître certaines actions avec un minimum de supervision.
34
Chapitre 2 : Génération des videos
Conclusion :
Ce chapitre est pour avoir une idée générale sur les applications de génération des vidéos
ainsi que les différentes méthodes qui permet de réaliser comme le GAN et le VAE afin d’obtenir
un bon résultat.
35
Chapitre 3 : deep learning (Apprentissage profond)
Motivation :
Le deep learning est considéré pari les méthodes les plus simple dans le sens où les réseaux
de neurones s’avèrent plus performants que les techniques de régressions pour des tâches de Ma-
chine Learning
Il est utilisé dans plusieurs domaines d’application qui sont caractérisés par une relation en-
trée-sortie de la donnée d’information comme : La reconnaissance d’image, Les classifications de
textes ou d’images, Identification d’objets, Prédiction de données, Filtrage d’un set de données, etc..
36
Chapitre 3 : deep learning (Apprentissage profond)
1- GAN :
1-1- Définition :
Un GAN ou Generative Adversarial Network (réseau antagoniste génératif) est une technique
d’intelligence artificielle permettant de créer des imitations parfaites d’images ou autres données. En
termes techniques, les GAN reposent sur l’entrainement non supervisé de deux réseaux de neurones
artificiels appelés Générateur et Discriminateur. Ces deux réseaux s’entrainent l’un et l’autre dans le
cadre d’une relation contradictoire.
Le Générateur est en charge de créer des designs à partir des vecteurs de bruits.
Le Générateur reçoit l’identité des designs sur lesquels il a été démasqué par le Discriminateur.
Ce dernier reçoit l’identité des designs sur lesquels il a été trompé par le Générateur.
La perte de ces deux réseaux est aussi contradictoire d’où le terme contradictoire mentionné
dans le nom de ce type. Cette caractéristique qui va permette de mettre à jour les réseaux et avoir des
résultats satisfaisants [12].
37
Chapitre 3 : deep learning (Apprentissage profond)
• Édition de photos.
• Vieillissement du visage.
38
Chapitre 3 : deep learning (Apprentissage profond)
• Mélange de photos.
• Super résolution.
• Photo Inpainting.
2- RNN :
2-1- Définition :
Un réseau neuronal récurrent (RNN) est un type de réseau neuronal artificiel couramment
utilisé dans la reconnaissance vocale et le traitement du langage naturel (NLP). Les RNN sont
conçus pour reconnaître les caractéristiques séquentielles des données et utiliser des modèles pour
prédire le prochain scénario probable.
Les RNN sont utilisés dans l'apprentissage profond et dans le développement de modèles qui
simulent l'activité des neurones dans le cerveau humain. Ils sont particulièrement puissants dans les
cas d'utilisation dans lesquels le contexte est essentiel pour prédire un résultat et sont distincts des
autres types de réseaux de neurones artificiels car ils utilisent des boucles de rétroaction pour traiter
une séquence de données qui informe la sortie finale, qui peut également être une séquence des
données. Ces boucles de rétroaction permettent aux informations de persister ; l'effet est souvent
décrit comme de la mémoire [13].
2-2- Architecture :
Les réseaux de neurones récurrents, également appelés RNN, sont une classe de réseaux de
neurones qui permettent aux sorties précédentes d'être utilisées comme entrées tout en ayant des
états cachés. Ils sont généralement les suivants (Figure 10) [13] :
39
Chapitre 3 : deep learning (Apprentissage profond)
Les unités d'un LSTM sont utilisées comme unités de construction pour les couches d'un RNN,
qui est alors souvent appelé un réseau LSTM.
Les LSTM permettent aux RNN de se souvenir de leurs intrants sur une longue période de
temps. C'est parce que les LSTM contiennent leurs informations dans une mémoire, ce qui ressemble
40
Chapitre 3 : deep learning (Apprentissage profond)
beaucoup à la mémoire d'un ordinateur parce que le LSTM peut lire, écrire et supprimer des
informations de sa mémoire.
Cette mémoire peut être vue comme une cellule gated, où gated signifie que la cellule décide
de stocker ou de supprimer des informations (par exemple si elle ouvre les portes ou non), en fonction
de l'importance qu'elle attribue à l'information. L'attribution de l'importance se fait à travers des poids,
qui sont également appris par l'algorithme. Cela signifie simplement qu'il apprend avec le temps
quelle information est importante et laquelle ne l'est pas.
Dans un LSTM vous avez trois portes : entrée, oublier et sortie. Ces portes déterminent s'il
faut ou non laisser entrer une nouvelle entrée (porte d'entrée), supprimer l'information car elle n'est
pas importante (oublier la porte) ou la laisser influencer la sortie au pas de temps courant (porte de
sortie). Vous pouvez voir une illustration d'un LSTM avec ses trois portes ci-dessous (Figure 12)
[14]:
Les portes d'un LSTM sont analogiques, sous la forme de sigmoïdes, ce qui signifie qu'elles
vont de 0 à 1. Le fait qu'elles soient analogiques leur permet de faire une rétropropagation avec
elles.
Les problèmes posés par la disparition des gradients sont résolus grâce à LSTM, car les
gradients sont assez raides et l'entraînement est relativement court et la précision élevée.
41
Chapitre 3 : deep learning (Apprentissage profond)
C'est un réseau de neurones multicouches (Figure 13) et plus précisément c’est un réseau
profond composé de multiples couches qui en générale sont organisées en blocs (CONV→ RELU
→ POOL) ; la couche de convolution, la couche de pooling, la couche de correction ReLU et la
couche fully-connected [15].
3-2- Architecture :
Les réseaux de neurones convolutionnels, sont un type spécifique de réseaux de neurones
qui sont généralement composés des couches suivantes (Figure 14) :
42
Chapitre 3 : deep learning (Apprentissage profond)
Couche convolutionnelle (CONV) utilise des filtres qui scannent l'image d’entrée suivant ses
dimensions en effectuant des opérations de convolution. Elle peut être réglée en ajustant la taille du
filtre FF et le stride SS. La sortie de cette opération est appelée feature map ou aussi activation map.
Pooling (POOL) est une opération de sous-échantillonnage typiquement appliquée après une
couche convolutionnelle. En particulier, les types de pooling les plus populaires sont le max et
l'average pooling, où les valeurs maximales et moyennes sont prises, respectivement.
Fully Connected (FC) s’applique sur une entrée préalablement aplatie où chaque entrée est
connectée à tous les neurones. Les couches de fully Connected sont typiquement présentes à la fin
des architectures du CNN et peuvent être utilisées pour optimiser des objectifs tels que les scores de
la classe [16].
4- Fonction d'activation :
La fonction d'activation prend la décision de transmettre ou non le signal. Dans ce cas, il
s’agit d’une fonction simple avec un seul paramètre : le seuil. Maintenant, lorsqu’on apprend
quelque chose de nouveau, le seuil et la probabilité de connexion (appelée poids synaptique) de
certains neurones changent. Cela crée de nouvelles connexions entre les neurones, ce qui permet au
cerveau d'apprendre de nouvelles choses [17].
43
Chapitre 3 : deep learning (Apprentissage profond)
L’utilisation de fonctions d'activation non linéaires est tout simplement indispensable pour la
simple et bonne raison que les fonctions linéaires ne fonctionnent qu'avec une seule couche de
neurone. Car au-delà d'une couche de neurones, l'application récurrente d'une même fonction
d'activation linéaire n'aura plus aucun impact sur le résultat. Autrement dit, afin de résoudre des
problèmes complexes, l'utilisation de fonctions non linéaires est obligatoire.
4-3- Sigmoïde :
Le but premier de la fonction est de réduire la valeur d'entrée pour la réduire entre 0 et 1. En
plus d'exprimer la valeur sous forme de probabilité, si la valeur en entrée est un très grand nombre
positif, la fonction convertira cette valeur en une probabilité de 1. A l'inverse, si la valeur en entrée
44
Chapitre 3 : deep learning (Apprentissage profond)
est un très grand nombre négatif, la fonction convertira cette valeur en une probabilité de 0. D'autre
part, l'équation de la courbe est telle que, seules les petites valeurs influent réellement sur la variation
des valeurs en sortie.
• Elle n'est pas centrée sur zéro, c'est à dire que des entrées négatives peuvent engendrer
des sorties positives.
• Étant assez plate, elle influe assez faiblement sur les neurones par rapport à d'autres
fonctions d'activations. Le résultat est souvent très proche de 0 ou de 1 causant la saturation de
certains neurones.
• Elle est couteuse en termes de calcul car elle comprend la fonction exponentielle.
4-4- Tanh :
La fonction Tanh est également appelée "tangente hyperbolique» (Figure 18 ).
45
Chapitre 3 : deep learning (Apprentissage profond)
Cette fonction ressemble à la fonction Sigmoïde. La différence avec la fonction Sigmoïde est
que la fonction Tanh produit un résultat compris entre -1 et 1. La fonction Tanh est en terme général
préférable à la fonction Sigmoïde car elle est centrée sur zéro. Les grandes entrées négatives tendent
vers -1 et les grandes entrées positives tendent vers 1.
Mis à part cet avantage, la fonction Tanh possède les mêmes autres inconvénients que la
fonction Sigmoïde.
4-5- Relu :
Pour résoudre le problème de saturation des deux fonctions précédentes (Sigmoïde et Tanh)
il existe la fonction ReLU (Unité de Rectification Linéaire). Cette fonction est la plus utilisée.
La fonction ReLU est interprétée par la formule : f(x) = max (0, x). Si l'entrée est négative la
sortie est 0 et si elle est positive alors la sortie est x. Cette fonction d'activation augmente
considérablement la convergence du réseau et ne sature pas.
Mais la fonction ReLU n'est pas parfaite. Si la valeur d'entrée est négative, le neurone reste
inactif, ainsi les poids ne sont pas mis à jour et le réseau n’apprend pas.
46
Chapitre 3 : deep learning (Apprentissage profond)
✓ Leaky ReLU :
La fonction Leaky ReLU est interprétée par la formule : f(x) = max (0.1x, x). La fonction
Leaky Relu essaye de corriger la fonction ReLU lorsque l'entrée est négative. Le concept de Leaky
ReLU est lorsque l'entrée est négative, il aura une petite pente positive de 0,1. Cette fonction élimine
quelque peu le problème d'inactivité de la fonction relu pour les valeurs négatives, mais les résultats
obtenus avec elle ne sont pas cohérents. Elle conserve tout de même les caractéristiques d’une
fonction d’activation ReLU, c’est-à-dire efficace sur le plan des calculs, elle converge beaucoup plus
rapidement et ne sature pas dans les régions positives
✓ ReLU paramétrique :
L'idée de la fonction Leaky ReLU peut être encore élargie. Au lieu de multiplier x par un
terme constant, on peut le multiplier par un hyperparamètre qui semble mieux fonctionner que la
fonction Leaky ReLU. Cette extension à la fonction Leaky ReLU est connue sous le nom de ReLU
paramétrique.
La fonction ReLU paramétrique est interprétée par la formule : f(x) = max (ax, x) où "a" est
un hyperparamètre. Cela donne aux neurones la possibilité de choisir quelle pente est la meilleure
dans la région négative. Avec cette capacité, la fonction ReLU paramétrique a la possibilité de devenir
une fonction ReLU classique ou une fonction Leaky ReLU.
Il sera le plus souvent préférable d'utiliser la fonction ReLU, ses deux autres versions (Leaky
ReLU et ReLU paramétrique) sont des expérimentations sans réelle valeur ajoutée.
4-6- Softmax :
La régression softmax (ou régression logistique multinomiale) est une généralisation de la
régression logistique au cas où on veut traiter plusieurs classes. Il est particulièrement utile pour les
réseaux de neurones où l'on souhaite appliquer une classification non binaire. Dans ce cas, la simple
régression logistique ne suffit pas. On aura besoin d'une distribution de probabilités pour toutes les
étiquettes, ce que Softmax nous donne.
47
Chapitre 3 : deep learning (Apprentissage profond)
Utilisée pour de la multi classification en couche de sortie (Figure 19). Intervalle de sortie (-
∞;+∞):
5- Highway Networks :
Quand on a un réseau de neurone très profond, on rencontre des difficultés à l’optimiser. En
se basant sur la mémoire à long court terme (LSTM) et de la fonction Gatin, les Highway Networks
(Figure 20) adapte le signal pour que le réseau puisse aller plus loin. Du coup même un réseau
considéré profond avec 1000 couches est possible de l’optimiser [18].
48
Chapitre 3 : deep learning (Apprentissage profond)
6- L'algorithme L-BFGS-B :
La méthode BFGS est la réponse en cas du besoin d’un algorithme à directions de descentes.
L'idée majeure de cette méthode est de ne pas construire explicitement la matrice Hessienne
et de construire à la place une approximation de l'inverse de la dérivée seconde de la fonction à
minimiser, en analysant les différents gradients qui se suivent.
L'algorithme L-BFGS-B est une extension de l'algorithme L-BFGS pour pouvoir gérer des
bornes simples. L'algorithme L-BFGS est un algorithme qui s’est montré très efficace pour résoudre
des problèmes à grande échelle. L-BFGS-B emprunte des idées aux méthodes de la région de
confiance tout en conservant la mise à jour L-BFGS des algorithmes de recherche de Hessienne et
de ligne [19].
7- Couche convolutionnelle1D :
C’est la couche 1D du réseau utilise des filtres qui scannent l'entrée suivant ses dimensions
en effectuant des opérations de convolution. Elle peut être réglée en ajustant la taille du filtre F et le
stride S. La sortie O de cette opération est l’activation map. Ce genre de convolution est utilisé pour
la notion temporelle.
Conclusion :
Le but de ce chapitre était de comprendre le rôle du Deep Learning dans ce projet, aussi
d’introduire les réseaux neurones qui seront utilisés et leurs architectures, ainsi que les fonctions
d’activation. Le prochain chapitre présentera les grandes étapes à suivre pour réaliser le projet.
49
Chapitre 4 : développement du modèle
Chapitre 4 : développement du
modèle
Introduction :
La conversion audio-vidéo réaliste a des applications pratiques telles que l'amélioration de la
visioconférence pour les réunions (le streaming audio sur Internet prend beaucoup moins de bande
passante que la vidéo, ce qui réduit les problèmes vidéo), ou la conversation avec un personnage
historique de la réalité virtuelle. Cela bat les précédents processus de conversion audio-vidéo, qui
impliquaient de filmer plusieurs personnes dans un studio en répétant les mêmes phrases à plusieurs
reprises pour essayer de capturer comment un son particulier correspond à différentes formes de
bouche, ce qui est coûteux, fastidieux et prend du temps.
cette approche est basée sur la synthèse vidéo de l'audio ou texte au niveau de la zone de la
bouche et l'utilisation de techniques de composition pour emprunter le reste de la tête à partir
d'autres séquences. L’ approche de composition s'appuie sur des techniques de tête parlante
similaires, comme Face2Face, bien que cette dernière transfère la bouche d'une autre séquence
vidéo alors que on synthétise la forme de la bouche directement à partir de l'audio grâce au texte.
Motivation :
Que pouvez-vous déduire de la personnalité de quelqu'un à partir de son film vidéo ?
Imaginez-vous apprendre à reproduire le son et la cadence de la voix d'une personne, comment elle
parle, ce qu'elle dit, comment elle communique et interagit, et comment elle apparaît et s’exprime.
Dans le cas des personnalités publiques, il existe des séquences vidéo importantes disponibles en
ligne, sous la forme d'interviews, de discours, de bulletins de nouvelles, etc. L'analyse d’une vidéo
est cependant assez difficile, car les visages sont une vue de profil proche, la région du visage est
petite et l'éclairage, les vêtements et les cheveux varient considérablement d'une interview à l'autre).
1- Outils utilisés :
50
Chapitre 4 : développement du modèle
Dans cette partie, on va voir les outils qui va nous aider à réaliser le projet et aussi les
bibliothèques utilisées :
➢ Ubuntu :
Ubuntu est un système d’exploitation GNU/Linux basé sur la distribution Linux Debian. Il
est développé, commercialisé et maintenu pour les ordinateurs individuels (desktop), les serveurs
(Server) et les objets connectés (Core) par la société Canonical [20] .
➢ Pycharm :
➢ Python :
Python est un langage de programmation interprété́ , interactif, orienté objet et de haut niveau
à usage général. Python est aujourd'hui un des langages de programmation les plus populaires. Les
développeurs ont aujourd'hui la latitude de faire de Python leur langage privilégié́ dans presque tous
les domaines de l'informatique, y compris le développement Web, le cloud computing,
l'automatisation, les tests de logiciels, Big Data, Hadoop, deep Learning,etc. vue le nombre énorme
de bibliothèque qu’il contient.
Python permet aux développeurs de concevoir des fonctions avec moins de lignes de code,
ce qui ne serait pas le cas avec d'autres langages de programmation. C'est un langage facile à̀
apprendre et avec la pratique, un autre facteur qui fait de Python un langage de programmation
intéressant pour les novices est sa lisibilité́ et son efficacité. Si vous avez besoin d'un code qui
fonctionne sur aussi bien Linux que Windows et Mac OS, pensez à̀ Python, et il est aussi utilisable
sur plusieurs plateformes puisqu’il est open source [22].
➢ Tensorflow :
Tensorflow est une plate-forme Open Source pour le calcul numérique au machine Learning.
Elle propose un écosystème complet et flexible d'outils, de bibliothèques et de ressources
communautaires permettant aux chercheurs d'avancer dans le domaine du machine Learning. C’est
51
Chapitre 4 : développement du modèle
la principale librairie que l’on a eue à utiliser pour l’entrainement du modèle de machine
Learning/Deep [23].
➢ Open CV :
Open CV est une bibliothèque proposant un ensemble de plus de 2500 algorithmes de vision
par ordinateur, accessibles à travers d'une API pour plusieurs langages. Elle est distribuée sous une
licence BSD pour toutes les plateformes. Initialement écrite en C il y a plus de 10 ans par des
développeurs de la société́ Intel, Open CV est aujourd'hui développé, maintenue, documentée et
utilisée par de nombreux utilisateurs. C’est la bibliothèque de référence pour le computer vision,
aussi bien dans le monde de la recherche que celui de l'industrie. Débogage. Il permet également
d'accéder aux objets inaccessibles que le collecteur a trouvés mais ne peut pas libérer. Étant donné
que le collecteur complète le comptage de références déjà utilisé dans Python, vous pouvez
désactiver le collecteur si vous êtes sûr que votre programme ne crée pas de cycles de référence. La
collecte automatique peut être désactivée en appelant gc. Disable (). Pour déboguer un programme
qui fuit, appelez gc.set_debug (gc. DEBUG_LEAK) [24].
➢ Keras :
Keras est une API de réseaux de neurones de haut niveau, écrite en Python et capable de
fonctionner sur Tensorflow, CNTK ou Theano. Il a été́ développé́ dans le but de permettre une
expérimentation rapide. Pouvoir passer de l'idée au résultat avec le moins de retard possible est la
clé́ pour faire de bonnes recherches. En effet, Keras permet un prototypage facile (plus que
Tensorflow) et rapide (grâce à̀ la convivialité́ , la modularité́ et l’extensibilité́ ) [25].
➢ Keras. Callbacks :
Un callback est un objet qui peut effectuer des actions à différentes étapes de la formation
(par exemple au début ou à la fin d'une époque, avant ou après un seul lot, etc.) [26].
➢ Keras. Model :
Un modèle séquentiel est approprié pour une pile simple de couches où chaque couche a
exactement un tenseur d'entrée et un tenseur de sortie [27].
➢ Keras. Layers :
52
Chapitre 4 : développement du modèle
Les couches sont les éléments de base des réseaux de neurones dans Keras. Une couche se
compose d'une fonction de calcul tensor-in tensor-out (call back de la couche) et d'un état, contenus
dans des variables Tensorflow (les poids de la couche) [28].
➢ Sklearn. Preprocessing :
➢ Scikit-image :
Scikit-image est une collection d'algorithmes pour le traitement d'images. Le paquet principal
de scikit-image ne fournit que quelques utilitaires pour la conversion entre les types de données
d’image ; pour la plupart des fonctionnalités, vous devez importer l'un des sous-packages suivants :
Io. Reading, saving, and displaying images and vidéo [30].
➢ Imutils :
Une série de fonctions pratiques pour rendre les fonctions de traitement d'image de base telles que
la traduction, la rotation, le redimensionnement, le squelette, l'affichage des images Matplotlib, le tri
des contours, la détection des bords [31].
➢ [Link]:
[Link] est une collection de fonctions qui aide matplotlib faire le travail comme
Matlab. Chaque fonction pyplot modifie une figure : crée une figure, crée une zone de traçage dans
une figure [32].
➢ Web VTT :
Le format des pistes de texte vidéo Web. Son utilisation principale est de baliser les
ressources de piste de texte externe en relation avec HTML. Les fichiers Web VTT fournissent des
légendes ou des sous-titres pour le contenu vidéo, ainsi que des descriptions vidéo textuelles, des
chapitres pour la navigation dans le contenu et plus généralement toute forme de métadonnées
alignées sur le contenu audio ou vidéo [33].
➢ Pickle :
53
Chapitre 4 : développement du modèle
➢ NumPy :
NumPy est une extension du Python, destinée à manipuler des matrices ou tableaux
multidimensionnels ainsi que des fonctions mathématiques opérant sur ces tableaux. Plus
précisément, cette bibliothèque fournit de multiples fonctions permettant notamment de créer
directement un tableau depuis un fichier ou au contraire de sauvegarder un tableau dans un fichier,
et manipuler des vecteurs, matrices et polynômes [35].
➢ Soundfile :
SoundFile peut lire et écrire des fichiers audios. La lecture ou l'écriture de fichiers est prise
en charge par libsndfile, qui est une bibliothèque pour la lecture et l'écriture de nombreux formats
de fichiers audio échantillonnés différents qui s'exécutent sur de nombreuses plates-formes. Il est
accessible via CFFI, qui est une interface de fonction étrangère pour Python appelant du code C
[36].
➢ Dlib :
Dlib est une boîte à outils C ++ moderne contenant des algorithmes d'apprentissage
automatique et des outils pour créer des logiciels complexes en C ++ pour résoudre des problèmes
du monde réel. Elle est utilisée à la fois dans l'industrie et dans le milieu universitaire dans un large
éventail de domaines, notamment la robotique, les appareils embarqués, les téléphones mobiles et
les grands environnements informatiques haute performance [37].
1- Description de la dataset :
Pour ce projet, on aura besoin des vidéos comme Dataset afin de pouvoir les segmenter et
extraire les images et les audios pour entrainer les modèles. Ces derniers doivent respecter plusieurs
critères pour avoir un bon résultat, parmi ces critères :
• Bon éclairage
54
Chapitre 4 : développement du modèle
Sans Pour faire simple et loin des complications de codage et de compression, un document
vidéo est considéré comme étant la combinaison de deux modes : l’image et l’audio, représentés
dans un espace discret de temps associé, en général, à une fréquence d’échantillonnage plus élevée
que les changements d’états qu’il reflète, ce qui permet au spectateur de le percevoir comme étant
continu. Pour simplifier, on peut le définir comme un ensemble de séquences d’images
synchronisées avec une ou plusieurs bandes de son. Ses niveaux hiérarchiques sont : le fichier audio
et l’ensemble des images. Cette dernière, n’ayant pas un équivalent structurel sur la bande son et ne
reflétant pas non plus la notion du temps, mais nécessaire pour la construction d’une vidéo.
2- Data Preprocessing :
2-1- Extraction des images à partir des vidéos :
Les vidéos représentent un ensemble des images synchronisés avec un audio, donc pour
déduire les points clés de la bouche de la personne qui est présente dans la vidéo, il est important
d’extraire les images contenues dans cette dernière, et pour effectuer cela , on va utiliser la fameuse
ligne de code FFMEPG.
La ligne de commande qui apparait dans la figure 20 montre la nécessité à des paramètres
comme :
55
Chapitre 4 : développement du modèle
Les paramètres utilisés dans la ligne de commande montrée dans la figure 22 sont :
Ac : Définir le nombre des canaux audios. Pour les flux de sortie, il est défini par défaut sur
le nombre des canaux audios d'entrée.
Ar : Régler la fréquence d'échantillonnage audio. Pour les flux de sortie, il est défini par
défaut sur la fréquence du flux d'entrée correspondant.
Une analyse des audios est faite après l’extraction, elle sert à calculer le sample rate ou la
fréquence d'échantillonnage qui définit combien de fois par seconde un son est échantillonné.
Techniquement parlant, c'est la fréquence des échantillons utilisés dans un enregistrement
numérique. Dans notre cas elle vaut 22050 HZ (On a pu capturer 22050 échantillons par second)
qui est une fréquence acceptable pour un enregistrement d’audio.
56
Chapitre 4 : développement du modèle
Ci-dessus (Figure 23) est la représentation du waveforme pour un audio extrait à partir
d’une vidéo enregistrée (enregistrement humain vocal). Cela nous montre le volume (amplitude) de
l'onde sonore qui change avec le temps. Ici, l'amplitude = 0 représente le silence. On remarque qu’il
varie entre -0.53 et 0.53. Cette plage varie d’un audio à un autre.
Ces amplitudes ne sont pas très informatives, car elles ne parlent que du volume de l'enregis-
trement audio. Pour mieux comprendre le signal audio, il est nécessaire de le transformer dans le
domaine fréquentiel. La représentation dans le domaine fréquentiel d'un signal nous indique les dif-
férentes fréquences présentes dans le signal. La transformée de Fourier est un concept mathéma-
tique qui peut convertir un signal continu du domaine temporel au domaine fréquentiel.
57
Chapitre 4 : développement du modèle
On remarque dans la figure 24 l’existence de la couleur noire qui représente le silence dans
la figure précédente ainsi qu’un changement de degré de la couleur et qui nous donne une idée sur
le changement de la fréquence durant le temps.
Après un parcours de toutes les images extraites dans la 1 ère partie , on va tirer les
coordonnées de la bouche (mouth Keyspoints) pour chaque image , par exemple , si la personne dit
« bonjour » , on va calculer la position de la bouche au moment où il articule le mot ,cette extraction
se fait à l’aide de la bibliothèque Dlib qui permet de détecter la position des yeux , bouche , le nez ,
et aussi le modèle pré-entrainé « shape_predictor_68_face_landmarks.dat » qui est inclus dans Dlib
est utilisé pour estimer l'emplacement de 68 coordonnées (x, y) qui correspondent aux structures
faciales sur le visage.
Ces indexes (Figure 25) appartiennent à l’ensemble de données 68 points iBUG 300-W sur
lequel le prédicteur de repère facial Dlib a été entrainé.
Il existe plusieurs types de détecteurs de points de repères faciaux comme les 194 points qui
peuvent être entrainés sur l’ensemble de données HELEN [38].
La chose la plus importante est qu’on peut utiliser le même cadre DLIB pour entrainer sur
prédicteur de forme sur les données d'entraînement d’entrée. Cela va nous aider à entrainer des
détecteurs de repère facial ou des prédicteurs de forme personnalisés.
Après le calcul des positions, les coordonnées seront enregistrées dans un fichier
« kp. Pickle », les fichiers contiendront ce genre de données (Figure 26) :
59
Chapitre 4 : développement du modèle
L’extraction des points clés de chaque audio se résume dans l’extraction des MFCCS,
Dans le traitement du son, le cepstre de fréquence mel (MFC) est une représentation du
spectre de puissance à court terme d'un audio, basée sur une transformée en cosinus linéaire d'un
spectre de puissance log sur une échelle de fréquence mel non linéaire.
Les coefficients cepstraux à fréquence Mel (MFCC) sont des coefficients qui composent
collectivement un MFC. Ils sont dérivés d'un type de représentation cepstrale du clip audio (un
"spectre-d ’un-spectre" non linéaire). La différence entre le cepstre et le cepstre à fréquence mel est
que dans le MFC, les bandes de fréquences sont également espacées sur l'échelle mel, ce qui se
rapproche plus étroitement de la réponse du système auditif humain que les bandes de fréquences
linéairement espacées utilisées dans le cepstre normal. Cette déformation de fréquence peut
permettre une meilleure représentation du son, par exemple en compression audio.
• Les MFCCs (Figure 27) sont les amplitudes du spectre résultant [39].
Donc après un parcours de tous les audios, on va enregistrer les MFCCS dans un fichier
appelé « Kp_audio. Pickle », le résultat est représenté comme suit :
60
Chapitre 4 : développement du modèle
Dans notre cas on va enregistrer le PCA pour chaque image extraite en utilisant les
coordonnées de la bouche extraite dans la partie 1- 3 dans un fichier pca. Pickle, ce fichier sera
utilisé dans l’entrainement et la génération du contour de la bouche (voir la partie 2)
Après cela, on va décorréler les points clés de la bouche en utilisant le PCA pour avoir
comme résultat un dernier fichier appelé pkp. Pickle.
2- Text2speech :
61
Chapitre 4 : développement du modèle
Le Text-to-Speech est la technologie qui permet à un ordinateur de lire des textes à voix
haute, afin de créer un contenu vocal à partir d’un texte. Il est nécessaire d’utiliser une application
de synthèse vocale ; ces applications ont beaucoup d’utilité, ils permettent aux malvoyants
d’écouter l’audio du texte qu’ils veulent, d’ailleurs c’est pour cette cause que ce genre d’application
est développée.
Pour notre cas, le TTS va nous permettre de générer un audio à partir d’un texte donné qui
va être utiliser pour la génération de la vidéo par la suite. Pour cela, on a utilisé 2 méthodes, la 1 ère
est la bibliothèque de python appelée pyttxs3 et la 2 -ème est basée sur les réseaux de neurones
convolutifs profonds, et enfin on va utiliser un réseau de neurones afin d’adapter le style de voix.
Pyttxs3 est une bibliothèque qui permet la conversion d’un texte vers un audio, elle est
compatible avec python 2 et 3, et elle inclut les TTS engines, comme Sapi5, nsss, and espeak [41].
On doit initialiser l’instance qui utilisera un driver donné (dans notre cas espeak) avec la
fonction [Link](« espeak »).
Elle reçoit un texte comme entrée et génère l’audio avec [Link]("texte"). Le pyttxs3
permet la manipulation de la fréquence de voix à travers engine. SetProperty ('rate', 125) , et le
volume par [Link]('volume',1.0).
Également le type de voix ; si on veut une voix de femme ou d’un homme avec plusieurs
langues , on peut les manipuler à l’aide de la fonction engine. SetProperty ('Voice', voices[1].id),
cette bibliothèque contient une longue liste de voix de 80 langues avec un style de voix de femme et
d’homme.
62
Chapitre 4 : développement du modèle
D’après la figure 26, L’audio généré a une fréquence de 22050 Hz comme l’audio extrait
précédemment, la différence est remarquable au niveau de la plage de variation du waveforme dans
ce cas elle varie entre -0,61 et 0,61.
Puisque le waveforme (Figure 28) ne donne pas des visualisation complète sur l’audio car il
nous montre juste la variation d’amplitude à travers le temps, on va passer d’un espace temporel
vers un espace fréquentiel, on va analyser le spectrogramme de l’audio.
63
Chapitre 4 : développement du modèle
Alors dans notre cas, qui est le même que le cas qui précède pour un audio extrait, on voit
l’arrière-plan Blue (Figure 29) qui représente le silence et les autres couleurs représente la variation
des fréquences. Plus la couleur évolue vers l’orange plus l’intensité est importante. Les traits noirs
soulignent les formants des voyelles.
Pour cette partie on utilise une nouvelle technique de text2speech (TTS) basée sur les
réseaux de neurones convolutifs profonds (CNN), sans unités récurrentes. Le réseau neuronal
récurrent (RNN) a été une norme technique pour modéliser des données séquentielles récemment, et
cette technique a été utilisé dans certaines techniques TTS neuronales de pointe.
a- Méthodologie :
Le modèle utilisé dans cette partie est Deep Convolutional TTS (DCTTS) [42] se compose
de deux réseaux : Text2Mel, qui synthétise un spectrogramme mel à partir d'un texte d'entrée, et un
64
Chapitre 4 : développement du modèle
On commence d'abord par synthétiser un spectrogramme mel à partir d'un texte. C'est la
partie principale de la méthode proposée. Ce module se compose de quatre sous-modules : Text
Encoder, Audio Encoder, Attention, et Audio Decoder.
Les réseaux utilisés sont entièrement convolutifs et ne dépendent d’aucune unité récurrente.
Ces convolutions doivent être causales car la sortie d'AudioDec est renvoyé à l'entrée
d'AudioEnc dans l'étape de synthèse (partie suivante).
65
Chapitre 4 : développement du modèle
b- Entrainement
Ce module utilisé était très bien entrainé sur la fameuse LJ speech dataset (figure 31) ,il s'agit
d'un ensemble de données vocales du domaine public composé de 13100 courts extraits audios d'un
seul locuteur lisant des passages de 7 livres non romanesques. Une transcription est fournie pour
chaque clip. Les clips varient en longueur de 1 à 10 secondes et ont une durée totale d'environ 24
heures, on l’a utilisé pour générer un audio [43] :
L’adaptation de voix pour les signaux audios est basée sur la texture, ou style, d'un
échantillon audio extrait à l'aide de CNN, qui est ensuite transférée vers l'échantillon audio cible.
Cela crée un son avec les éléments structurels des données cibles, mais avec le rythme du style
audio voulu.
66
Chapitre 4 : développement du modèle
Les CNNs ont la capacité d'extraire des caractéristiques de haut niveau à partir des données
disponibles, de manière à fournir une adaptation de bonne qualité pour le signal audio concerné.
L'ajout de couches convolutives supplémentaires fournit des fonctionnalités de niveau supérieur et
plus complexes à chaque niveau suivant.
Il est nécessaire d'utiliser des formats comme WAV car ils stockent les données dans un
format non compressé ce qui facilite l'extraction des données.
a- Méthodologie :
✓ Audio Preprocessing :
Tout d'abord, le signal audio est transformé du domaine temporel au domaine fréquentiel en
utilisant la transformée de Fourier à court terme vu que le coût de calcul de la transformation de
Fourier sur l'ensemble du fichier audio est très élevé. La fonction STFT consiste à diviser le signal
audio en segments de taille égale, puis à effectuer une transformation de Fourier sur ces segments
individuellement.
La couche convolutive est nécessaire pour extraire les caractéristiques de haut niveau des
signaux audio. Cette implémentation utilise une seule couche de convolution composée de 4096
filtres. Ces filtres sont initialisés à l'aide du Xavier normal initializer qui tire des échantillons d'une
distribution normale.
✓ Extraction du style :
Les matrices obtenues après le prétraitement des signaux audio de contenu et de style sont
modifiés de manière appropriée pour correspondre à l'exigence de forme d'entrée du réseau
convolutif. Les matrices de contenu et de style sont transmises individuellement à travers le réseau
neuronal convolutif pour obtenir respectivement la carte des caractéristiques de contenu et la carte
des caractéristiques de style : Pour extraire les fonctionnalités de style de haut niveau, on utilise une
matrice Gram. Une matrice Gram est le produit interne de la carte de caractéristiques de style avec
elle-même. Cette représentation capture la covariance des caractéristiques de style.
matricielle de Gram pour ces caractéristiques de sortie est également obtenue. La perte détermine la
capacité du réseau à générer la même réponse que les caractéristiques de contenu et de style de
l'échantillon d'entrée aléatoire. La perte de contenu est calculée comme l'erreur quadratique entre les
caractéristiques de contenu obtenues lors de l'étape précédente et les caractéristiques de sortie pour
l'entrée aléatoire.
✓ Entrainement du réseau :
✓ Reconstruction d’audio :
Une fois l’entrainement terminé, l’output finale du réseau est obtenu doit être traité afin de
reconstruire l'audio à partir du résultat. Cela se fait en effectuant d'abord l'exponentiation de chaque
élément dans l output. La transformée de Fourier à court terme inverse (ISTFT) est calculée pour
chaque élément afin de reconvertir le signal dans le domaine temporel à partir du domaine
fréquentiel. La sortie est convertie au format entier et écrite dans un fichier WAV.
b- Entrainement du modèle :
Le modèle a été entrainé en utilisant deux audio de durée de 15 min (content et style)
contenant des phrases dites par la personne qu’on veut déduire l’audio avec son style de voix. La
fonction de perte diminue ce qui nous permet de dire que le modèle est bien entrainé (Figure 32) :
68
Chapitre 4 : développement du modèle
3- Audio-to-mouth :
Étant donné une piste audio source quelconque, on cherche à synthétiser une piste vidéo
correspondante. Pour atteindre cette capacité, on propose d’entraîner le modèle sur des séquences
vidéo pour apprendre à mapper l'entrée audio à la sortie vidéo. Ce problème peut être considéré
comme l'apprentissage du mappage « séquence to séquence », de l'audio à la vidéo, qui est conçu
pour un individu spécifique. Ce problème est difficile à résoudre à la fois en raison du fait que la
cartographie passe d'un signal de dimension inférieure (audio) à un signal de dimension supérieure
(vidéo), mais également de la nécessité d'éviter l'étranglement, car les humains sont très sensibles
au mouvement des lèvres. Le problème plus facile, on se concentre sur la synthèse des parties du
visage qui sont le plus corrélées à la parole.
3-1- Méthodologie :
Plutôt que de synthétiser la vidéo directement à partir de l'audio, on décompose le problème en deux
étapes :
69
Chapitre 4 : développement du modèle
Un réseau neuronal convertit d'abord les sons d'un fichier audio en forme de bouche de base.
On cherche à apprendre une cartographie des coefficients audio MFCC aux coefficients de forme de
bouche PCA. Pour cela on va utilisé un réseau LSTM unidirectionnel monocouche avec un time
DeLay ou un délai de retard, ce choix est motivé par le besoin des évènements passés et futures et
aussi parce que les LSTM facilite le fait de se souvenir (s’il est nécessaire) et oublier les
informations en remplaçant chaque unité cachée par une série de portes.
On considére que la personne prononce le mot « Allo ». Il commence par faire le son Ahhh,
qui est un signal destiné au synthétiseur de bouche qui devrait commencer à ouvrir la bouche. Il est
clair que ce réseau a besoin des dernières fonctionnalités audio comme entrée pour déterminer la
forme de la bouche. Mais on doit noter également que la forme actuelle de la bouche dépend
également de la forme précédente ; il continuera à dire Ahhh pendant plusieurs millisecondes
pendant lesquelles la bouche s'ouvrira plus large, plutôt que de rouvrir à partir d'un état fermé. A
chaque instant dans le temps, ce réseau prend la dernière entrée audio xt, et l'utilise pour modifier
son état caché, et génère un nouveau vecteur de forme de bouche yt pour cet instant, ainsi que pour
faire avancer sa mémoire dans le temps. De cette manière, le vecteur mémoire (qui peut être aussi
grand qu’on souhaite), peut représenter des événements potentiellement très éloignés du passé.
Parfois, la bouche bouge avant que le professeur dit quelque chose. C'est-à-dire qu'au
moment où la personne dit : Ahhh, sa bouche est déjà ouverte. Par conséquent, il ne suffit pas de
conditionner la forme de la bouche sur l’entrée audio passée - le réseau doit se tourner vers l’avenir,
cela est considérer comme une limitation de la méthode LSTM. La solution possible consiste à
rendre le réseau bidirectionnel. En effet, on va utiliser le LSTM bidirectionnel pour exploiter le
contexte futur. Cependant, les réseaux bidirectionnels nécessitent beaucoup plus de puissance de
calcul et de mémoire pour s'entraîner, car ils doivent être dépliés dans le processus de
rétropropagation, ce qui limite généralement non seulement la longueur des exemples
d'apprentissage, mais également la longueur de la sortie. C’est pour cela, un moyen beaucoup plus
simple d'introduire un contexte futur court dans un réseau unidirectionnel consiste à ajouter un délai
à la sortie en reportant la sortie du réseau dans le temps et il est appelé « délai de retard ». On trouve
que le mécanisme de temporisation plus simple est suffisant pour cette tâche, probablement en
raison de la nécessité de ne pas regarder loin dans le futur pour l'audio vers la vidéo.
70
Chapitre 4 : développement du modèle
3-2-Architecture :
Pour notre cas, on a commencé par définir la couche LSTM avec 25 neurones, ensuite on a
ajouté une couche dropout avec la valeur 0.25 afin de surmonter le problème de’overfitting’ ou le
surapprentissage et enfin on utilise la couche qui sert à générer un output de taille (8), en appliquant
une fonction d’activation sigmoïde. Batch size qui vaut None dans notre cas va être modifier durant
l’entrainement du modèle (Figure 34).
Où f, i, o, c, h sont Forget gate, porte d'entrée, porte de sortie, état de cellule, sortie de
cellule. σ est l'activation sigmoïde. Notez que l'état de la cellule et la sortie de la cellule est
transformé avec Tanh.
71
Chapitre 4 : développement du modèle
Le réseau est minimisé à l'aide de l'optimiseur Adam implémenté dans Tensorflow, sur de
nombreuses séquences de vidéos (Figure 36).
5-2- Résultat :
Après l’entrainement du LSTM sur 45 min d’audio vocal, on a utilisé pour le test plusieurs
audios de durée 1 minute et on a obtenu le résultat suivant (Figure 37):
72
Chapitre 4 : développement du modèle
Alors afin de rendre nos images générer par le LSTM réaliste, ce projet va se basé sur
pix2pix, il utilise un réseau antagoniste génératif conditionnel (cGAN) pour apprendre une fonction
à mapper d'une image d'entrée à une image de sortie. Le réseau est composé de deux éléments
principaux, le générateur et le discriminateur. Le générateur transforme l'image d'entrée pour
obtenir l'image de sortie. Le discriminateur mesure la similitude de l'image d'entrée avec une image
inconnue (soit une image cible de l'ensemble de données ou une image de sortie du générateur) et
essaie de deviner si cela a été produit par le générateur.
Là encore, le modèle discriminateur est mis à jour directement et le modèle générateur est
mis à jour via le modèle discriminateur, bien que la fonction de perte soit mise à jour. Le générateur
est entraîné via une perte contradictoire, ce qui encourage le générateur à générer des images
plausibles dans le domaine cible. Le générateur est également mis à jour via la perte L1 mesurée
entre l'image générée et l'image de sortie attendue. Cette perte supplémentaire encourage le modèle
générateur à créer des traductions plausibles de l'image source.
Le Pix2Pix GAN a été démontré sur une gamme de tâches de traduction d'image à image
telles que la conversion de cartes en photographies satellite, des photographies en noir et blanc en
couleur et des croquis de produits en photographies de produits.
73
Chapitre 4 : développement du modèle
L'entrée est une image de taille 192 * 192, qui ne contient que deux types de valeurs (0,
255). Le générateur générera une image colorée 192 * 192 avec trois canaux. La structure du discri-
minateur est illustrée ci-dessous (Figure 38 ). Le tenseur d'entrée 192 * 192 * 4 est une concaténa-
tion d'une image croisée à la main et de son image RVB correspondante. Le discriminateur décidera
si l'image RVB est réelle ou fausse.
Pix2Pix GAN a un générateur et un discriminateur comme un GAN normal. Mais, il est plus
supervisé que GAN (car il a des images cibles comme étiquettes de sortie). Dans le Pix2Pix, le
générateur est un réseau convolutionnel avec une architecture U-net [44].
✓ PIX2PIXHD
Pix2pixHD est une méthode pour synthétiser des images photo-réalistes haute résolution à
partir de cartes d'étiquettes sémantiques à l'aide de réseaux d'adversaires génératifs conditionnels
(CGAN), capable de générer des résultats d'image haute résolution avec une nouvelle perte
antagoniste, ainsi que de nouvelles architectures de générateur et de discriminateur multi-échelles.
En termes moins techniques, pix2pixHD est un chemin simple pour générer des images haute
résolution avec des options presque infinies pour modifier les petits et grands détails sur ces images.
Cela se fait en dessinant sur une carte d'étiquettes, puis en traduisant les dessins à l'aide de GAN
pour avoir des images HD.
Pour améliorer la qualité des images, on a utilisé des blocs résiduels car ils prennent
n’importe quelle qualité d’image. Ce type de système de génération des images réaliste permet de
74
Chapitre 4 : développement du modèle
générer des images de résolution 4*la taille de l’image d’entrée. (2 × le long de chaque dimension
de l'image).
Pour l’entrainement, qui est déjà une ressource rare pour la génération d'images à haute réso-
lution, ils ont proposé d'utiliser des discriminateurs multi-échelles. Cette architecture dépend de 3
discriminateurs qui ont une structure de réseau identique mais fonctionnent à des échelles d'image
différentes. On appellera les discriminateurs D1, D2 et D3. Plus précisément, chaque discriminateur
va être entrainée pour formés pour différencier les images réelles et synthétisées à 3 échelles diffé-
rentes au niveau de la résolution [45].
✓ Fonction de perte :
Pour améliorer l'esthétique de l'image générée, le terme de perte L1 a été ajouté dans le
pix2pix. Il calcule la distance L1 entre l'image cible et l'image générée. Il est ensuite multiplié par
un paramètre « Lambda » et ajouté à la perte du générateur.
4-2- UNET :
Le générateur de pix2pix dans notre cas va se basé sur une architecture UNET, Le modèle
U-Net est un modèle codeur-décodeur pour la traduction d'image où les connexions de saut sont
utilisées pour connecter les couches dans le codeur avec les couches correspondantes dans le
décodeur qui ont les mêmes cartes de caractéristiques de taille.
La partie encodeur du modèle est composée de couches convolutives qui utilisent une
foulée(stride) 2 × 2 pour sous-échantillonner l'image source d'entrée jusqu'à une couche de goulot
d’étranglement (bottleneck layer). La partie décodeur du modèle lit la sortie du goulot
d'étranglement et utilise des couches convolutionnelles transposées pour suréchantillonner à la taille
d'image de sortie requise.
Des connexions de saut sont ajoutées entre les couches de même taille(Figure 40) afin que la
première couche de sous-échantillonnage soit connectée à la dernière couche de suréchantillonnage,
76
Chapitre 4 : développement du modèle
4-3- Architecture :
On présente l’ architecture qui prend l’image résultat du LSTM et génère des images
réalistes ou la bouche est étalée sur le visage, ces images seront utilisées pour générer une vidéo
synchronisée avec l’audio utilisé comme entrée du LSTM précèdent, cette approche est basée sur un
réseau basé sur Pix2Pix pour générer les images vidéo conditionnées sur Keyspoints.
La motivation derrière le choix de la méthode pour effectuer la génération vidéo est le récent
succès de pix2pix CGAN en tant que solution à usage général pour les problèmes de traduction
d'image à image.
L’objectif ici est de traduire une image de visage d'entrée avec une zone de bouche recadrée,
en une sortie image avec la zone de la bouche peinte, conditionnée sur la forme de la bouche.
Alors que gen_loss_GAN est la mesure de la formation qui vise à identifier les sorties
comme réelles.
gen_loss_GAN = tf. reduce_mean (-[Link] (predict_fake + EPS))
77
Chapitre 4 : développement du modèle
Les deux gen_loss_GAN et gen_loss_L1 sont combinés pour former ce que on appelle le
générateur. Gen_loss_L1 donne un moyen simple qui converge rapidement. La combinaison utilisée
est quelque chose comme 100 * gen_loss_L1 + gan (Donner 10 fois L’importance à la perte L1 que
celle de GAN). Cela signifie que dans une première phase, gen_loss_L1 diminuera, et
probablement Gan augmentera. Mais GAN peut aider à aller plus loin dans les détails d'image que
gen_loss_L1 découvrira à peine.
On a remarqué que les Keyspoints générés par le réseau récurrent sont cohérents dans le
temps sans changements brusques. Cela nous a permis d’effectuer la génération vidéo en parallèle,
en synthétisant chaque image dans la vidéo indépendamment dans le temps, compte tenu du
conditionnement informations sur les Keyspoints de la bouche. On n'avait besoin d'aucune
explication mécanisme pour maintenir la cohérence temporelle dans les trames générées de la vidéo.
Pour cette tâche, on aura besoin des positions de la bouche extraite dans la section 2-3. On
recadre la bouche zone de chaque image(Figure 42) à l'aide d'un cadre de sélection autour des Keys
points de la bouche, et le contour de la bouche est dessiné avec les Keys points 49-68 utilisant Open
CV. La figure suivante montre un exemple entrée /paire de sortie.
Un aspect important du processus de génération vidéo est de dénormaliser les Keys points
générés à partir de la précédente étape du pipeline en utilisant PCA de la section 2-4 , avec
l'emplacement de la bouche, la taille et les paramètres de rotation de la vidéo cible. Cela garantit
que la bouche rendue est visuellement compatible avec le visage,
Alors l’ensemble des images générer par pix2pix et qui seront présentes dans la vidéo seront
comme suit (Figure 43) :
79
Chapitre 4 : développement du modèle
Et pour améliorer la qualité des images, on a essayé d’utiliser également le pix2pixHD et les
résultats sont comme suit (Figure 44) :
Conclusion :
Cette technique de réseau de neurones actuelle pour synthétiser la forme de la bouche à
partir de l'audio est une contribution dans ce domaine, formée sur quelques vidéos, ce qui est
nettement plus simple que les méthodes précédentes. On a évalué de nombreuses architectures de
réseaux différentes pour arriver à cette solution, mais on a constaté qu'une approche étonnamment
simple basée sur des techniques LSTM standard produit d'excellents résultats. De plus, cette
approche pour générer une texture de bouche photoréaliste est faite avec 2 méthodes afin d’avoir
des résultats satisfaisants.
80
Chapitre 5 : Résultats & Discussion
Introduction
Dans ce chapitre, on va se focaliser sur la qualité des résultats du projet qui a comme
objectif avoir une vidéo assez réaliste qui peut concurrencer une vraie vidéo ; se baser sur l'œil
humain n’est pas suffisant pour juger. C’est la raison pour laquelle le mesure de similarité est une
nécessité ainsi que l’évaluation de la qualité des images.
Une des étapes les plus importante pour réussir à obtenir un bon résultat est la
synchronisation entre les images et l’audio de la vidéo, car un petit décalage entre ces deux peuvent
causer l’échec des résultats même si les images sont réalistes et de bonne qualité.
Nul travail est parfait ; il y a toujours des contraintes sur plusieurs niveaux qui limitent le
projet mais heureusement qu’il y a aussi des perspectives qui ont comme but l’amélioration du
projet et le garder vivant.
Motivation :
Dans un projet informatique, il est primordial d’évaluer les résultats finaux. Pour cela, on va
discuter ces derniers durant plusieurs étapes en entrainant le Modèles avec des epochs différentes
pour pouvoir faire le suivi de l’amélioration de la qualité des images générées.
81
Chapitre 5 : Résultats & Discussion
On a entrainé pix2pix plusieurs fois pour avoir un meilleur résultat au niveau de la qualité
des images, après chaque entrainement, on obtient un résultat meilleur que le précèdent, on a
commencé par 3 epochs , puis 20 epochs et enfin 70 epochs .
On remarque une grande différence entre les images (Figure 45), on peut déduire que plus le
modèle est entrainé avec un nombre grand d’epochs, le résultat sera satisfaisant et la qualité sera
très bonne.
Bien que l’on pense régulièrement du qualitatif et quantitatif, ces deux formes d’évaluation sont
très liées voire complémentaires. Alors que le quantitatif permet d’obtenir des chiffres, des
comparaisons et de communiquer aisément sur des résultats, le qualitatif va renforcer les résultats
exposés, les expliquer. Le qualitatif ajoutera une profondeur à l’analyse quantitative ; dans notre
cas, après avoir comparé les résultats entre eux et avec les images réelles, on constate la qualité est
présente et les images générées sont assez réalistes, chose que le pourcentage de similarité (voir la
partie suivante) confirme ainsi que l’œil humain et il est possible d’améliorer cette qualité en
ajoutant les epochs d’entrainement .
En ce qui concerne la quantité, il n’y a pas de perte ; le nombre des images inputs est égal
aux nombres des images générées à l’output.
Le modèle de pix2pix a été entrainé sur une video de 1h càd l’ensemble de 5400 images
82
Chapitre 5 : Résultats & Discussion
avec un maximum d’epochs de 70 et on a testé avec des petite video de durée 1 min ce qui donne
500 images. On a obtenu le graphe de la fonction de perte du générateur (Figure 46)et du
discriminateur (Figure 47 et 48 ) :
1-2- Similarité :
a- Définition de similarité :
En général, c’est une fonction qui quantifie le rapport entre deux objets comparés en
fonction des points de ressemblance et de différence. Bien entendu, ces deux objets doivent
appartenir à une même classe sémantique.
Dans le cas le plus basique, la mesure de similarité est une fonction binaire qui affirme ou
nie la ressemblance de deux images. Elle peut servir de prédicat d’égalité, c'est à dire qu’elle
indique si deux contenus sont deux copies d’un même document. Cette notion stricte d’égalité peut
être étendue pour s’adapter à la nature complexe d’une image. on considère égaux deux documents
images identiques au bruit de transmission près, à la fréquence de codage près, aux petits
changements dus à des variations de montage près, à la longueur près, et ainsi de suite .
b- Calcul de similarité :
Afin de justifier la qualité des images générés , on doit se baser sur des mesures qui peuvent
nous donner une idée sur notre résultat , l’œil peut détecter la différence entre l’image réelle et
l’image générée mais elle ne nous donne pas un résultat exacte sur la qualité ,pour cela , on va
comparer les deux images en se basant sur le nombres de pixels différents et similaires(Figure 46) ,
on va définir un seuil de tolérance qui va nous permettre de déclarer que les deux images sont
différentes ou similaires ,après un parcours du nombres de pixels des 2 images , on peut savoir le
nombre de pixels similaires , différents , même le pourcentage de similarité, le code qu’on a
proposé prend comme entrée 2 images de la même personne dans un même instant ; puis on a
obtenu les résultats suivantes :
Alors, on peut déduire que l’image qui est générée après un entrainement de 70 epochs et
plus similaire à celle réelle car elle représente le pourcentage le plus grand. Donc si on continue
l’entrainement avec un nombre grand d’epochs, on va avoir des résultats qui sont plus réalistes.
Figure 49 : Similarité entre une image réelle et image générée avec 70 epochs dans l’entrainement.
85
Chapitre 5 : Résultats & Discussion
Lors du processus de fusion, l'audio enregistré par caméra et celui saisi grâce à un
enregistreur sont analysés et comparés. L'audio original du vidéo est ensuite remplacé par le fichier
audio sélectionné.
Pour fusionner des fichiers vidéo et audio et éviter le petit décalage causé lors de
reconstitution de la vidéo output, le modèle LSTM est responsable de cette tâche, ainsi que la loss
fonction (Figure 50) afin de faire l’évaluation.
Ce modèle qui est entrainé avec 70 epochs a pu nous aide à avoir une vidéo sans décalage
entre l’image et l’audio. Mais pour un résultat plus net, on peut lancer l’entrainement avec plus
d’epochs jusqu’à obtenir le résultat voulu.
On a obtenu une accuracy de 50% ce qui nous permet de dire que les images de contour de
la bouche est précis, Ce résultat n’est donc pas optimal mais c’est le meilleur qu’on peut obtenir
avec cette architecture et ce paramétrage.
2- Contraintes :
86
Chapitre 5 : Résultats & Discussion
L’un des problèmes qui a empêché d’entrainer les modèles avec un grand nombre d’epochs c’est la
durée de la session qui vaut 12h, tandis que pour entrainer un modèle avec juste 3 epochs, il prend
10h.
Le projet sur lequel on a travaillé exige une machine avec des capacités gigantesques comme une
carte graphique RAM élevée, un bon processeur, ce qui était presque impossible de l’avoir durant la
période de confinement.
3- Limites de projet :
Même si l’architecture suivi dans le projet est impeccable et sans faute, Il est indispensable
d’avoir des limites :
Durée de la vidéo cible : l’approche de synthèse de la texture du visage proposée repose sur
un ensemble complet de formes de bouche disponibles dans la vidéo cible, suffisamment pour
couvrir les formes de bouche nécessaires pour l'audio source. Du coup l’apparition des dents ou du
double menton peut causer un déséquilibre pour le modèle.
Modélisation des émotions : cette méthode ne modélise pas explicitement les émotions ni ne
prédit le sentiment du discours d'entrée. Les expressions faciales dans la vidéo de sortie finale
peuvent sembler trop graves pour un discours désinvolte, ou trop joyeux pour un discours sérieux.
Modélisation de la mâchoire : Cette partie sera un problème pour les personnes qui souffrent
d’un handicap ou une déformation au niveau de la mâchoire comme Stephen William Hawkins.
Dans ce cas les repères faciaux ainsi que labiaux seront difficiles à détecter ; ce qui demande un
modèle personnalisé.
87
Chapitre 5 : Résultats & Discussion
4- Perspectives :
3-1- Audio to mouth :
Le mapping Seq-à-Seq des signaux audio de la bouche avec un réseau de convolution
temporel contradictoire (TCN). Les expériences montrent que le modèle qu’on a utilisé surpasse les
lignes de base traditionnelles RNN en termes de précision et de vitesse.
Ce choix est motivé par la performance de ce type de réseau de neurones. Une expérience
complète démontre que le TCN surpasse les réseaux récurrents tels que les LSTM à travers une
gamme diversifiée de tâches et jeux de données, tout en démontrant une mémoire efficace plus
longue.
TCN a la force du grand champ perceptif séquentiel, des gradients stables et faibles besoins
En mémoire. Pour apporter de telles forces dans le scénario de synchronisation labiale, Les réseaux
de neurones récurrents (RNN) sont autrefois le choix commun dans la modélisation des problèmes
de séquence. Les RNN sont écartés à cause des problèmes de limitation de bande passante et
gradients et aussi le problème pour les séquences les plus longues.
a- Architecture
L'architecture du modèle contradictoire basé sur TCN dans le module audio-à-bouche
(Figure 51). Le générateur basé sur TCN est utilisé pour apprendre le mappage des features MFCC
aux points clés de la bouche. Un autre classificateur qui est le discriminateur basé sur TCN prend la
combinaison de l'audio et la bouche présente en entrée et juge les paires réelles et fausses
88
Chapitre 5 : Résultats & Discussion
Générateur : génère des caractéristiques de la bouche suivant le débit audio, puis sous-
échantillonnage, on enveloppe le bloc TCN avec des convolutions 1D pour sous-échantillonner
dans le modèle.
Une perte contradictoire est utilisée avec le discriminateur basé sur le TCN pour capturer un
écart de haut niveau entre ce qui est généré et ce qu’on doit avoir à la fin Target.
TCN utilise des rembourrages pour garder la même longueur entre l'entrée et séquences de
sortie. Cependant, les signaux de remplissage auront un impact sur la prédiction à la fois en tête et
en queue de la séquence de sortie. Pour éviter cela, on crée des chevauchements sur les séquences
d'entrée et de sortie. Cela signifie que on utilise uniquement le segment optimal pour construire la
sortie finale. La plage de chevauchement est liée au champ récepteur, et nous le considérons comme
un hyperparamètre et déterminé par des expériences ultérieures [47].
89
Chapitre 5 : Résultats & Discussion
De telles méthodes de traduction image à image à une seule image ne conviennent pas à la
synthèse vidéo car elles produisent des artefacts temporels et ne peuvent pas générer les détails fins
importants pour percevoir les humains en mouvement. On ajoute donc un modèle appris de
cohérence temporelle ainsi qu'un module de génération de faces haute résolution.
En effet, Pour créer des séquences vidéo, modifiez la configuration de génération d'image
unique pour appliquer la cohérence temporelle entre les images adjacentes, Au lieu de générer des
images individuelles, on prédit deux images consécutives où la première sortie G (xt − 1) est
conditionnée sur la pose correspondant xt − 1 et une image nulle (un espace réservé car il n'y a pas
de trame précédemment générée à temps− 2). La deuxième sortie G (xt) est conditionnée par son la
pose correspondant xt et la première sortie G (xt-1). Par conséquent, le discriminateur est désormais
chargé de déterminer à la fois la différence de réalisme et de cohérence temporelle entre la fausse
séquence (xt − 1, xt, G (xt − 1), G (xt)) et réelle séquence (xt − 1, xt, yt − 1, yt). Les changements
de lissage temporel sont désormais reflétés dans l'objectif GAN mis à jour
90
Chapitre 5 : Résultats & Discussion
Entrainement : ce modèle utilise un détecteur de pose P pour créer des figures de bâton de
pose à partir d'images vidéo du sujet cible. On apprend la cartographie Galongside à un
discriminateur contradictoire D qui tente de distinguer les « vraies » correspondances (xt, xt + 1),
(yt, yt + 1) et la « fausse » séquence (xt, xt + 1), (G (xt), G (xt + 1)).
Transfert : on utilise un détecteur de pose P pour obtenir des joints appropriés pour la
personne source qui sont transformés par ce processus de normalisation N ou en minuscules pour la
personne cible pour laquelle des figures pose stick sont créées. Ensuite, on applique le mapping G
formé [48].
5- Apports :
La réalisation de ce projet a été́ très enrichissante pour moi dans la mesure où elle nous a
permis de nous initier dans la science des données avec l’apprentissage du Deep Learning et des
réseaux neurones. En fait à̀ travers ce projet on a pu voir beaucoup d’aspects et de technologies liés
au métier de data science. En plus de cela ce stage nous a permis d’étendre nos compétences en
plusieurs niveaux malgré les circonstances actuelles. En plus des apports sur le plan technique,
travailler à̀ deux dans ce projet a renforcé nos capacités de travail en équipe. Aussi travailler au sein
du service de DFR m’a donné l’opportunité́ de collaborer avec des professionnels du monde de
l’entreprise. Ce qui a abouti à̀ améliorer notre capacité́ à mener un projet et à travailler dans un
environnement collaboratif.
91
Chapitre 5 : Résultats & Discussion
6- Synthèse :
Le but de ce projet était de générer des vidéos en utilisant les GANs. Ce système permet
d’avoir des vidéos fausses mais assez réalistes à partir des textes, des audios et des images qu’on ne
peut pas distinguer des vidéos réelles.
92
Conclusion
Conclusion :
Sur le plan technique, ce projet nous a permis d’apporter nos connaissances théoriques et
approfondir nos recherches dans certains domaines comme la data science et le Deep Learning.
Dans le cadre professionnel, le stage au sein de l UM6P, nous a offert l'opportunité́ de nous
imprégner des réalités professionnelles en développant en nous l'esprit communicationnel.
Comme apports sur le plan humain, ce projet a été́ une véritable occasion de vivre de près
une expérience de travail très remarquable (même à distance) au sein d’une équipe où tout le monde
est accueillant avec un esprit très ouvert.
93
Références
Références
[1] :[Link]
[2] : [Link]
est
[3] : [Link]
science/
[5] : [Link]
application-qui-fait-vieillir_3517831.html
[6] : [Link]
[7] : [Link]
[8] : [Link]
[9] : [Link]
step-tutorial-69e6d1c9d8e9
[10] : [Link]
[11] : [Link]
[12] : [Link]
[13] : [Link]
[14] : [Link]
neuronaux-recurrents-et-lstm
[15] : [Link]
neurones-convolutifs
[16] : [Link]
architecture-for-face-recognition_fig1_330333023
94
Références
[17] : [Link]
[18] : [Link]
to-highway-image-classification/
[19] :[Link]
Sc_2018.pdf?sequence=5&isAllowed=y
[20] : [Link]
[21] : [Link]
[22] : [Link]
[23] : [Link]
[24] : [Link]
[25] : [Link]
[26] : [Link]
[27] : [Link]
[28] : [Link]
[29] : [Link]
[30] : [Link]
[31] : //[Link]/project/Imutils/
[32] : [Link]
[33] : [Link]
[34] : [Link]
[35] : [Link]
[36] : [Link]
95
Références
[37] : [Link]
[38] : [Link]
[39] : / [Link]
[40] : [Link]
principales-acp
[41]: [Link]
[42]: [Link]
[43]: [Link]
[44] : [Link]
[45] : [Link]
[46] : [Link]
scratch-with-keras/
[47] : [Link]
[48] : [Link]
96