• Aucun résultat trouvé

Aide intelligente pour la surveillance d'examens

N/A
N/A
Protected

Academic year: 2021

Partager "Aide intelligente pour la surveillance d'examens"

Copied!
108
0
0

Texte intégral

(1)

Aide intelligente pour la surveillance d'examens

Mémoire

Pierre Snell

Maîtrise en génie électrique - avec mémoire

Maître ès sciences (M. Sc.)

(2)

Aide intelligente pour la surveillance d’examens

Mémoire

Pierre Snell

Sous la direction de:

(3)

Résumé

Aujourd’hui, de plus en plus de cours se donnent en ligne. En revanche, ceux-ci restent marginaux et très peu d’entre eux permettent d’obtenir des certifications valables et reconnues. Or l’accès à ces contenus est une ressource incroyable, et de plus en plus d’efforts sont mis dans la numérisation de l’apprentissage.

Le but de cette maîtrise est donc d’améliorer la supervision d’examens à distance. En effet, un des points forts d’internet est l’anonymat, et attester de la réussite et des compétences d’une personne devient rapidement non trivial. De plus, les seuls outils couramment disponibles à disposition pour la surveillance sont la caméra et le clavier/souris de l’utilisateur, ce qui donne une information très clairsemée.

Pour ce faire, les techniques les plus à jour de tracking, reconnaissance, génération de données, et analyse ont été utilisées afin d’amener de l’automatisation et de «l’intelligence» dans la surveillance. Notons que même pour un humain cette tâche est difficile et décider ou non d’un comportement anormal n’est pas déterministe. Le but est donc d’apporter une aide, un support, pour pouvoir sécuriser les examens à grande échelle.

La méthode décrite se base sur les avancées en intelligence artificielle, notamment des réseaux génératifs adversaires (generative adversials networks GANs), de l’apprentissage par renforce-ment (reinforcerenforce-ment learning RL), des réseaux récurrents (recurrent neurals networks RNN) et de réseaux convolutionels (Convolutional neural networks CNN).

(4)

Abstract

Nowadays, more and more courses are available online. On the other hand, they remain marginal and few of them have given valid and recognized certifications.

Yet, those lessons have incredible content, and are an amazing resource. Furthermore, more and more, efforts are made toward numerising learning.

The goal of this thesis is to improve online exam monitoring. Indeed, one of the strong points of the internet is anonymity, and attesting the success and skills of someone quickly becomes non-trivial. Moreover, the only commonly accessible tools available for surveillance are the camera, and the user’s keyboard / mouse which gives very sparse information.

To do so, we used the most up-to-date tracking, recognition, generation and analysis techniques to introduce automation and «intelligence» in the surveillance. Note that even for a human this task is difficult and that to decide if a behavior is abnormal is not deterministic. The goal is therefore to provide help and support to bring large-scale examination monitoring to a safer level.

The method described is based on the advances in artificial intelligence, particularly generative adversials network (GANs), reinforcement learning (RL) convolution neural networks (CNN) and recurrent neural networks (RNN).

(5)

Table des matières

Résumé iii

Abstract iv

Table des matières v

Liste des tableaux vii

Liste des figures viii

Lexique et acronymes x Introduction 1 Contexte. . . 1 Exemple d’examen . . . 3 Méthodes . . . 4 Données . . . 5 But et spécification . . . 6 Méthodes d’ingénierie . . . 7 Revue de littérature . . . 8 Plan du mémoire . . . 9

1 Méthodes d’analyse par la webcam 11 1.1 Introduction. . . 11

1.2 Motivation . . . 15

1.3 GANs . . . 16

1.4 Méthode . . . 19

1.5 GAN générant une image de landmarks . . . 21

1.6 GAN générant les landmarks . . . 22

1.7 Entraînement . . . 22 1.8 Génération de vidéo . . . 23 1.9 GAN de visage . . . 25 1.10 Agent . . . 32 1.11 Formalisme mathématique . . . 36 1.12 Bilan . . . 38

2 Résultats de la génération de visages 39 2.1 GAN générant des images de landmarks . . . 39

(6)

2.2 GAN de visage . . . 43

2.3 Agent . . . 49

2.4 Conclusion . . . 52

3 Méthodes d’analyse par signes biométriques 54 3.1 Introduction. . . 55 3.2 Dataset . . . 56 3.3 Architecture . . . 63 3.4 LSTM . . . 65 3.5 Transformer . . . 66 3.6 CNN . . . 68 3.7 Autoencoder . . . 69 3.8 Classificateur . . . 71 3.9 Résultats . . . 73 3.10 Performance . . . 74 3.11 Bilan . . . 77 Conclusion 78 Ouvertures . . . 79 A Annexes 81 A.1 Code et documents sources . . . 81

A.2 Architectures . . . 82

A.3 Exemple de vecteur d’évènement . . . 84

A.4 Convolution . . . 84

A.5 Détails d’implantation . . . 84

A.6 Matrice de confusion . . . 86

(7)

Liste des tableaux

3.1 Types d’évènements . . . 59

3.2 Définition de chaque attribut du dataset . . . 59

3.3 Attributs de chaque évènement du dataset . . . 60

3.4 Exemple de table de recherche . . . 63

3.5 Gabarit de vecteur . . . 64

3.6 Vecteur uniformise des données . . . 64

3.7 Vecteur de sortie du classificateur . . . 71

3.8 Résultats de la détection d’identité selon différents modèles . . . 75

A.1 Architecture du Générateur de visages réalistes . . . 82

A.2 Architecture de l’Embedder de visages réalistes . . . 82

A.3 Architecture du Disriminateur de visages réalistes. . . 82

A.4 Architecture du CNN pour l’identification de séquences . . . 83

A.5 Architecture du générateur du GAN générant l’image des landmarks . . . 83

A.6 Architecture du discriminateur du GAN générant l’image des landmarks . . . . 83

A.7 Architecture du générateur de points de landmarks . . . 83

A.8 Architecture du discriminateur de points de landmarks . . . 83

A.9 Architecture du LSTM . . . 84

A.10 Architecture du Trasnformer . . . 84

(8)

Liste des figures

0.1 Exemple d’un notebook jupyter d’examen . . . 3

0.2 Exemple de système de détection d’identité déjà existant . . . 8

0.3 Exemple de système d’analyse d’action déjà existant . . . 8

1.1 Convolution 3D . . . 14

1.2 Convolution 2D . . . 14

1.3 Apprentissage de l’espace par un GAN . . . 17

1.4 Exemple du fonctionnement d’un GAN. . . 18

1.5 Exemple de landmarks de face . . . 20

1.6 Exemple d’échantillons de la représentation du GAN . . . 21

1.7 Exemple d’exploration de l’espace du GAN . . . 24

1.8 Architecture du générateur d’image . . . 27

1.9 Exemple d’un contexte . . . 28

1.10 Représentation de l’espace des landmarks . . . 33

1.11 Représentation de la séquence d’entraînement . . . 34

2.1 Résultats du GAN générant une image complète . . . 40

2.2 Résultat du GAN de position. À gauche les images du dataset, à droite les images générées par le GAN. . . 41

2.3 Exemple d’une marche aléatoire dans l’espace latent . . . 42

2.4 Exemple de mauvaise optimisation . . . 44

2.5 Générateur gagnant . . . 45

2.6 Effet copier-coller du générateur . . . 46

2.7 Générateur sans concaténation . . . 47

2.8 Résultats du GAN de visages . . . 47

2.9 Faces générées quelques heures d’entraînement avec un petit modèle . . . 50

2.10 Influence de la taille des landmarks . . . 50

2.11 Probabilité des différentes émotions reconnaissables . . . 51

2.12 Résultat de l’agent . . . 52

3.1 Exemple d’un notebook jupyter d’examen . . . 56

3.2 Exemple des découpages possibles d’une série d’évènements . . . 61

3.3 Dépliage d’un LSTM . . . 66 3.4 BiLSTM . . . 67 3.5 Transformer . . . 68 3.6 CNN . . . 69 3.7 Autoencoder . . . 70 3.8 TripletLoss . . . 72

(9)

3.9 arcFace . . . 73

3.10 Groupement selon ArcFace . . . 73

3.11 Matrice de confusion sur la détection d’identité . . . 76

A.1 Blocs utilisés pour le GAN de visage . . . 85

(10)

Lexique et acronymes

— GAN : Generative Adversial Network (Réseau adversaire génératif). — AE : Autoencodeur.

— RL : Reinforcement Learning.

— RNN : Recurent Neural Networks (Réseaux récurrents).

— LSTM : Long Short Term Memory (Réseau à mémoire. courte)[1,2,3] (est un RNN). — GRU : Gated Recurrent Unit [4] (est un RNN).

