Exam monitoring system-2023-ml-iot-m2-g7

Présentation du projet d'un système de surveillance d'examens

Slides & Videos

Members

NameContribution
ROSE Stacy31/01/2023
cf contribution Lakshana
04/02/2023
Réalisation du début du diagramme d'activité
07/02/2023
cf contribution Lakshana
09/02/2023
cf contribution Lakshana
16/02/2023
cf contribution Lakshana
22/02/2023
9h-11h45 puis 13h45-17h : test d’un programme de la documentation de face_recognition, qui ne fonctionne pas et tests d’autres exemples
22h30 : erreur trouvée dans le script initial, l’exemple de face_recognition fonctionne

23/02/2023
8h30 -12h : recherche de sources pour réaliser une application et accéder à la caméra depuis l’application
14h - 23h : installation d’Android Studio et tentatives d’accès à la caméra non fructueuses.

24/02/2023 :
8h30-18h30 : Tentatives de création d’application et accès à la caméra non fructueuses. Je décide d’arrêter l’application et utiliser IP Webcam. Commencement de la reconnaissance de texte avec pytesseract : tests de code non fiables (très mauvaise reconnaissance de texte).


25/02/2023
8h30 - 9h30 : programme de reconnaissance faciale avec IP Webcam : affichage dans la console lorsqu’une fraude est détectée : ok
9h30 - 11h30 : Essai d’intégration du programme à Flask, erreur : problème de communication entre Flask et le programme. Correction de l’erreur (c’était une incompatibilité de protocole entre websocket et socketio) → Intégration de du programme de reconnaissance faciale à Flask
14h - 23h : j’essaie de lancer les différents programmes dans des threads et d’intéragir avec Flask depuis ces threads. Ne fonctionne pas.

26/02/2023
9h - 11h : Bug trouvé. C’était un conflit entre les librairies thread et eventlet.
11h - 18h :
- Recherche et tests de scripts qui reconnaissent des corps entiers, puis abandon car je n’ai trouvé aucun modèle correct (mauvaise performance). Je décide d’utiliser le programme de reconnaissance faciale pour le téléphone de la tête en plus de la webcam de l’ordinateur.
- Tests d'exécution simultanée avec les threads. Problème de thread safety donc recherche d’un autre moyen
- Essai avec les processus à la place des threads : fonctionne bien

18h - 21h : Tentative de communication entre les processus et l’application web, ne fonctionne pas. L'émission d'événements depuis un processus ne fonctionne pas. Je décide d’utiliser redis pour contrer ce problème.

27/02/2023
8h - 10h : Ajout de comportement pour empêcher l’étudiant de commencer l’examen si une fraude est détectée dans le programme de reconnaissance faciale.
10h - 13h : Ajout du code pour vérifier si le téléphone de la tête est bien placé. Notre idée de départ était d’afficher un mot à l’écran et de vérifier si le mot était lu depuis la caméra du téléphone de la tête. Les tentatives sont infructueuses car le programme de reconnaissance textuelle a de mauvaises performances.
15 - 17h30 : Décision d’annuler la reconnaissance de texte et d’utiliser de la lecture de qr code à la place. Tests de programmes.
17h30 - 22h30 : tests de code pour détecter la position du regard

28/02/2023
9h - 15h : Programme de détection de la position du regard trouvé, je l’intègre au programme de reconnaissance faciale.

