G08 - 2023 - Exam Monitoring System

Romaissa Benghezala & Zineb Boukhima & Amel Ait Mohand
Dans ce projet Iot-Machine Learning, nous allons implémenter un système de déctection de triche lorsqu'un étudiant passe ses examens en distanciel.

Slides & Videos

Members

NameContribution
Benghezala Romaissa 1. Conception du premier diagramme, qui n'a pas été validé par le prof
2. Re-conception du diagramme de cas d'utilisation
3. Implémentation de la détection des objets (en utilisant l'application IP WebCam) avec OpenCV et le modèle YOLO4
4. Implémentation de la détection des navigations avec OpenCV, imutils et PIL
5. Implémentation de la détection des mouvements brusques (en utilisant l'application Sensor) avec websocket
6. Refaire l'implémentation de la reconnaissance vocale avec whisper (parce que la Speech Recongnition et le NTLK ne fonctionnent pas avec notre système)
7. Refaire l'implémentation de la reconnaissance faciale de façon qu'elle soit adaptée avec notre système avec face_recognition et OpenCV
8. Fiabilité du code et intégration dans le serveur
9. L'état de l'art et La vidéo + editing
Boukhima Zineb 1. Conception du premier diagramme, qui n'a pas été validé par le prof
2. Re-conception du diagramme de cas d'utilisation
3. L'état de l'art
4. Le site web avec Angular
5.(Problème rencontré)Je voulais commencer par la reconnaissance faciale, pour cela j’ai utilisé openCV sauf que j’ai eu un problème, sur mon système je n’ai pas un fichier /dev/video* du coup ça m’a pris du temps pour le configurer mais je n’y arrivais pas et j’ai décidé de passer sur une autre tâche.
6. Utiliser la cam sous le navigateur coté frontend pour enregistrer une vidéo le moment du passage de l’axamen mais j’ai eu un problème du coup j’ai décidé de la supprimer et d’utiliser juste l’enregistrement en arrière plan coté backend
7. Implémentation de la détection des mouvements brusques (en utilisant l'application Sensor) avec websocket
8. Intégration du code entre Angular et Python avec Flask, flask_socketio et eventlet
Ait Mohand Amel 1. Conception du premier diagramme, qui n'a pas été validé par le prof
2. Re-conception du diagramme de cas d'utilisation
3. Implémentation de la reconnaissance faciale avec OpenCv et Dlib
4. Installation de Whisper pour la reconnaissance vocale. J'ai eu des problèmes avec Whisper, j'ai decidé de basculer sur une autre bibliothèque Python
5. Implémentation de la reconnaissance vocale avec Speech Recongnition et NTLK pour le traitement du langage naturel
6. Envois des codes Python à Romaissa pour les intégrer dans le serveur
7. Rédaction d'une partie de l'état de l'art, PowerPoint et la vidéo

State of the Art

Business Aspect

Introduction

Depuis la pandémie de COVID-19, nombreux étudiants et étudiantes ont été confrontés à suivre les cours en distanciel et notamment à passer les examens sur des plateformes qui n’offrent pas souvent la possibilité de surveiller la fraude. 

Nous allons discuter tout au long de cet article les différentes étapes que nous avons suivies pour vous proposer un système de surveillance des examens en distanciel

Il existe néanmoins plusieurs logiciels et applications qui visent à parer d’éventuelles triches lors des partiels, concours et examens, voici une liste non exhaustive de ces logiciels.

Logiciels

  • TestWe

TestWe est donc un logiciel de surveillance qui offre la possibilité de détecter une tentative de triche. Cette application se veut très complète, voire trop complète, puisqu’elle analyse tout un tas de paramètres afin de s’assurer que les candidats n’ont pas d’aide extérieure. En France, il a été adopté par les universités et les Grandes Écoles, à l’image du concours SESAME, qui l’utilise pour les épreuves écrites de son concours.

Quelques caractéristiques de TestWe : 

  • TestWe demande à l’utilisateur de faire le tour de sa pièce avec son ordinateur.
  • TestWe demande à l’utilisateur de filmer son bureau, ses oreilles (pour s’assurer de ne pas avoir d’écouteur).
  • TestWe demande à l’utilisateur de montrer une pièce d’identité.
  • TestWe bloque également l’accès au reste de l’ordinateur durant toute la durée de l’épreuve et laisse la caméra allumée pendant plusieurs heures.

Inconvénients 

Bien que le logiciel soit très complet et offre un avantage considérable aux établissements et entreprises qui l’utilisent, il reste très intrusif selon de nombreux utilisateurs.

  • Proctortrack

Proctortrack est un système d’IA utilisé pour détecter les fraudes lors d’examens en ligne. Il utilise une combinaison de reconnaissance faciale, de reconnaissance de mouvements et de vérification de l’identité pour s’assurer que l’utilisateur qui prend l’examen est bien la personne autorisée. Le système surveille en temps réel les activités de l’utilisateur pour détecter tout comportement anormal ou suspect, comme la consultation de notes ou de documents non autorisés pendant l’examen. Si une activité suspecte est détectée, le système peut envoyer une alerte pour vérifier l’intégrité de l’examen. Il garantit qu’aucune mauvaise pratique de test ne se produit pendant que les étudiants passent des tests en classe.

Avantages 

  • Surveillance en temps réel pour prévenir la tricherie pendant les examens en ligne. 
  • Technologie de reconnaissance faciale pour authentifier les utilisateurs. 
  • Stockage sécurisé et accessible des examens et des résultats pour une analyse ultérieure. 
  • Possibilité de surveiller l’environnement de l’utilisateur pendant l’examen pour détecter tout comportement suspect. 

Inconvénients 

  • Nécessité de disposer d’une webcam pour l’authentification faciale. 
  • Coût élevé pour l’achat et l’utilisation du logiciel. 
  • Possibilité de problèmes techniques tels que des coupures de courant ou des erreurs de logiciel. 
  • Préoccupations de confidentialité et de protection des données personnelles liées à la surveillance en temps réel et à l’utilisation de la reconnaissance faciale.
  • ExamSoft

ExamSoft est un logiciel est un logiciel de gestion d’établissement scolaire utilisé par de nombreuses entreprises en France et dans le monde, il utilise la reconnaissance d’empreintes digitales et la vérification de l’identité pour s’assurer que l’utilisateur qui prend l’examen est bien celui qui a été autorisé à le faire. Le système surveille également les activités de l’utilisateur pour détecter tout comportement anormal ou suspect, et peut envoyer des alertes pour la vérification humaine si nécessaire. 

Avantages

  • Possibilité de créer des examens en ligne personnalisés et de les administrer de manière efficace. 
  • Surveillance en temps réel pour prévenir la tricherie pendant les examens. 
  • Stockage sécurisé et accessible des examens et des résultats pour une analyse ultérieure. 
  • Possibilité d’utiliser des fonctionnalités telles que la reconnaissance de forme et la calculatrice pour faciliter la correction. 

Inconvénients

  • Coût élevé pour l’achat et l’utilisation du logiciel. 
  • Nécessité de disposer d’un ordinateur ou d’une tablette pour administrer et passer les examens. 
  • Possibilité de problèmes techniques tels que des coupures de courant ou des erreurs de logiciel. 
  • Nécessité de former les utilisateurs à l’utilisation du logiciel pour maximiser son efficacité. 

D’autres logiciels sont disponibles sur le marché (Respondus LockDown, Browser, Questionmark Perception, Blackboard Learn, SofTest).

Technical Aspect

Systèmes de reconnaissance utilisés

  • Reconnaissance faciale

La reconnaissance faciale est une technologie qui permet d’identifier une personne en analysant les caractéristiques de son visage. Elle est utilisée dans de nombreux domaines tels que la sécurité, la surveillance, la publicité et la reconnaissance de célébrités.

  • Détection de mouvements

Nous avons utilisé l’application Sensor Server permet de collecter les données de capteurs de mouvement tels que les accéléromètres, les gyroscopes et les magnétomètres d’un appareil mobile et de les transmettre à un autre appareil via un réseau Wi-Fi. En utilisant cette application, il est possible de détecter les mouvements d’un objet ou d’un individu équipé d’un appareil mobile.

Pour détecter les mouvements, il est possible d’utiliser les données de l’accéléromètre qui mesurent l’accélération linéaire de l’appareil dans les trois dimensions. En mesurant les variations de l’accélération, il est possible de détecter les mouvements de l’appareil.

En utilisant l’application Sensor Server, il est possible de transmettre les données de l’accéléromètre à un autre appareil, tel qu’un ordinateur, pour les traiter en temps réel et détecter les mouvements.

https://github.com/umer0586/SensorServer

  • Détection d’objets

La détection d’objets est un mécanisme qui croise deux principes de Machine Learning : la classification d’image et la localisation des objets. Son principe consiste, pour une image donnée, à rechercher les régions de celle-ci qui pourraient contenir un objet puis pour chacune de ces régions découvertes, on l’extrait et on la classe à l’aide d’un modèle de classification d’image. 

Dans notre système nous avons opté pour YOLOv4. C’est un des modèles le plus connus et le plus utilisés. Il permet de réaliser la détection d’objets en une seule étape et d’atteindre un très bon niveau de précision et une vitesse de détection élevée. Il est particulièrement bien adapté pour les applications en temps réel.

  • Reconnaissance vocale

La reconnaissance vocale combine principalement trois modèles (un modèle de langage, un modèle de prononciation, un modèle acoustico-phonétique). Le modèle acoustique consiste à capter une parole sous forme d’onde pour la décomposer en fragments de phonèmes.  En termes de prononciation, les sons sont liés pour former des mots en fonction de leurs représentations phonétiques. Enfin, le modèle de langage permet de lier les mots pour prédire la séquence de mots (phrase).

  • Détection de navigations

La détection des navigations entre les fenêtres durant un examen consiste à surveiller l’utilisation de l’ordinateur d’un étudiant pendant un examen pour détecter tout comportement suspect qui pourrait indiquer de la triche. Cette surveillance peut inclure la détection des navigations entre les fenêtres d’un programme ou la recherche sur Internet pendant l’examen.

La détection des navigations entre les fenêtres durant un examen est souvent réalisée à l’aide de logiciels de surveillance, qui enregistrent les activités de l’ordinateur pendant l’examen et analysent les données pour détecter les comportements suspects. Les logiciels de surveillance peuvent utiliser des techniques de traitement d’image et de vision par ordinateur pour surveiller l’utilisation des fenêtres d’un programme et détecter les navigations entre les fenêtres. Ils peuvent également enregistrer les frappes au clavier et les clics de souris pour détecter les recherches sur Internet ou la copie-coller de contenu à partir d’autres sources.

Project Description

Problem Definition
Dans ce projet Iot-Machine Learning, nous allons implémenter un système de déctection de triche lorsqu'un étudiant passe ses examens en distanciel.
Challenges & Motivation
La création d'un système anti-triche est un défi passionnant et peut être motivant pour plusieurs raisons:

1. Contribuer à l'intégrité de l'examen : Nous pouvons aider à garantir que les résultats de l'examen sont représentatifs de la connaissance et des compétences réelles des étudiants.

2. Utiliser des compétences en programmation : La création d'un système anti-triche nécessite l'utilisation de compétences en programmation avancées, notamment en vision par ordinateur, traitement d'image, reconnaissance vocale et traitement du langage naturel. Cela peut être une occasion de mettre en pratique nos compétences en programmation et de relever de nouveaux défis techniques.
Real and Complete Usecases

Scénarios de notre système 

Scénario 1 

  • L’étudiant s’identifie à notre application web en entrant son numéro étudiant et le mot de passe
  • Sur l’interface de l’application, il sera demandé à l’étudiant de connecter le téléphone sur la tête et de la main à notre application
  • Il lui sera indiqué les règles à respecter avant de débuter l’examen
  • Lorsque tous les équipements sont bien connectés et la vérification de la caméra a bien été faite. L’étudiant peut commencer son examen en cliquant sur le bouton Débuter examen de l’application
  • Le quiz est alors lancé sur l’interface de l’application
  • L’étudiant sélectionne les réponses et soumet ses réponses en cliquant sur soumettre
  • L’étudiant a passé son examen sans tentative de triche

Scénario 2

  • Les étapes 1 à 5 restent les mêmes pour tous les scénarios 
  • L’étudiant reconnu par la caméra du PC ne correspond pas à l’étudiant enregistré dans notre base de données, on alerte le professeur  de la tentative de triche avec un fichier log de l’heure et la date de la fraude. 
  • L’étudiant peut continuer son examen malgré la fraude.

Scénario 3

  • Le téléphone sur le front de l’étudiant a détecté une présence d’un objet interdit (téléphone, tablette, documents) auprès de l’étudiant.
  • Le système autorise l’étudiant a continué de passer son examen, mais informe le professeur à la fin du quiz de la tentative de triche. 

Scénario 4

  • La caméra du front a détecté une navigation entre les pages (changement ou ouverture d’une autre fenêtre).
  • L’étudiant continue son examen et un rapport sera envoyé à la fin de l’examen au professeur.

Scénario 5

  • Le téléphone sur le bras détecte un mouvement anormal (brusque), on suspecte alors une tentative de triche.
  • L’étudiant continue son examen et un rapport sera envoyé à la fin de l’examen.
Technical Description

Le projet de Exam Monitoring System à distance consiste notamment 6 parties:

La reconnaissance faciale:

  • Au début de l’examen, le système reconnaît la personne à l’aide de la base de données. Tout au long de l’examen, le système connaîtra la personne qui passe l’examen et écrira son prénom au-dessus de son visage.
  • Nous avons utilisé dans notre implémentation les modules OpenCv et face_recognition de Python. Car ce sont des modules open-source et qui comprennent plusieurs centaines d’algorithmes d’apprentissage automatique pour la création de logiciels complexes. 
  • Face_recognition est une bibliothèque open source de reconnaissance faciale développée en Python. Elle utilise des réseaux de neurones convolutifs pour extraire les caractéristiques du visage et comparer ces caractéristiques avec une base de données de visages connus. Cette bibliothèque est facile à utiliser et permet de reconnaître des visages avec une grande précision.
  • https://github.com/MadScientistHK/Pi2_Face_Recognition

Détection d’une personne inconnue:

  • Pendant l’examen, le système peut détecter la présence d’une personne inconnue et d’une caméra cachée.
  • Lorsque le système détecte une personne inconnue ou une caméra cachée, il envoie une alerte et capture l’image qui contient la fraude.

Détection des objets:

Détection des navigations:

  • Nous avons utilisé dans notre implémentation les modules OpenCV et PIL de python. En utilisant les deux modules consiste à capturer l’écran d’un ordinateur pendant un examen et à analyser les images pour détecter les navigations entre les fenêtres.
  • Durant l’examen, le système peut détecter les navigations effectuées par l’étudiant. Lorsque le système détecte une navigation, il envoie une alerte et capture la fenêtre qui contient la fraude.

Détection de la voix:

  • Nous voulons faire de la détection de voix en direct, mais après avoir fait des recherches sur internet. Nous avons essayé d’utiliser en premier Speech-to-text de Google qui offre la possibilité de convertir l’audio produit par l’étudiant en texte. Et afin de contrôler ce que peut dire l’étudiant pendant son examen, nous avons utilisé des modèles de deep learning qui reposent sur des méthodes de Traitement Automatique Du Langage Naturel (Natural Language Processing : NLP). Pour ce faire, nous avons utilisé la bibliothèque NLTK de Python pour répondre à notre besoin. Mais nous avons dû mal à intégrer ce modèle avec notre système. 
  • Nous décidons donc d’utiliser le modèle Whisper, Whisper est une bibliothèque open source de reconnaissance vocale développée en Python. Elle utilise des réseaux de neurones pour transcrire la parole en texte et d’enregistrer la voix toutes les 15 secondes, et lire le fichier et l’analyser en utilisant les bibliothèques PyAudio et Wave.
  • https://github.com/openai/whisper

Détection des mouvements brusque:

  • Pendant l’examen, le système peut détecter les mouvements anormaux du bras à l’aide d’un accéléromètre. Lorsque le système détecte ses mouvements, il sauvegarde les données correspondantes et il envoie une alerte.

Hardware

Materials
ImageNamePart NumberPriceCountLink
Pc ASUS18001🛒
Téléphone22702🛒
Schematic

Software

External Services

Articles

Article Romaissa Benghezala & Zineb Boukhima

Article Amel Ait Mohand