— NLP : Natural language processing (Traitement automatique du langage naturel TALN). — CNN : Convolutional neural network (réseau à convolutions).

— Epoch : Entraînement sur le jeu de données complet.

— Batch Size : Nombre d’échantillons qui seront propagés simultanément à travers le réseau. Est une sous-division d’un epoch.

— Dataset : Jeu de données. — Loss : Fonction de perte.

— Embeddings : représentation d’éléments sous forme vectorielle structurée

— Backprop (Back Propagation) : Rétropropagation (du gradient). Cette technique consiste à corriger les erreurs selon l’importance des éléments qui ont été calculés par le réseau. — Priors : Connaissances à priori.

— Ground truth : Référence, vérité terrain.

(11)
(12)

Quand on apprend vraiment, on apprend tout au long de sa vie, sans être l’élève d’aucun maître en particulier. Tout est prétexte à apprendre : une feuille morte, un oiseau en vol, une odeur, une larme, les pauvres et les riches, ceux qui pleurent, le sourire d’une femme, l’arrogance d’un homme. Tout sert de leçon ; il n’est donc pas question de guide, de philosophie, de gourou ni de maître. Le maître, c’est la vie elle-même, et vous êtes en état d’apprentissage permanent.

(13)

Introduction

Contexte

Le cadre de ce mémoire repose sur le cours d’Introduction à la programmation en Python1 de

l’Université Laval (GLO-1901).

Ce cours, donné depuis plusieurs années de façon classique (présentiel), a récemment subi d’importants changements afin de devenir un cours en ligne. De ce fait, hormis pour les examens, plus aucune présence physique n’est nécessaire. Toute la matière : exercices, quiz, forum, support nécessaire à l’apprentissage sont donnés sur le site de cours.

En effet, de nouvelles technologies permettent d’embarquer des compilateurs ou des interpréteurs directement dans le navigateur web. (c.f WebAssembly2 et Xeux cling3). Dans le cas du langage