03/03/2023
8h30 - 10h : Essai d’utilisation de cookie pour stocker les informations liés à l’examen et à l’étudiant : non fructueux. Problème de mise à jour des cookies.
15h : Récupération et test du code d’Accéléromètre trouvé par Laskhana
16h - 19h : Intégration du programme d’accéléromètre au projet, difficultés car le programme d’accéléromètre utilise websocket tandis que le reste des programmes utilisent socketio. Implémentation de l’émission d'événement lorsqu’une fraude est détectée.
20h30 - 22h : Intégration de la reconnaissance vocale trouvée par Lakshana à l’application. Correction d’un bug (le programme de reconnaissance vocale s'arrêtait seul et ne durait pas infiniment)

04/03/2023
12h - 19h : Implémentation d’une base de données, ajout de l’enregistrement des fraudes en base de données pour les différents programmes de détection de fraude. Problème lors de l’enregistrement en base de données (la base de données se vérrouillait)

05/03/2023
8h - 11h : Implémentation de la déconnexion, Correction du problème de base de données vérouillée, implémentation de la fonctionnalité pour empêcher l’étudiant d’accéder à certains url s’il n’est pas authentifié
11h - 16h : Ajout du compteur de fraude sur l’IHM. Un bug persistait, correction de ce bug (problème de concurrence entre les différents processus lors de la modification de la variable globale du compteur de fraude).
17h : Commencement du rapport

Liens essayés :
kivy app : https://www.youtube.com/watch?v=6gNpSuE01qE&t=31s
détection de texte :
https://github.com/LaggyHammer/real-time-OCR/blob/master/real_time_ocr_multiprocessing.py
https://github.com/LaggyHammer/real-time-OCR/blob/master/real_time_ocr.py
reconnaissance faciale :
https://gist.github.com/eko24/bbd42091c85be31c7591*
https://gist.github.com/n3wtron/4624820
https://github.com/harshitroy2605/human_face_and_smile_recognition/blob/master/test.py
reconnaissance de corps humain :
https://www.youtube.com/watch?v=9At7fKyBfnw&t=19s
https://github.com/Limerin555/Real-time_Upper_Body_Detection/blob/master/real_time_upper_body_detection.py
détection d’objet : https://medium.com/swlh/object-detection-with-android-phone-using-tensor-flow-lite-9463a1522ffd
https://www.youtube.com/watch?v=zs43IrWTzB0
https://www.youtube.com/watch?v=ifjVPYfO4D4
https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/android/app/src/main
YATHAVARAYAR Lakshana31/01/2023 : Recherche d'articles sur les sites fournis par le professeur et début de la préparation d'une diapositive (choisie sur le site aaai), mais hésitation à la sélectionner car elle n'avait pas de classement.
02/02/2023 : Refonte de l'article en cours et recherche d'articles sur les sites fournis par le professeur.
06/02/2023 : Finalisation de l'article et début de la discussion sur le scénario pour le projet et refonte du scénario.
07/02/2023 : Discuter avec mon binôme par rapport au scénario et dessinée sur papier
08/02/2023 : Réalisation du scénario et recherche des tutoriels sur YouTube pour savoir comment utilisées la bibliothèque OpenCV et diagramme d’activité UML et création d'un lien GitLab pour le projet.

09/02/2023 : Utilisation du logiciel avec mon binôme pour créer le diagramme d'activité sur draw.io.

16/02/2023 : Fait 2 types de Reconnaissance facile avec le langage JAVA avec mon binôme puis renoncer parce que c’est compliqué pour lier d’autres outils avec java

22/02/2023 : Début de la recherche sur reconnaissance vocale et fait des recherches de tutoriels sur YouTube pour le logiciel Flask et l'activation de la webcam et de l'audio dans la machine virtuelle. Recherche de tutoriels pour le serveur/client et étude de Voice2.py.

Flask et json (base de données):

https://www.youtube.com/watch?v=9N6a-VLBa2I&ab_channel=CoreySchafer
https://www.youtube.com/watch?v=3_AmWI99QYs&ab_channel=AkhilSuthapalli

Pour activer le webcam sur VM :
https://www.youtube.com/watch?v=90tB1nlP7ag&ab_channel=INTERNETANDTECHNOLOGY
https://www.youtube.com/watch?v=ec4-1gF-cNU&t=209s&ab_channel=Benjamin%27sTech

Pour activer l’audio sur VM :

https://www.youtube.com/watch?v=tjWKnDVQOuA&ab_channel=TechPub

Pour server Client :
https://www.youtube.com/watch?v=5FqzL9LJkXA&ab_channel=FormationVid%C3%A9o

23/02/2023 : Amélioration de la reconnaissance vocale (3 versions).

Recherche d'une autre bibliothèque PyMuPDF pour remplacer PyPDF2, résolution des problèmes rencontrés avec Fitz et utilisation de Voice.py pour l'enregistrement audio de la parole.
voice.py – speech recognition qui va reconnaître la voix et convertir en fichier audio
voice2.py – Ajouter un pdf - Problème avec le PyPDF2 puis retrouver un autre libraire PyMuPDF
où se trouve flitz
https://www.youtube.com/watch?v=y_ORF4FpZYo&ab_channel=YUNIKARN
https://www.youtube.com/watch?v=w2r2Bg42UPY&t=133s&ab_channel=NeuralNine
voice3.py- Reconnaître la voix et fait la comparaison avec le text en pdf Problème – il ne reconnaît pas ce qu’on dit - il faut faire le matching

24/02/2023 : ( 4éme version – voice4.py) Correction des erreurs et amélioration du code de Voice4.py pour qu'il fonctionne correctement.

26/02/2023 : Tentative d'utilisation de l'accéléromètre avec l'application Physics Tool Box sur YouTube, https://www.section.io/engineering-education/reading-and-processing-android-sensor-data-using-python-with-csv-read/connexion réussie mais rencontre d'un problème.

https://www.youtube.com/watch?v=tu6sHeJj4Ys&ab_channel=ChrystianVieyra – trouver une problème car on ne peut pas faire en temps réel donc essayer de capturer le paquet avec Wireshark mais sans succès puis essayé avec le gyroscope de Kiev
https://www.youtube.com/watch?v=uv8PciALzSI&ab_channel=ErikSandberg

28/02/2023 : Recherché par rapport à l’article et préparer des diapositives de présentation et continuer avec de l'accéléromètre avec le gyroscope de Kiev. Essayer de faire le matching le text qui se trouve sur pdf et speech.

02/03/2023 : Utilisation de l'accéléromètre avec SensorServer sur GitHub pour stocker les données en temps réel. Construction d'un pipeline d'apprentissage sur Figma.

03/03/2023 : Amélioration du diagramme d'activité et réalisation de la reconnaissance vocale avec le PDF pour reconnaître le texte en temps réel, mais rencontre de problèmes car après la troisième tentative il ne reconnaît plus la voix. Réalisation de l'accéléromètre en temps réel et préparation de la présentation de l'article en PowerPoint.
05/03/2023 : Correction du activité du diagramme UML
06/03/2023 : Ajoute du css pour fichier login.html en modifiant le fichier html et Rédaction du rapport avec mon binôme
11/03/2023 : Ajoute du css pour les autres fichiers en modifiant les fichiers html liste-exam.html exam.html puis res.html et Modification du database créer par mon binôme pour ajouter mes informations pour voir si ca marche l’application.

State of the Art

Business Aspect

An Analysis of the Automatic Bug Fixing Performance of ChatGPT

Pour répondre aux besoins d’enseignement à distance pendant la pandémie , il y a une forte augmentation de demande de système de surveillance d’examen dans la marché des entreprises. Les entreprises qui développent ces systèmes deviennent de plus en plus populaire.

Voici les exemples des systèmes de surveillance d’examen plus populaires et plus utilisés dans le monde.

1)ProctorU

 ProctorU est un système de surveillance d’examen en ligne en temps réel. Grâce à cet outil  on peut passer nos examens à distance.

