Exam monitoring system-2023-ml-iot-m2-g7
Présentation du projet d'un système de surveillance d'examens
Slides & Videos
Members
Name | Contribution |
---|---|
ROSE Stacy | 31/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 Lakshana | 31/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
Challenges & Motivation
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