Python, c’est Jupyter (https://jupyter.org/try) qui permet d’obtenir un serveur exécutant des interpréteurs Python à même le site du cours. De ce fait, toute la programmation (message d’erreur, coloration syntaxique, etc.) peut se faire directement en ligne.

Le spectre des étudiants pouvant accéder à cet enseignement s’est donc élargi, et la plate-forme est en constante amélioration pour pouvoir donner le contenu le plus pédagogique possible à un grand nombre d’élèves.

Cette automatisation donne, comme beaucoup de cours en ligne (Coursera,Udemy, etc.), la possibilité à plus de personnes d’acquérir de nouvelles connaissances. Le but de l’université étant de délivrer des crédits puis, à terme, un diplôme, plus de surveillance et de sécurité sont nécessaires pour s’assurer que l’étudiant maîtrise bien la matière. L’acquisition des compétences dans un cours doit pouvoir être vérifiée selon des méthodes décourageant toutes pratiques frauduleuse.

Le souci de la numérisation de ces cours provient de la nature même d’Internet qui donne un certain anonymat et octroie trop de liberté pour enfreindre les consignes durant un examen. Il faut donc s’assurer de l’identité de l’élève, du contexte dans lequel il se trouve et de son

1. https://www.python.org

2. https://webassembly.org

(14)

comportement tout au long de l’évaluation. Pour remédier à cela, le cours de programmation en Python GLO-1901 oblige les élèves à venir passer l’examen à l’université afin que les étudiants soient surveillés par l’équipe d’enseignement.

Même si cela n’empêche pas totalement une fraude, elle la réduit assez pour que l’étudiant soit jugé apte et obtienne son diplôme, ce qui ne serait pas le cas avec une évaluation en ligne. L’Université Laval permet tout de même aux étudiants résidant à plus de 100 km du campus de passer leurs examens à distance. Ils ont deux options :

— Passer l’examen dans un centre agréé (un autre établissement scolaire) — Le passer avec un répondant et une surveillance en ligne.

La première option permet d’effectuer l’examen dans un autre établissement partenaire de l’Université Laval et s’assure que l’étudiant sera surveillé par quelqu’un et que l’évaluation se déroulera selon les modalités prévues.

La deuxième méthode oblige l’étudiant à trouver un répondant, c’est à dire une personne qui le surveillera pendant la durée du test. En revanche, le choix de ce répondant est moins strict et augmente les chances de fraude. Pour renforcer la sécurité de cette deuxième méthode, un humain faisant partie de l’équipe d’enseignement du cours d’introduction à la programmation en Python surveille les étudiants par Webcam durant leur examen.

Cette méthode reste viable pour le faible nombre d’étudiants faisant l’évaluation à distance (moins de 10 par année). Par contre, elle deviendrait très vite impossible à gérer pour plus d’examens à distance simultanés.

Bien que le système soit parfaitement fonctionnel et permette un enseignement à distance de grande qualité, nous voulons trouver un moyen de renforcer cette surveillance. À terme, cela permettrait à un plus grand nombre d’élèves d’obtenir les crédits du cours en faisant les leçons et les tests à distance.

Nous avons employé plusieurs fois la notion de renforcement de la surveillance. En effet, une certaine automatisation de la surveillance a déjà été réalisée. Actuellement, pour assurer la sécurité, l’examen est fait sur une clé linux live. Il faut donc que les étudiants démarrent leur ordinateur sur une clé contenant un système d’exploitation spécifique afin de pouvoir passer l’épreuve. Cela permet de limiter leur accès à Internet par un serveur mandataire (proxy), et de leur fournir un environnement vierge et contrôlé contenant uniquement ce qui est autorisé. L’environnement est donc contrôlé par la clé et les méthodes créées à même le site de cours. Le contexte d’examen est donc sécuritaire, modifiable par l’équipe d’enseignement et uniformisé pour tous. Une certaine automatisation a aussi été réalisée pour aider les étudiants à passer leur examen au mieux (rétroaction sur leur code, temps limité, etc.).

(15)

Figure 0.1 – Exemple d’un notebook jupyter d’examen

Grâce à cela, tout le contexte numérique de l’étudiant est sécurisé, mais l’étudiant lui-même reste le plus important et celui-ci est incontrôlable.

Dans le contexte de ce cours en ligne, nous voulons donc développer un système qui permettrait de renforcer cette surveillance. Le but serait de pouvoir analyser la partie humaine de ce contexte, la partie numérique étant déjà contrôlée. Cela permettrait de se passer du répondant et de permettre à plus d’élèves de passer leurs examens depuis chez eux de façon simultanée et sécuritaire. De ce fait, la reconnaissance des examens en ligne pourrait être améliorée et les certifications dans les domaines spécifiques seraient plus valorisées.

Nous devons aussi faire face à une contrainte majeure : seuls la webcam, le clavier/souris et le microphone de l’ordinateur de l’étudiant sont accessibles pour pouvoir le surveiller. Cela donne peu d’information et empêche d’accéder à toute la scène entourant l’étudiant.

Exemple d’examen

Sur le notebook de la figure 0.1, on peut voir une page de notebook d’examen. Celui-ci se compose de 4 groupes distincts. Le dernier correspond au titre et à la solution de l’exercice que les étudiants ne peuvent voir qu’après l’examen et ne sera donc pas abordé ici. Le but pour l’étudiant est de lire l’énoncé de la cellule 1 et d’entrer son code dans la cellule 2. Les élèves disposent aussi d’une autre cellule (3) qui n’est pas traitée et qui leur permet d’effectuer des tests. Une fois satisfaits de leur solution ils peuvent cliquer sur le bouton soumettre en haut de la page en vert. À ce moment-là, le serveur analyse leur soumission et la corrige. Dans le cas échéant, une rétroaction détaillée qui signale leur erreur (syntaxe, erreur python, ou mauvais résultat) est envoyée.

(16)

Les plus gros problèmes se résolvent en moins de 40 lignes de code et les plus simples en une seule. La complexité peut provenir des notions de base de programmation ou de la connaissance du langage Python. Puisque le cours est un cours d’introduction à la programmation en Python, les notions algorithmiques plus avancées ne sont pas traitées.

En plus de tous les efforts pour déployer un serveur permettant un feed-back précis, les élèves ont toujours accès à une partie modérée du cours présent sur le site plus la documentation officielle du langage python. Cela, plus les mécanismes en place sur la clé usb de l’examen offrent aujourd’hui la possibilité de faire passer l’évaluation grâce à un support informatique à plus de 400 étudiants en une seule journée.

Bien que tout ces mécanismes permettent aujourd’hui un système d’examen numérique fiable, notre but est de le renforcer afin d’améliorer la sécurité et de faciliter le travail humain nécessaire.

Méthodes

Pour résoudre la question de la surveillance à distance, plusieurs approches sont envisageables. En découpant le problème en sous-parties selon les entrées de l’étudiant auxquelles nous avons accès, soit analyse de vidéo, analyse de frappe au clavier/souris et analyse du son, nous avons réalisé que les méthodes les plus efficaces pour réaliser chacune de ces sous-tâches étaient les méthodes d’apprentissage profond.

En effet, il a été prouvé [5, 6] que des réseaux pouvaient approximer n’importe quelle fonction. Il est donc plus simple pour l’homme que le réseau découvre par lui-même les notions / caractéristiques qui lui permettront de résoudre le problème donné. Il faut donc réussir à adapter la complexité de ces réseaux à celle du problème envisagé.

Nous aurions aussi pu adopter un paradigme plus traditionnel, avec des méthodes un peu plus anciennes, relevant plutôt de l’ingénierie en concevant des mécaniques/logiciels avec des métriques créées à la main par l’homme. Mais choisir de récolter et transformer des données afin d’entraîner des procédés plus automatiques se justifie par le fait qu’ils permettent de s’affranchir de règles complexes pensées par des humains. Cela évite l’ajout de connaissance (biaisées ou non) par l’homme, ce qui rend la méthode plus générale et applicable dans de nombreuses circonstances. C’est cela qui nous a poussés à choisir des approches d’apprentissage profond. En effet, un système déterministe aurait été réalisable, mais les règles énoncées n’auraient pas couvert tous les cas.

Les modèles choisis sont tous à l’état de l’art (récent de moins de 2 ans) de problèmes précis différents et peuvent être combinés selon les besoins. En revanche, pour pouvoir entraîner ces modèles afin qu’ils performent, il faut au préalable récolter beaucoup de données (plusieurs milliers d’exemples). C’est le désavantage du paradigme d’apprentissage automatique. Pour

(17)

que nos modèles puissent généraliser et apprendre les tâches que nous souhaitons réaliser, il faut leur donner beaucoup d’exemples.

Données

Avec les sources d’information que nous avons sur l’étudiant (clavier, webcam, microphone, souris), nous devons entraîner les modèles d’apprentissage profond afin de surveiller son comportement.

De plus, pour entraîner un réseau performant, il faut une quantité très importante de données afin que celui-ci ait une idée générale des solutions. En effet, plus on possède d’exemples variés, plus notre réseau va diversifier ses connaissances sur nos données, et donc va mieux généraliser.

Données du clavier

Pour ce qui est de la détection des entrées au clavier, énormément de données ont pu être acquises à l’aide du site du cours. Les 412 étudiants, ont en moyenne 140 entrées d’exercices, 70 de quiz et 30 d’examens (soit 90 000 au total). Chacune de ces entrées comporte en moyenne 60 000 évènements (soit un peu plus de cinq milliards d’évènements totaux prenant 12Go décompressés).

Dès qu’un élève fait un exercice, un quiz ou un examen, ses actions sont anonymisées puis enregistrées dans une base de données. Elles regroupent toutes les frappes au clavier, ainsi que les mouvements de la souris, mais surtout le moment exact ou ces évènements surviennent. Grâce à cela, nous voulons savoir si l’étudiant faisant son examen est le bon, et vérifier que son comportement correspond bien à celui observé tout au long de la session.

Ces données sont variées et représentent la globalité des données sur lesquelles nous voulons apprendre et utiliser un modèle. Elles sont stockées de façon brute sur le serveur, puis sont téléchargées et prétraitées avant de les donner au programme d’apprentissage.

Données vidéo

Bien que nous ayons pu récolter suffisamment de données biométriques (clavier et souris), et donc créer une quantité fructueuse d’informations, nous n’avons pas pu faire de même avec les données vidéo d’étudiant effectuant des examens. En effet, trop peu ont passé des évaluations à distance dans les années précédentes et les données n’étaient pas assez nombreuses pour pouvoir entraîner un réseau. En effet, il n’y avait qu’une image enregistrée toutes les cinq secondes, avec certaines interruptions.

Cela amène une base de données trop pauvre, difficilement exploitable pour des méthodes d’apprentissage. En effet, celles-ci sont trop peu nombreuses et peu variées, elles ne recouvrent

(18)

pas l’espace des caractéristiques que nous voulons apprendre ce qui rend la tâche d’apprentissage très difficile.

But et spécification

Ce mémoire a donc pour but de définir une méthode et des pistes de solutions pour l’amélioration de la surveillance d’examens à distance. Énormément de choses sont réalisables avec cette problématique. En effet, celle-ci étant très vaste, beaucoup de preuves de concept ont été faites et deux points sont abordés en profondeur.

Le premier est de trouver une méthode pour générer les données vidéo que nous n’avons pas. En effet, avec les méthodes les plus récentes (DeepFake), nous pouvons réussir à créer des données synthétiques d’un étudiant en période d’examen. Nous amenons aussi des pistes sur des idées connexes, comme l’annotation et la classification de vidéos.

Pour générer ces images, il aurait été envisageable de faire un appel à candidat et de filmer puis d’annoter des centaines de personnes. Cela aurait demandé énormément de travail, les données auraient été bruitées et cette étape n’aurait pas participé à l’avancée scientifique. Il aurait aussi été réalisable de numériser des visages humains ou d’en générer puis de les modifier. En revanche, ces techniques sont complexes et le lien entre l’algorithme et les logiciels de rendu 3D sont peu conviviaux [7, 8,9, 10]. Une partie de cette maîtrise a donc été de recréer des visages synthétiques humains pouvant bouger afin de générer une base de données de vidéos de visages. Plus spécifiquement de portraits d’étudiants en examen. Il est aussi possible de faire bouger un visage depuis de l’audio [11] pour générer notre base de données, mais nous n’avions pas non plus de base audio pour cela et ces méthodes sont moins avancées et plus difficiles à mettre en œuvre.

Le deuxième point est de réussir à détecter l’identité d’un étudiant à partir de son comportement sur le site durant l’examen. Ce faisant, nous devons développer les mécaniques nécessaires pour enregistrer, analyser et traiter les données des étudiants sur le site du cours. En faisant cela, nous proposerons aussi une base de données publique et anonymisée des données que nous avons récoltées. Grâce à cela, nous pouvons améliorer la détection d’identité lors de l’examen et renforcer la sécurité.

Pour résoudre ces deux problèmes, nous avons recherché et analysé les paradigmes et méthodes disponibles. Le cadre a ainsi été posé. La surveillance étant un problème difficile, les procédés classiques ont dû être revus et beaucoup de solutions proviennent de papiers récents de quelques mois seulement, majoritairement des méthodes intelligentes.

Durant cette recherche, beaucoup de méthodes ont étés explorées et seulement certaines ont étés jugées viables avant de sélectionner celle qui semblait la plus prometteuse. Nous devons donc défricher le contexte de la surveillance d’examen et poser les bases viables d’un système,

(19)

en nous appuyant sur des démarches robustes.

Pour les étudiants sur le campus, l’évaluation est surveillée physiquement par les assistants de cours. Les décisions sont donc humaines et la performance est la meilleure à ce jour. Cela n’exclut pas des cas indirects de triche, mais aujourd’hui, l’humain reste le plus apte pour cette tâche même si la surveillance n’est pas parfaite. Nous définissons donc la performance comme le déroulement de l’examen sans évènement majeur. Par évènement majeur, on peut comprendre une sortie du champ de la caméra, ou une tentative évidente de triche comme un bavardage avec une autre personne ou un regard en fuite. Pour ceux à distance, le problème du déroulement correct du test est identique, les méthodes développées peuvent être appliquées autant dans un contexte d’examen à distance qu’en renfort d’une surveillance classique. Il faut aussi que la surveillance automatique permette le même déroulement que celle faite par l’équipe d’enseignement actuelle.

Il faut donc vérifier l’identité de l’étudiant faisant l’évaluation ainsi que son environnement. Les personnes qui l’entourent, le bruit et ses mouvements sont les seuls indices dont nous disposons. Avec cela, il faut faciliter au mieux une supervision de l’examen.

Le reste des investigations a permis de poser un contexte et de trouver des pistes de solutions pour un système encore plus général qui se baserait sur ces résultats et offrirait une facilité de surveillance.

Méthodes d’ingénierie

Dans ce mémoire, l’accent a été mis sur l’aspect recherche et innovation. Aussi, grâce à d’autres approches déjà existantes un système aurait pu être produit, p.ex reconnaissance d’émotions [12], détection de la direction du regard ou du visage [13,14], mais cela relève plus de l’ingénierie que de la recherche. .

Le code de [15] a été implanté et testé en une journée et permet une première aide à la surveillance. Dans notre test, notre cadriciel levait des drapeaux si le visage reconnu n’était pas le bon ou si le visage sortait du champ de la caméra. Bien que n’empêchant pas toutes les fraudes, cela reste un moyen simple, rapide et efficace d’améliorer la sécurité.

Une deuxième méthode est la reconnaissance d’action. Grâce au projet de Microsoft [16], disposant de beaucoup de moyens, il est possible d’appliquer leur modèle afin de reconnaître le geste effectué ou l’objet sur une image ou une séquence vidéo.

Comme dit précédemment, cela relève de l’ingénierie, et bien que complexes, ces modèles sont déjà créés et entraînés. Le cœur du problème serait de créer une interface permettant d’envoyer le résultat de ces détections au serveur. Ne souhaitant pas réaliser ce type de travail, nous nous sommes penchés sur des aspects de recherche plus approfondis afin d’apporter des méthodes

(20)

Figure 0.2 – Exemple de système de détection d’identité déjà existant. Il permet de détecter la position du visage ainsi que son identité. Le système est robuste à l’éclairage et la distance, il fonctionne grâce à des réseaux à convolution, basé sur la bibliothèque dLib http://dlib.net

Figure 0.3 – Exemple de système d’analyse d’action déjà existant. Leur projet propose de la détection d’action comme ici celle d’écrire (gauche), de la détection d’objets (milieu gauche),

de la segmentation d’objets (milieu droit) et de la détection de squelette (droite)

novatrices i.e la génération synthétique de visages et la détection grâce au comportement de l’élève.

Revue de littérature

La problématique de surveillance d’examen en ligne étant nouvelle et spécialisée, nous n’avons pas pu trouver de comparatif. Ce qui s’en rapproche le plus est la surveillance d’une salle entière d’examen [17], l’identification d’humeurs grâce à la saisie de texte sur un téléphone intelligent [18] et la détection d’identité sur entrée de texte libre [19].

Un lien moins connexe, mais cohérent avec le cadre sont les travaux réalisés pour détecter l’échec scolaire [20,21,22,23,24]

D’autres méthodes d’identification portent uniquement sur le clavier ou uniquement sur la souris. De plus, ces méthodes se basent sur des séquences bien plus courtes avec un spectre plus étroit. Par exemple, dans les domaines connexes ayant un lien avec ce problème, nous pouvons retrouver de l’analyse de frappes au clavier et des mouvements de souris pour détecter

(21)

les émotions [25]. Mais aussi de l’analyse de frappes au clavier pour renforcer la saisie d’un mot de passe [26]. Ou bien un système de tâches périodiques à la souris pour renforcer un système de sécurité [27].

Ces méthodes nous ont guidées et inspirées afin de cerner et de résoudre au mieux notre problème. Nous nous sommes d’ailleurs inspirés d’architectures déjà existantes pour réaliser les parties dont nous avions besoin. Bien que notre contexte soit bien différent, cela nous a évité de tomber dans les écueils classiques de ces domaines.

Une fois le contexte cerné, nous avons pu commencer à réfléchir aux technologies nécessaires pour le résoudre. Par la suite, une fois les technologies choisies, les recherches des aspects plus techniques de celles-ci nous ont amenées vers une des solutions les plus évidentes à mettre en place.

Parmi le paradigme d’apprentissage profond, nous avons utilisé les méthodes à l’état de l’art pour chaque sous-tâche, dont les besoins sont spécifiques. Ces choix ont été influencés par les recherches récentes dans leurs domaines. Bien que présentes en détails lors de leur utilisation plus tard dans ce mémoire, nous pouvons citer les méthodes pour ceux familiers au domaine. Pour tous nos besoins de génération de données, nous avons utilisé des GANs (Generative adversial network / Réseaux adversaires génératifs) [28, 29, 30, 31, 32, 33, 34, 35, 36, 37], ce sont les modèles à ce jour les plus performants pour la tâche. Pour l’analyse d’image, des réseaux à convolutions [38, 39] se sont imposés et ont le monopole dans leur domaine depuis quelques années. Enfin, pour le traitement de données temporelles, plus d’approches sont envisageables. Nous avons donc essayé les trois paradigmes les plus courants. Plus spécifiquement des (Bi)LSTM (Long short term memory / Cellule à mémoire courte. Ce sont réseaux récurrents, permettant de traiter des séquences) avec des mécaniques d’attention [40,41], la partie encodeur d’un Transformer [1,2,3,42] et des réseaux à convolution [43].

Pour la génération de visages, le choix de la méthode a aussi été influencé par les résultats récents [44] et [30].

Durant cette recherche plus technique, nous avons pu découvrir et adapter beaucoup de méthodes récentes à ce problème.

Les autres articles qui contribuent aux parties techniques sont cités dans les parties correspon-dantes. Il s’agit des principales techniques faisant l’état de l’art de leurs domaines respectifs afin de concevoir et d’entraîner au mieux des réseaux.

Plan du mémoire

Comme expliqué précédemment nous voulons réaliser de la génération synthétique de visages afin de palier aux données manquantes puis identifier un élève via sa façon de taper au clavier

(22)

et de bouger la souris.

Premièrement, nous allons développer la génération de visages synthétiques, offrant un état de l’art plus technique sur le sujet et en définissant les notions utiles. Nous expliquerons les motivations derrière ce procédé et les pistes de solutions sur le traitement des données créées. La méthode proposée est ensuite expliquée en détail en commençant par l’explication du concept de GAN, de modèles simples puis du modèle final. S’en suivra un chapitre présentant les résultats obtenus.

Ensuite, nous allons développer la méthode sur l’identification d’individus grâce à leur com-portement sur le site web. Nous allons introduire le contexte dans lequel sont récoltées les données puis définir ces dernières ainsi que les concepts nécessaires à leurs traitements et les pratiques utilisées dans le domaine du traitement de séquences. Nous présenterons par la suite les résultats de ces expérimentations.

Finalement, nous conclurons sur les deux méthodes développées et sur l’intelligence dans la surveillance d’examens.

Dans l’annexe nous retrouvons le code et les documents sources, ainsi que les architectures détaillées de tous les modèles. Tous les détails nécessaires à la reproductibilité y sont aussi mentionnés.

(23)

Chapitre 1

Méthodes d’analyse par la webcam

Il a été dit plus haut que pour réaliser la surveillance d’un étudiant nous ne disposions que du microphone, de la webcam et des périphériques d’entrée (clavier/souris) de l’élève.

Nous nous sommes concentrés sur la vidéo et la détection des entrées clavier/souris d’un étudiant plutôt que sur l’audio. En revanche, des pistes sont données dans les ouvertures pour le traitement du microphone. Un modèle sera donc responsable de la vidéo, un autre des entrées clavier/souris. Comme expliqué précédemment nous n’avons pas de données vidéos avec lesquelles entraîner un réseau. Le but de ce chapitre est donc d’expliquer la méthode utilisée pour générer une base de données de vidéos synthétiques d’étudiants.

1.1

Introduction

Lorsqu’un élève fait son examen en ligne, un flux vidéo est envoyé à l’équipe d’enseignement grâce à la clé live Linux. En effet, puisque l’ordinateur de l’étudiant démarre sur une image live, cela nous procure un plus grand contrôle de sa machine et nous permet d’obtenir l’accès à la webcam, microphone et clavier.

Pour l’instant, aucune automatisation sur la vidéo n’a été faite. Cela oblige une personne à surveiller plusieurs élèves en parallèle durant les 3h d’examen. Le but est donc de venir annoter une vidéo et lever des drapeaux au bon moment pour alléger l’attention du surveillant. Nous pourrions penser que pour surveiller plus d’étudiants, aucune automatisation n’est nécessaire et qu’il suffirait d’employer plus de personnes pour surveiller à distance des élèves. Même si cela est théoriquement réalisable, il n’est pas possible de le mettre à l’échelle pour un cours avec un nombre plus important d’élèves faisant leur examen en ligne. Cela demanderait une logistique complexe. En effet, pour un petit cours, il reste possible, pour plusieurs membres de l’équipe d’enseignement, de surveiller quelques étudiants à la fois, mais aujourd’hui les cours en ligne comportent plusieurs centaines d’élèves. Il est donc difficile d’avoir une logistique pour autoriser autant d’examens en ligne simultanément.

(24)

Nous avons aussi pensé à ne pas utiliser la vidéo pour renforcer la surveillance des examens, mais à utiliser certaines métriques déjà présentes sur le site du cours. Par exemple les notes obtenues aux exercices, le temps passé sur le site, le nombre de réponses sur le forum, etc. Malheureusement, celles-ci ne tenant compte que des données sur le serveur elles ne permettent pas une analyse fine du comportement en direct de la personne. Ces données permettraient d’émettre un jugement à priori sur les élèves les plus assidus, mais n’aident pas pour la surveillance directe de l’examen.

De ce fait, le but global du système que nous souhaitons réaliser est de signaler des périodes d’activité suspecte afin d’aider les surveillants en guidant leur attention les aidant à surveiller plus d’étudiants à la fois. Comme montré au chapitre d’introduction (sous-section ) la détection d’action est déjà réalisable si l’on possède les données. Celle-ci ne se baserait que sur les actions pré-entraînées du réseau de [16].

Nous allons présenter dans la section suivante les pistes trouvées pour détecter des anomalies dans une vidéo. Celles-ci viennent renforcer le travail de [16], mais ne sont que des pistes, car nous n’avions pas de données d’étudiant sur lesquelles appliquer ces méthodes. Ces travaux nous ont en revanche inspirés et constituent la motivation du but de ce chapitre qui est la génération d’images de visage, les données constituant la base des méthodes intelligentes.

Notion de normalité

Bien que ce chapitre porte sur la génération de visages, il semble intéressant d’aborder ce que l’on pourrait ensuite faire avec les données générées. Cela apporte une motivation à la création de notre dataset d’images de visages.

L’idée est de faire apprendre un comportement normal à notre réseau, par la suite tout ce qui ne rentre pas dans cette normalité est classé comme anormal et demande une supervision par un humain. Cela a déjà été réalisé par [45] qui permet d’obtenir un tel espace de classification. Cet article utilise une base de données de vidéos, chacune possédant une étiquette normale ou anormale.

De façon plus formelle, il faut encoder les données dans un espace vectoriel de plus grande dimension qui servira pour l’apprentissage. Le réseau va ensuite apprendre une frontière de décision parmi ces données, afin d’obtenir une meilleure représentation pour la classification. Le réseau saura donc ensuite discriminer tout élément appartenant à cet espace. La frontière permettra de classer des comportements considérés normaux d’un bord et tous les éléments anormaux de l’autre.

Il faut donc donner assez de comportements normaux, pour que le réseau puisse apprendre et généraliser sur les comportements des étudiants en période d’examen. Le reste relève de l’empathie humaine afin de décider d’une suspicion de triche.

(25)

Par exemple, l’élève lève le bras gauche, le réseau n’ayant jamais vu ce comportement (ou quelque chose de similaire), va classifier cela comme anormal et lever un drapeau. C’est ensuite à l’humain de décider si ce comportement mérite plus d’attention ou non.

Ce type de méthode ne permet donc pas, au final, de se passer de l’humain, mais cela permet de réduire drastiquement l’attention nécessaire.

Le problème est donc de pouvoir transformer une séquence en un vecteur dans RN, afin de

pouvoir classifier chaque vidéo. Les méthodes les plus courantes pour réaliser cela sont les convolutions 3D ou les réseaux récurrents qui permettent de considérer l’aspect temporel de la séquence.

Une autre idée plus récente pourrait être de faire apprendre à un agent par renforcement à donner un score d’anormalité, pondéré par des récompenses humaines. P.ex [46] qui apprend à un androïde à faire un salto comme un humain le ferait, [47] qui apprend à se déplacer comme un humain et [48] qui apprend plusieurs jeux, aidé par des rétroactions humaines. Ces trois articles montrent que grâce aux rétroactions humaines, l’agent performe mieux et les mouvements sont plus doux, proche d’un joueur humain. Par contre, cela demande une interaction humaine non négligeable, mais tout de même moins importante que les méthodes supervisées requérant énormément de données souvent annotées à la main.

Notion de temporalité

Pour des données en séquence, il faut absolument garder l’information temporelle qui est cruciale pour analyser un comportement. Sans cela, un modèle d’apprentissage ne verrait qu’une suite d’information sans cohérence et n’aurait aucune notion du temps qui les relie. Pour remédier à cela, deux méthodes existent, les convolutions ou les réseaux récurrents. Ces deux méthodes sont par exemple utilisées pour faire de l’analyse de vidéos anormales [45], de l’extraction d’informations de vidéos [49], ou de la reconnaissance de gestes chirurgicaux [50] (optimisation des convolutions 3D [51]).

Le but de la première méthode, les convolutions 3D, est de convoluer sur les deux dimensions spatiales d’une image, plus une "temporelle" : i.e une suite d’images. Cela est réalisable grâce à l’utilisation de noyaux à trois dimensions comme montré à la figure 1.1(à la différence des convolutions 2D, voir figure 1.2). Ici, tous les poids w1,i,j correspondent aux deux dimensions

spatiales pour une même image. Quant aux poids wt,1,1, ils correspondent à un seul point dans

l’espace, mais pour différentes images dans le temps.

Plusieurs convolutions 3D peuvent être appliquées à la suite ou bien une seule suffit pour s’affranchir de la donnée temporelle, et revenir à des modèles plus usuels traitant des données en deux dimensions.

(26)

Figure 1.1 – Exemple d’une convolution 3D ou le noyau de convolution est un cube au lieu d’un carré comme pour une convolution en 2D.

Figure 1.2 – Exemple d’une convolution 2D. Le but est pour le réseau d’apprendre les poids du noyau de convolution (en orange) afin d’analyser au mieux l’image1.

L’autre approche peut être d’appliquer un réseau récurrent [1,2,3]. Ces réseaux, contrairement aux convolutions qui ont une fenêtre temporelle fixe que l’on déplace, fonctionnent en itérant sur les éléments de la séquence en gardant le passé dans une mémoire interne. Or ceux-ci ne pouvant pas traiter une suite de données en deux dimensions, on applique un réseau à convolution (2D) sur chaque image pour les ramener à des vecteurs d’une dimension. Ils seront ensuite exploitables par un réseau récurent.

(27)

Aussi, nous pouvons passer les images une par une à ce réseau ou lui donner la différence entre deux images consécutives.

Avec ces méthodes, l’information temporelle est conservée. On peut donc obtenir de l’information spatiale pour détecter un comportement anormal (p.ex l’élève n’est plus dans le champ de la caméra), mais surtout l’information temporelle reliant plusieurs images qui individuellement pourraient être considérées comme conformes, mais jugées anormales une fois analysées en séquence.

1.2

Motivation

Grâce à la section précédente, nous avons une idée de l’application que nous pourrions avoir avec les données que nous souhaitons générer. Outre les méthodes déjà implantées explicitées sous-section , nous pourrions par la suite utiliser une classification de vidéos, en conservant l’aspect temporel qui serait plus général que les méthodes déjà existantes [16].

Le plus gros souci vient du fait que pour appliquer des méthodes d’apprentissage, il nous faut un jeu de données complet d’étudiants en période d’examen que nous n’avons pas (c.f section

3.2). En effet, pour l’apprentissage supervisé, une grande quantité de données est nécessaire. Plusieurs milliers à plusieurs millions de données sont requises au minimum (dépendamment de l’application), et doivent représenter les détails de l’espace que nous voulons apprendre. De tels ensembles de données sont souvent difficiles à trouver/créer ou n’existent pas. Une approche valide aurait été de créer un jeux de données nous-mêmes, en embauchant des acteurs, et créant des scénarios déterministes. Bien que possible, cette approche ne donnait pas autant de flexibilité que des méthodes intelligentes et demandait bien plus d’efforts et de logistique pour obtenir le nombre nécessaire de données. Cette approche, si réalisée plus tard, peut toujours venir compléter des données synthétiques et augmenter la qualité du modèle.

Cependant, des travaux récents [31, 52, 53, 54, 55, 56, 57] ont prouvé que l’on peut apprendre et manipuler des espaces d’images : en créer de nouveaux à partir de rien, ou transférer des contenus et des représentations à d’autres. Grâce à ces recherches, nous pouvons utiliser de tels modèles pour manipuler des visages existants et ainsi créer une base de données propice à notre application.

Pour cette partie sur l’analyse grâce à la vidéo en situation d’examen, nous avons donc voulu nous affranchir de la contrainte de la base de données en construisant à partir de l’état de l’art un environnement qui nous permettra de manipuler autant de visages que nous le souhaitons de manière automatique. Une fois ces données créées elles pourront être utilisées pour entraîner des modèles plus complexes. Cela est aussi réalisable avec un corps entier, mais nous avons voulu nous concentrer sur le visage car plus de données sont disponibles dans la littérature. Un des points négatifs de cette approche est que les données synthétiques, bien que similaires

(28)

pour l’oeil humain, sont bien différentes de données réelles. Cela peut empêcher une application concrète par la suite (problème rencontré dans les applications touchant le monde physique p.ex la robotique / conduite autonome). Si un système de génération d’image possède un biais, il pourrait rajouter de l’information, non visible à l’oeil humain, biaisant toutes les images générées pour un traitement ultérieur.

En effet, un modèle ayant appris sur des données synthétiques aura parfois plus de problèmes à traiter par la suite des données réelles qui possèdent plus de bruit ou une structure légèrement différente qui n’a peut être pas été apprise par notre réseau. L’avantage est une grande flexibilité et une facilité de génération des données.

Dans notre cas, on peut par exemple penser à des réflexions lumineuses complexes non reproduites, ou de petits détails comme les cils qui pourraient biaiser nos données générées et ne seraient pas reproductibles même en ajoutant un bruit ou certaines information dans l’image à posteriori.

Une fois la méthode décrite ci-dessus réalisée, nous pourrons créer des scénarios selon notre bon vouloir. Cela est toujours motivé par les idées de la section précédente et celles déjà existantes (c.f sous-section ) pour reconnaître des comportements anormaux.

Pour créer ces données, nous allons utiliser les méthodes les plus reconnues et performantes à ce jour, les réseaux génératifs adversariaux (generatif adversial networks : GANs).

1.3

GANs

État de l’art des GANs

Les méthodes les plus récentes de manipulation d’images permettent des résultats très réalistes. Certaines aussi sont très médiatisées sous le nom de DeepFakes. Par exemple Pix2pix [52], manipulations sémantiques [53,54], Avatars 3D [55] ou seulement de manipulation faciale 3D [56]. Ces techniques nous permettent de manipuler différents types de données visuelles et certaines obtiennent une définition proche du monde réel [31,57].

La plupart d’entre elles travaillent avec des réseaux génératifs adversariaux (GANs) [28, 29] ou des auto-encodeurs variationnels (VAE) [7,58].

Méthodologie

Le but de ces méthodes est d’apprendre l’espace qui représente la distribution des données originales (inconnue) à partir d’exemples (cf. figure1.3). Une fois entraîné, le modèle est ensuite utilisé pour créer ou manipuler des images respectant la distribution initiale (qu’il a apprise) ou injecter des connaissances à priori pour changer les attributs et générer de nouvelles images avec les détails souhaités [35].

(29)

Figure 1.3 – Apprentissage de l’espace des données par un GAN. En vert, la distribution des données selon le GAN, en noir pointillé la distribution réelle et enbleu la différence.

À la figure 1.3 on peut voir l’évolution des courbes de distribution de probabilité des deux espaces, celui du GAN (en vert) et celui de nos données accessibles via des échantillons (en noir pointillé). Le GAN, en s’entraînant, va progressivement se rapprocher et coller la distribution originale dont nous ne connaissons à priori rien.

Une fois l’entraînement terminé, nous pouvons donc utiliser le modèle pour générer des données selon une distribution quasi identique à celle de nos données que nous ne connaissons pas. Ce procédé nous permet donc de trouver une distribution de probabilité inconnue. Cette méthode est utile, car elle ne nécessite pas de connaître l’étiquette de nos données. À contrario, une méthode d’apprentissage supervisé plus classique nécessiterait d’avoir une étiquette par donnée ce qui représente souvent un travail préalable laborieux.

Pour générer des visages, nous pouvons donc trouver une banque d’images de visages et apprendre leurs spécificités. Une fois cela fait, nous serons à même de générer de nouveaux visages à partir de la même distribution.

Dans la figure 1.4, nous pouvons voir le fonctionnement d’un GAN basique, le bruit (B, loi normale de variance unitaire et de moyenne nulle) en entrée sert pour avoir une distribution variée et essayer d’explorer tout l’espace possible des données.

Le réseau générateur (G) apprend à transformer ce bruit en une image semblable à celle que nous avons dans notre dataset. Le discriminateur (D) apprend à dire si l’image générée semble vraisemblable ou non.

Durant l’apprentissage, le discriminateur apprend, et devient de plus en plus critique. Il distingue de mieux en mieux une vraie image d’une synthétique. Le générateur est donc obligé de générer des images de plus en plus réalistes (proches de la distribution originale) pour continuer de tromper le discriminateur.

L’apprentissage se fait grâce à un score de réalisme produit par le discriminateur. Le but de celui-ci est de donner un score proche de 1 aux images réelles et de -1 aux images générées. La

(30)

Figure 1.4 – Exemple du fonctionnement d’un GAN

seule connaissance que nous avons est la véracité de l’image donnée au discriminateur. Nous pouvons ainsi lui indiquer si l’image est vraie ou fausse et donc s’il se trompe ou non sur sa prédiction (l’image est-elle générée ? 1 ou -1 ?). Son but est donc de diminuer les scores des images générées et d’augmenter celui des vraies.

Le générateur reçoit le score des images synthétiques qui sert à le récompenser ou à le punir selon la qualité des images produites. Il essaye donc de s’améliorer, générant des images de plus en plus réalistes pour maximiser son score (que le discriminateur tente de minimiser). Mathématiquement, la fonction de perte utilisée est généralement l’entropie croisée binaire (binary cross entropy) de l’équation1.1. C’est elle qui permet d’adapter la récompense pour ce jeu de minmax ou le but est d’atteindre un équilibre de Nash2. En effet, un GAN doit juste

maximiser le score du générateur (images réalistes) et diminuer celui du discriminateur (ne pas se tromper souvent) c’est-à-dire :

max

G (minD E(G, D))avec E(G, D) =

1

2(Ex∼pt[1 − D(x)] + Eb∼pb[D(G(b))]) (1.1) Où pb est la densité de probabilité de l’espace du bruit (espace d’entrée) et pt est la densité

de probabilité de l’espace des données réelles (espace du dataset). G signifie générateur et D discriminateur. E représente l’espérance mathématique.

L’espace d’entrée, des vecteurs remplit de bruit suivant une loi normale de variance unitaire et de moyenne nulle, créent donc des sorties différentes. Deux vecteurs proches (selon une distance

(31)

euclidienne) créeront donc deux éléments en sortie proches. Nous pouvons, une fois le GAN entraîné, effectuer une marche aléatoire dans l’espace du bruit pour obtenir des exemples de données générées. En parcourant l’espace appris, nous pouvons donc générer des visages de façon continue et nous construire notre banque d’images proches synthétiques (vidéos).

Écueils classiques

Les principaux problèmes rencontrés avec un GAN sont :

− Le générateur est trop puissant et génère donc des images très peu réalistes, mais trompant dans tous les cas le discriminateur qui croit qu’elles sont vraies, ce dernier n’ayant pas le temps de faire la part des choses. Un sous problème de cela est l’effondrement sur le mode (mode collapse) : le générateur génère uniquement un même type d’image, trompe le discriminateur et dès que celui-ci s’en rend compte, le générateur change de type d’image, et cela à l’infini.

− Le discriminateur est trop puissant et distingue, à tous les coups, une image générée d’une fausse. Le générateur n’a plus aucune chance d’apprendre.

Il est donc difficile d’entraîner ce type de modèle, car la balance des forces doit être très bien réglée. Les méthodes pour pallier à cela sont listées plus loin2.2.1.

Amélioration

Il existe aussi des architectures qui forcent le réseau à apprendre certains attributs à priori. De ce fait, la distribution de probabilité apprise est conditionnée par certains attributs. On peut donc demander au réseau de recréer des images avec les caractéristiques voulues.

Par exemple, un GAN conditionnel [32], un GAN avec un paramètre de rotation de l’image (HoloGan)[30] ou des attributs de visages (StarGan) [34] ou une idée proche pour quantifier l’espace latent (vqvae) [58])