Les avantages de ProctorU sont la surveillance à distance, la vérification d’identité, la surveillance en temps réel par un surveillant et l’utilisation de l’IA pour détecter les comportements de fraude possible. Cependant, les inconvénients de ProctorU incluent des coûts élevés pour les étudiants et les établissements d’enseignement, des problèmes de confidentialité des données, et des préoccupations liées à l’efficacité de la surveillance à distance.

2)ExamSoft

 ExamSoft est aussi un système de surveillance d’examen utilisé par de nombreuses universités et établissements d’enseignement dans le monde. Il utilise une technologie d’authentification biométrique pour vérifier l’identité des étudiants, et offre une variété d’options de surveillance, y compris l’enregistrement audio et vidéo, la surveillance en temps réel par un surveillant et la détection de la fraude basée sur l’IA.

3)Honorlock

Honorlock est un autre système de surveillance d’examen populaire. Les avantages de Honorlock sont la vérification d’identité, la surveillance en temps réel, la détection de la fraude basée sur l’IA et la compatibilité avec plusieurs plateformes d’examen. Les inconvénients incluent des coûts élevés pour les étudiants et les établissements d’enseignement, des préoccupations liées à la confidentialité et à la sécurité des données, et des problèmes de compatibilité technique pour certains étudiant

Technical Aspect

An Analysis of the Automatic Bug Fixing Performance of ChatGPT

ProctorU, ExamSoft et HonorLock sont des plateformes d’examens en ligne qui utilisent probablement plusieurs langages de programmation pour construire leurs services.

Les langages de programmation utilisés sont : 

  • JavaScript (et ses frameworks tels que React, Angular et Vue.js)
  • HTML et CSS pour la création de pages web
  • PHP pour le traitement des formulaires et l’interaction avec les bases de données
  • Python (avec des frameworks tels que Django ou Flask) pour la création de sites web dynamiques et d’applications web.

 

Project Description

Problem Definition
Après la pandémie du COVID-19, nous avons constaté une hausse des examens à distance. Cependant, un problème se pose : pendant un examen à distance, il est difficile de s’assurer qu’il n’y ait pas de fraudes. Le but de ce projet est donc de trouver une solution à ce problème en implémentant une solution de surveillance d’examens à distance.
Challenges & Motivation
Challenges :

Détection et reconnaissance faciale
Reconnaissance vocale
Détection des accélérations
Détection de la position du regard
Architecture client/serveur en utilisant Flask
Communication en temps réel entre le serveur et le client
Exécution simultanée des processus
Accès à la base de données

Motivation :