1.4

Méthode

Puisque nous avons vu que les GANs pouvaient apprendre une distribution de données puis générer des images semblables vues dans la banque d’exemple, nous avons voulu nous en inspirer pour pouvoir générer des visages d’étudiants. De ce fait, nous pouvons nous construire le jeu de données que nous n’avons pas. Cela permettrait donc de réaliser l’objectif de ce chapitre, à savoir la génération d’images de visage d’étudiants.

Pour simplifier la représentation des visages, il est plus simple de passer par des landmarks (cf. figure 1.5). Les landmarks sont les points de repère importants sur le visage. Ils contiennent l’information spatiale nécessaire pour déterminer si un comportement est normal. En effet, nous pouvons nous affranchir de la texture d’un visage et uniquement garder sa forme afin de

(32)

Figure 1.5 – à gauche les visages et à droite les landmarks associés.

prédire si le comportement est inhabituel ou non. Par exemple, regarder loin de l’écran, ou un comportement répétitif etc. De plus, passer par ce type de représentation permet de s’affranchir de l’identité de la personne. En effet, les landmarks sont indépendants de la texture du visage et permettent de conserver uniquement l’information de la position qui nous intéresse. De ce fait, l’analyse des mouvements de ces points caractéristiques est suffisante pour analyser un comportement.

Nous voulons donc réaliser un cadriciel qui permettra de générer une séquence de landmarks. De ce fait, nous pourrons générer autant de scénarios aléatoires que nous voulons et atteindre notre but.

Pour obtenir ces landmarks, nous avons utilisé le code de Adrian Bulat [59] (code) [60] (article). Cet article propose essentiellement une méthode pour calculer des landmarks en 3D. Avec un jeu de données annoté d’images possédant des landmarks en 3D et en 2D ils peuvent entraîner un modèle à générer des landmarks en 3D depuis une image avec des landmarks en 2D. Cela est fait grâce à des réseaux en forme d’horloge (HourGlass) possédant des blocs de convolution résiduelle.

Puisqu’une représentation 3D possède plus d’information, en retransformant les landmarks en 2D leur précision est renforcée et atteint l’état de l’art. Pour les méthodes extrayant les landmarks en 2D, elles se basent sur des réseaux à convolution pour extraire les composantes intéressantes et prédire les points caractéristiques.

(33)

Figure 1.6 – Exemple d’échantillons de la représentation du GAN

1.5

GAN générant une image de landmarks

Le but de ce GAN est de poser une base simple sur laquelle nous pouvons ensuite construire. Ce GAN prend en entrée un bruit (suivant une loi normale de moyenne nulle et de variance unitaire), et donne la valeur des 224x224 pixels qui composent l’image de sortie. Grâce à cela, nous pouvons l’utiliser pour apprendre à générer des images de landmarks.