Tous ces défis ci-dessus nous permettent de surveiller la plupart des moyens par lesquels l’étudiant pourrait tricher (le regard, la voix, les mouvements brusques des mains, etc.). Ils nous permettront donc de supposer des situations de fraudes pendant l’examen à partir de données.
Real and Complete Usecases

Projet lien vers gitlab : https://gitlab.sorbonne-paris-nord.fr/11702435/ExamFraudSystem

Pré conditions : 

L’étudiant doit avoir installé IPWebcam sur le téléphone qui sera sur sa tête, et SensorServer sur le téléphone qui sera sur son bras.

Début du scénario :

  • L’étudiant s’assoit devant son ordinateur.
  • Il accède au site via une url.
  • Il entre son numéro étudiant et appuie sur “se connecter”. Si son identifiant est reconnu, il est redirigé vers la liste de ses examens à passer. Sinon il reste sur la page de connexion et un message d’erreur s’affiche, lui indiquant que son numéro étudiant n’est pas dans la base de données. 
  • Si l’étudiant à des examens à passer, il sélectionne l’examen à passer et appuie sur “start”. Sinon, un message d’erreur s’affiche lui informant qu’il n’a aucun examen à passer. Si l’utilisateur le souhaite, il peut appuyer sur le bouton “déconnexion” afin de se déconnecter, il sera redirigé vers la page de connexion.
  • Il clique sur “Lancer la reconnaissance faciale”, puis sur “Lancer le balayage de l’environnement”. Si une fraude est détectée au niveau de la reconnaissance faciale ou au niveau de l’environnement, le bouton “start” sera désactivé. Si aucune fraude n’est détectée, le bouton “start” est activé. Il a donc le choix, à ce moment-là, d’appuyer sur le bouton “start” ou de se déconnecter en appuyant sur le bouton “déconnexion”.
  • L’examen s’affiche, l’étudiant répond à l’examen tout en étant contrôlé par les différents programmes de détection de fraudes. Si une fraude est détectée, le compteur de fraude affiché à l’écran s’incrémente.
  • L’étudiant appuie sur “envoyer” pour envoyer son examen. L’étudiant sera automatiquement déconnecté et il sera redirigé vers la page de connexion.

Nous pouvons également spécifier que tant que l’étudiant n’est pas authentifié, il ne peut pas accéder aux url qui permettent de passer l’examen, ou d’effectuer les tests d’environnements. Nous avons implémenté cela pour empêcher l’étudiant de saisir l’url de l’examen dans la barre de recherche, pour pouvoir passer directement à l’examen, sans pour autant s’authentifier, ou passer les tests d’environnements.

Diagramme d’activité UML : 

Pipeline d’apprentissage : 

Technical Description

 

Le système de surveillance d’examen est une application puissante qui utilise la reconnaissance vocale, la reconnaissance faciale, Python, SQLite et Flask pour garantir l’intégrité des examens. Les technologies avancées utilisées dans ce système permettent une surveillance précise et fiable des examens, ce qui est important pour maintenir la qualité de l’éducation.

Caractéristiques principales:

  • Reconnaissance vocale: Le système utilise la reconnaissance vocale pour détecter toute activité suspecte ou de fraude pendant l’examen.(speech recognition python)

SOURCE: Chatgpt et https://www.youtube.com/watch?v=GluSLXFGfJ8&t=612s&ab_channel=ParwizForogh

  • Reconnaissance faciale: Le système utilise la reconnaissance faciale pour vérifier l’identité de l’étudiant avant de commencer l’examen et  il peut également détecter tout comportement suspect pendant l’examen en analysant les mouvements des yeux de l’étudiant.(face recognition(ipwebcam) + eye detector)

SOURCE : 

reconnaissance faciale : 

https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py 

eye position detection : 

https://github.com/Asadullah-Dal17/Eyes-Position-Estimator-Mediapipe

utilisation d’ip webcam : 

https://www.youtube.com/watch?v=2xcUzXataIk

  • Accéléromètre : capteur pour détecter les mouvements et les vibrations du main (Sensorserver)

SOURCE : https://github.com/umer0586/SensorServer

  • Python: Le système est entièrement codé en Python, ce qui permet une implémentation rapide et une maintenance facile.
  • SQLite: Le système utilise une base de données SQLite pour stocker/accéder aux données.

SOURCE : ChatGPT

  • Flask: Le système utilise Flask pour créer une interface utilisateur conviviale pour les utilisateurs.

SOURCE : ChatGPT

 

Hardware

Materials
ImageNamePart NumberPriceCountLink
oppo a1701571🛒
galaxy samsung a801811🛒
huawei p20 lite03081🛒
Schematic

Software

External Services

Projet

-python
-ip webcam
-sensorserver

-redis
-socketio
-websocket
-sqlite
-event
-multi processing