Ensuite en effectuant une marche aléatoire dans l’espace de départ, nous pouvons générer une séquence continue et douce dans l’espace d’arrivée (les images de landmarks générés). La figure

1.6montre une représentation simplifiée de la génération de données. Deux bruits proches dans l’espace de départ créent deux images proches dans l’espace d’arrivée.

Le souci est que la génération de ces landmarks dépend de l’espace de départ. Nous avons entraîné le modèle avec VoxCeleb2 [61]. Ce dataset est constitué de vidéos de personnes célèbres durant des interviews. De ce fait, les landmarks générés correspondront à ceux d’une célébrité qui parle.

Nous pouvons en revanche obtenir une séquence cohérente d’un visage humain, car ce modèle est entraîné sur un dataset de personnes ayant une discussion.

(34)

il peut être réentraîné plus rapidement sur un dataset plus petit, mais plus précis (p.ex des images d’élèves en période d’examen). De ce fait, l’espace appris sera plus proche de celui qui nous intéresse.

1.6

GAN générant les landmarks

Le problème majeur d’un GAN classique pour générer une image complète de landmark est sa complexité. Nous n’avons d’ailleurs pas besoin de toute l’information contenue dans chaque pixel de l’image, mais seulement de la position des landmarks.

Nous avons donc simplifié le GAN précédent afin qu’il produise uniquement les points des land-marks. Cela permet de faciliter la représentation pour le réseau, et créer aussi une architecture plus simple.

Au lieu d’entraîner le réseau pour qu’il apprenne à générer une image, on l’entraîne à ce qu’il produise les 68 landmarks que nous allons ensuite relier nous-mêmes. De ce fait, la représentation est plus simple. La précision est aussi meilleure, puisque nous demandons au réseau une tâche plus simple, générant moins de données.

1.7

Entraînement

Pour l’entraînement, le dataset complet fait environ 200Go pour 6 112 personnes et 150 480 vidéos.

Nous avons extrait des images indépendantes et calculé leurs landmarks. Une fois cela fait, nous pouvons générer des données à partir du générateur puis entraîner le modèle avec cette image générée et les vrais landmarks.

La procédure est comme suit :

1: forEpochs do

2: Générer les landmarks depuis le bruit blanc 3: Prendre les landmarks réels du dataset

4: score_faux = Discriminer les données générées

5: Entraîner le générateur sur le score de l’image générée (score_faux) 6: score_vrai = Discriminer les données réelles

7: Entraîner le discriminateur avec les scores des deux landmarks (score_faux et score_vrai)

c.f équation 1.1

8: end for

Pour améliorer la vitesse d’entraînement, le chargement des données a été parallélisé. Nous avons aussi utilisé une extension pour pytorch, Apex de Nvidia qui calcule au mieux la précision

(35)

nécessaire en virgule flottante nécessaire aux variables afin d’accélérer l’entraînement3 4.

Le reste des détails techniques sont donnés dans l’annexe (c.f chapitre A)

Les GANs présentés ici se sont inspirés de l’architecture classique de la littérature qui a ensuite évolué pour donner le résultat final de la section 1.9. Le réseau a été entraîné sur une Nvidia GTX 1050 (4Go VRam) pendant environ 4h. Nous avons utilisé la SELU (Scaled Exponential Linear Unit) comme fonction d’activation, car elle permet contrairement aux autres fonctions (comme la ReLU [? ]), une normalisation interne du modèle ainsi que l’impossibilité d’avoir une explosion ou une disparition du gradient ce qui amène une meilleure stabilité du modèle. En citant le résumé de l’article sur la SELU [62] :

Using the Banach fixed-point theorem, we prove that activations close to zero mean and unit variance that are propagated through many network layers will converge towards zero mean and unit variance — even under the presence of noise and perturbations.

This convergence property of SNNs allows to (1) train deep networks with many layers, (2) employ strong regularization schemes, and (3) to make learning highly robust. Furthermore, for activations not close to unit variance, we prove an upper and lower bound on the variance, thus, vanishing and exploding gradients are impossible.

1.8

Génération de vidéo

Une fois une seule image générée, nous voulons pouvoir trouver l’image suivante, proche, afin de produire des vidéos de visages d’étudiant. Cela constituerait l’apogée du but que nous nous étions fixé. Nous voulons aussi le faire de façon aléatoire afin de remplir nos objectifs.

Pour obtenir des exemples, nous avons testé avec une marche aléatoire (loi normale de moyenne nulle et de variance 0.5) dans l’espace d’entrée (le bruit). Puisque nous voulions surtout une preuve de concept afin de générer des données, nous n’avons pas utilisé d’architecture conditionnelle. Celle-ci nous aurait permis de choisir quel vecteur ajouter au bruit pour pouvoir se déplacer dans la direction de la caractéristique qui nous intéresse. Ici, la marche aléatoire permet de générer des visages avec des caractéristiques non déterministes de façon continue. C’est donc cette méthode que nous avons choisie afin de rendre notre création de visages plus diverse.

En parcourant l’espace appris, nous pouvons donc générer des visages de façon continue et construire notre banque d’images proches synthétiques (vidéos). Une fois cela réalisé, nous

3. https://nvidia.github.io/apex/index.html

(36)

Figure 1.7 – Exemple d’exploration de l’espace du GAN. En ajoutant du bruit (flèche bleue) nous pouvons modifier les images et générer une séquence continue .

aurons donc atteint le but que nous souhaitions, produire des vidéos de visages pour se créer un jeu de données.

Pour ce faire, nous parcourons l’entrée du GAN (le bruit) grâce à une marche aléatoire. Comme on peut le voir figure 1.7, en partant d’un vecteur quelconque puis en ajoutant un peu de bruit aléatoire supplémentaire (l’étape de marche), nous pouvons explorer les différentes sorties de notre modèle. Ici nous pouvons voir que les landmarks sont modifiés d’une itération à l’autre (de gauche à droite sur la figure). En effet, deux bruits en entrée similaires produiront une sortie similaire. En ajoutant du bruit avec une faible variance, les différences sont minimes et on peut donc créer une suite d’images continue.

Amélioration

Nous n’avons pas de dataset d’étudiant en train de faire leurs examens. Pour palier à cela, une piste serait d’appliquer le procédé de transfert de connaissance. Cette méthode consiste à entraîner un modèle sur des données plus nombreuses connexes au but que nous voulons atteindre. De ce fait, le réseau va apprendre les notions générales utiles pour la tâche. Ensuite, nous le spécialisons grâce aux données finales moins nombreuses, mais plus spécifiques. Dans notre cas, nous entraînons notre réseau sur l’espace de voxCeleb2. Cela nous donne

(37)

déjà un réseau compétent capable de modéliser un visage (cf. chapitre suivant 2 figure2.8). On reprend ensuite de cette base de façon à le spécialiser sur les images (moins nombreuses) d’étudiants en période d’examen. De ce fait, il va se spécialiser et se réduire à un espace plus étroit.

Ensuite, pour aller plus loin, nous pourrions ajouter des connaissances à priori afin que notre réseau nous crée le visage avec ces informations supplémentaires (p.ex direction du regard [13,14] / émotion [12]).

Aussi, ce même procédé serait valable avec le haut du corps complet de l’étudiant[63]. Avec les mêmes méthodes, il serait possible de générer des mouvements de bras et torse en plus. Il est aussi possible d’inclure la détection d’iris dans les landmarks [64]. Pour les landmarks de corps il faut 14 landmarks (pieds, genoux, hanches, épaules, coudes, poignets, cou, tête) et ceux-ci n’incluent pas le visage. Pour les iris, dépendamment des modèles, on retrouve de 1 a 28 landmarks qui ne représentent que les yeux (et sourcils).

1.9

GAN de visage

Une fois la base posée, et les procédés découverts en générant des landmarks de visages, nous avons voulu essayer des méthodes différentes afin d’explorer des idées inexploitées jusqu’à aujourd’hui.

En effet, après avoir généré des landmarks, ce qui réalise déjà les objectifs de ce chapitre, qui étaient de créer des données qui nous permettraient de simuler des étudiants, nous souhaitons poursuivre et créer un vrai visage texturé, pour pouvoir analyser des attributs plus fins. Nous n’avons pas investigué plus pour ajouter du réalisme aux landmarks afin de renforcer la génération de vidéo dans les modèles précédents. Mais nous nous sommes penchés sur la génération d’un visage complet et réaliste.

Premièrement, nous voulons repartir de ces landmarks pour générer un visage texturé qui pourrait nous permettre d’animer un visage réaliste. Dans un deuxième temps, nous ne voulons pas avoir à donner la position du visage à la main, car générer des scénarios serait trop long et reviendrait au même qu’embaucher des acteurs pour générer des données. Nous proposons donc une méthode novatrice, afin de modifier automatiquement la position du visage d’un étudiant afin de générer des scénarios variés.

L’idée est d’utiliser un agent d’apprentissage par renforcement pour qu’il apprenne à modifier de façon cohérente la position du visage au lieu d’utiliser une marche dans le bruit d’entrée. Dans la partie précédente, nous avons expliqué qu’il était possible de générer des landmarks d’une personne puis de travailler dessus afin d’obtenir des séquences et de créer un dataset. Ici, nous voulons effectuer la même chose en remplaçant l’entrée du bruit blanc par un agent plus intelligent et en créant des visages réalistes. Le cœur du travail revient donc à créer un visage

(38)

humain réaliste et de le faire bouger de façon automatique.

La même approche pourrait être faite avec un GAN conditionnel en lui donnant des attributs. Cependant, l’injection d’antécédents et le traitement de la représentation latente des GANS peuvent être compliqués et délicats. C’est pourquoi nous avons choisi une approche récente [44] qui utilise des landmarks comme entrée. Nous aurions aussi pu nous baser sur des méthodes moins récentes comme, [65] mais celle-ci oblige à avoir une image en entrée, et il est bien plus simple d’interagir avec des landmarks plutôt qu’une image complète. Cela facilite la représentation et «cache» l’espace latent. L’accent est mis sur les landmarks, plus compréhensibles pour l’homme. En effet, dans notre cas, nous voulons seulement changer la position spatiale du visage, en conservant ses caractéristiques originales. De plus, les landmarks sont de bons paramètres avec lesquels un agent d’apprentissage peut interagir, c’est le moyen le plus direct et le plus simple de contrôler l’image générée.

Grâce à cette méthode, nous pouvons transformer un visage (orientation, expression...) en nous limitant aux caractéristiques originales. En revanche, elle ne permet pas de changer de couleur des cheveux ou enlever des lunettes comme dans [34]. Les avantages de la méthode de [44] sont la qualité de l’image produite (état de l’art) par rapport à d’autres méthodes, qu’elle peut être affinée avec seulement quelques images pour une personne inconnue et son temps d’inférence rapide.

Le seul inconvénient des landmarks de visage en général c’est qu’ils ne tiennent pas compte du regard. Pour détecter la pupille et la direction du regard, il faudrait ajouter de l’information grâce à d’autres méthodes [66].

Comme l’implantation du modèle de générateur de visage [44] n’était pas accessible au public, les auteurs n’ayant rien divulgué, nous avons recréé l’architecture à partir de zéro. Ensuite, nous avons ajouté un agent d’apprentissage par renforcement qui est entraîné pour modifier les landmarks et générer de nouveaux visages réalistes grâce à l’environnement créé.

L’ensemble de données utilisé pour toutes les méthodes est toujours VoxCeleb2 [61].

1.9.1 Générateur d’images synthétiques

Nous avons modifié l’architecture de [44], grâce à leur travail, nous avons développé quelque chose de similaire qui nous permet de manipuler les visages.

L’idée principale est de modifier l’orientation et l’expression des visages avec un GAN. L’archi-tecture se base donc sur celle d’un GAN classique comme explicité à la figure1.4. À la place du bruit en entrée, nous donnons au générateur (G) de nouveaux landmarks (x) qui correspondent à la forme du visage que nous voulons. Le générateur prend alors ces points clés et génère une image synthétique (Ib) de la personne.

(39)

Figure 1.8 – Architecture du générateur d’image

Puisque le générateur ne reçoit que des informations spatiales (les landmarks), nous lui donnons les caractéristiques de la personne à produire grâce à des paramètres (P ) calculés via un embedder (E) sur les autres images de cette même personne (C).

De plus, par rapport à l’architecture originale, nous concaténons certaines couches (L rose rouge et vert figure 1.8) de l’embedder avec celles d’upsampling du générateur afin de lui procurer plus d’informations.

Enfin, suivant le principe des GANs, un discriminateur (D) donne un score de réalisme de l’image générée. Son but est d’apprendre à détecter les images réelles par rapport aux images générées.

Le but du générateur (et de l’embedder) est de rendre une image si réaliste que le discriminateur pensera que c’est une image réelle. Ils seront en compétition et apprendront les uns des autres. À la fin, le discriminateur sera si bon pour déterminer les images synthétiques par rapport aux images réelles que le générateur aura dû apprendre à réaliser des visages très réalistes respectant la position donnée en entrée.

1.9.2 Embedder

Le but de l’embedder est de donner une bonne représentation de la personne pour aider le générateur à reconstruire une image la plus réaliste possible. L’idée est de créer un vecteur caractérisant le visage par exemple les informations sur la couleur des cheveux, la forme du visage, la couleur de peau, position des lèvres.

Le dataset est organisé par contexte : chaque personne possède plusieurs contextes dont chacun contient plusieurs vidéos (même arrière-plans, vêtements, etc.).

Figure

Figure 0.1 – Exemple d’un notebook jupyter d’examen
Figure 0.3 – Exemple de système d’analyse d’action déjà existant. Leur projet propose de la détection d’action comme ici celle d’écrire (gauche), de la détection d’objets (milieu gauche),
Figure 1.2 – Exemple d’une convolution 2D. Le but est pour le réseau d’apprendre les poids du noyau de convolution (en orange) afin d’analyser au mieux l’image 1 .
Figure 1.4 – Exemple du fonctionnement d’un GAN
+7

Références

Documents relatifs

Exprimer le nombre d’entités avec lesquelles une entité peut être en association via un ensemble d’associations. Cas particulier des associations binaires (e.g., entre

Conserver uniquement la super-entité Conserver uniquement les spécialisations Conserver toutes les entités. Choix 1 : le schéma est factorisé (seule la clé est partagée)

Vous trouverez l''''intégralité des informations et des données dans la documentation pour l''utilisateur

The Legend of Zelda Aventure Mario Kart 8 : Deluxe Course Super Mario ,Odyssey Plates-formes.

‚ Par exemple : le nom d’un livre et de ses auteurs ñ Inutile de faire plusieurs requêtes. ñ Sélection sur

‚ Par exemple : le nom d’un livre et de ses auteurs ñ Inutile de faire plusieurs requêtes. ñ Sélection sur

Exemple : pour rechercher les noms des patients de plus de 70 kg : SELECT nom FROM patient WHERE poids > 70;?. Pour rechercher les noms des patients en surpoids (IMC > 27)

Pour chaque led, le raccordement se fait via un cordon 1 paire polarisé et le bornier à ressort du kit identifié « BLEU JAUNE VERT ».. Raccorder le fil blanc de la led à la borne +