M2-2024-GROUPE_5-Aghiles_SI_ALI-Anis_SAIDI-Angel_GONZALES

Outil de détection de fraude lors d'un examen à distance.

Slides & Videos

Members

NameContribution
Aghiles SI ALIAghiles SI ALI :Lors du premier cours où nous avons commencé le projet, j'ai pris en charge le développement du serveur gRPC ainsi que la création de tous les documents nécessaires tels que le diagramme, la vidéo et l'architecture du projet. J'ai mis en place un tableau Trello pour que nous restions tous à jour sur les tâches à accomplir, ce qui a été fait et par qui, ainsi que pour planifier nos réunions. J'ai d'abord proposé une première architecture et travaillé sur l'organisation du code. Sur le serveur gRPC, j'ai implémenté les méthodes proto pour recevoir les données provenant du mobile, notamment le son, le gyroscope et les images. Pour la plupart des cas, j'ai simulé un client pour vérifier le bon fonctionnement. Je ne pouvais essayer le code mobile fait par Angel car je ne pouvais utiliser mon iphone assez ancien. Pendant ce temps, Angel a testé ses codes et si nécessaire, a apporté des modifications aux types ou autres détails dans le serveur et les fichiers .proto.
Le 15 février, j'ai entrepris des recherches pour trouver des logiciels permettant d'installer du code sur mon iPhone et d'activer le mode "développeur". Dans ce cadre, j'ai essayé d'utiliser iCareFone, un outil conçu pour gérer les données sur les appareils iOS, afin de tenter de transférer et exécuter du code sur mon iPhone.
Le 16 février, j'ai essayé d'appliquer un projet Flutter sur mon iPhone, qui est un modèle ancien, en utilisant mon PC peu performant. J'ai utilisé iCareFone pour activer le mode développeur sur mon iPhone, mais malgré cela, Flutter ne parvient pas à détecter mon iPhone.
Je suppose qu'il y a un problème de détection entre Flutter et mon iPhone, même après avoir activé le mode développeur avec iCareFone. Je vais peut-être devoir vérifier les paramètres de développement sur mon iPhone ou réinstaller les pilotes sur mon PC. Je pourrais également consulter la documentation de Flutter pour voir s'il y a des solutions spécifiques à ce problème de détection d'appareil.
Le 18 février, j'ai codé dans Android Studio pour développer l'interface utilisateur mobile. J'ai pu afficher le front-end sur mon PC.
Le 19 février, j'ai créé un nouveau code qui active la webcam et détecte le visage de la personne pendant toute la durée de l'examen. Si la personne quitte le champ de vision de la caméra ou s'éloigne trop du cadre, le programme se concentre sur son visage.
Le 21 février, j'ai effectué des modifications sur le code pour qu'il s'intègre mieux dans le serveur. J'ai également travaillé sur une nouvelle architecture et exploré des moyens de déclencher la caméra lorsque le rythme cardiaque augmente. Je me suis penché sur les plugins disponibles pour cette tâche, mais j'ai rencontré des problèmes car la plupart d'entre eux nécessitaient une action de l'utilisateur pour mesurer le rythme cardiaque. J'ai commencé à rédiger un début de code en Dart pour la mesure du rythme cardiaque et je l'ai envoyé à Angel. Cependant, nous avons réalisé que les applications disponibles ne sont pas adaptées à nos besoins en raison des limitations des outils disponibles. Après une discussion avec Angel, nous avons décidé de laisser le gyroscope.
Le 25 février, j'ai travaillé sur la vidéo en utilisant Canva et Vidnoz.
Le 28 février, j'ai modifié le serveur pour qu'il puisse récupérer le son et renvoyer un fichier audio lorsque le déclencheur est activé. En outre, j'ai créé un client qui simule l'envoi de son.
Le 3 mars, j'ai travaillé avec Angel sur le son pour l'application mobile, mais nous avons rencontré des problèmes avec des bugs persistants.
Le 5 mars, j'ai avancé dans l'état de l'art du projet.
A partir de cette date j'ai rencontré des limitations pour coder sur mon iPhone en raison de son ancienneté, mais j'ai réussi à développer une page qui peut être affiché sur un mobile via Android Studio. J'ai proposé une nouvelle architecture pour le projet. J'ai attendu qu'Anis et Angel aient terminé le code de la partie mobile avant de poursuivre le travail sur la vidéo. Pendant ce temps, j'ai continué à travailler sur la partie serveur et le front-end. À ce stade, je n'ai plus modifié le serveur gRPC car tout fonctionnait bien de mon côté concernant les fichiers .proto.
J'ai décidé de poursuivre en utilisant Vue.js pour développer le front-end. Pour commencer, j'ai dû lier le projet Vue.js et le serveur gRPC. J'ai téléchargé les outils nécessaires pour effectuer cette liaison à partir d'un GitHub. Ensuite, j'ai simulé des requêtes à envoyer au serveur gRPC depuis le projet Vue.js, mais le serveur ne les recevait pas comme prévu. Après en avoir discuté avec Angel, nous avons convenu qu'il serait plus simple d'envoyer des requêtes à une API Flask intégrée dans le serveur gRPC.
Par la suite, j'ai développé trois pages dans Vue.js : une page pour récupérer le numéro étudiant de l'élève, une pour l'examen comportant des questions sur le thème geek, et une page de fin. Sur chacune de ces pages, j'ai ajouté des boutons permettant d'envoyer des requêtes au serveur gRPC pour indiquer le début de l'examen, le début de la vérification et de la détection de fraude, ainsi que la fin de l'examen.
J'ai parfois modifié le travail des autres membres de mon groupe, par exemple le code qui vérifie l'identité de l'étudiant, notamment la fonction "verify\_identity".
Le code que j'ai développé pour surveiller l'étudiant a rencontré des problèmes, notamment la caméra qui refusait de s'allumer. Après avoir essayé différentes méthodes pour résoudre les problèmes de confidentialité et d'autorisations, j'ai découvert que le problème provenait des droits d'accès sur WSL. Par conséquent, je lance le code sur PowerShell.
Mes contributions au rendu final du projet sont : l'intégralité du projet Vue.js nommé 'front' donc tous les fichiers (.vue .json et .js ... ect), le serveur gRPC srv.py (Anis et Angel on rajouté et modifié du code en plus dans le server, les codes que j'ai fais et contribué sont ; RecupererCoordonnees,UploadImage,StreamAudio,start\_server,stop\_grpc\_server,stop\_server), ainsi que tous les fichiers proto (certains modifiés par Angel selon ses besoins pour le mobile), la fonction Python verify\_identity dans le fichier img\_webcam.py que j'ai modifiée, et la fonction verify\_identity dans le fichier img\_detect\_face.py que j'ai créée. J'ai également implémenté la méthode 'UploadFile' dans le le file.proto et dans le fichier 'srv.py', permettant ainsi de récupérer directement un fichier audio depuis le mobile et de le sauvegarder dans un répertoire spécifié.
J'ai réalisé l'intégration du code IA et du code lié au mobile dans la partie serveur. J'ai également fait comme documents collectifs le diagramme, la vidéo de trois minutes, et la documentation liée à ma partie et les slides.
Pour la vidéo, comme indiqué, j'ai utilisé Vidnoz. Grâce à l'IA, j'ai créé un personnage qui sera l'orateur. J'ai également rédigé le script et conçu le décor de la vidéo.
En tant que leader, je devais organiser des réunions et à suivre l'avancement du travail de chaque membre en leur envoyant régulièrement des messages. Pour cela, j'ai utilisé des outils tels que Discord et Trello.
J'ai réalisé l'intégration des codes IA et du code lié au mobile dans la partie serveur. Lorsque le déclencheur s'active, le serveur reçoit une image prise par le téléphone et un fichier audio en fichier, tous les deux sont enregistrés sur le serveur dans un repertoire. Ainsi, dans mon fichier img\_detect\_face, j'ai intégré le code IA qui prend en arguments ces fichiers et retourne la transcription de l'image et du son.
J'ai veillé à maintenir une communication efficace entre tous les membres, afin d'assurer le bon déroulement du projet. J'ai supervisé le travail de chaque membre en vérifiant leurs contributions et en posant des questions pertinentes pour garantir la qualité du travail fourni
Anis SAIDI# Aperçu du Projet

## Introduction

Dans ce projet, j'ai développé plusieurs fonctions pour le traitement audio et image en utilisant Python. Voici une explication détaillée des objectifs, des défis rencontrés et des solutions trouvées.

## Objectifs du Projet

Mon objectif principal du projet était de créer un système capable de convertir des fichiers audio en texte, d'extraire du texte d'images, et de comparer ces textes pour détecter des similarités, pouvant indiquer une triche.

## Développement des Fonctions

Pour atteindre ces objectifs, j'ai créé des fonctions spécifiques pour :
- Convertir des fichiers audio M4A en WAV.
- Utiliser l'API de reconnaissance vocale de Google pour convertir l'audio en texte.
- Utiliser OpenCV pour détecter et recadrer la zone de l'écran dans une image.
- Utiliser Tesseract OCR pour extraire le texte des images, filtrer les mots inutiles et supprimer les doublons.
- Nettoyer et lemmatiser le texte avec NLTK pour préparer une analyse plus poussée.
- Comparer deux textes en tenant compte des synonymes et détecter des similarités.

## Défis et Solutions

### Recherche Initiale de Modèle
Avant de trouver DeepFace, j'ai passé beaucoup de temps à rechercher le bon modèle pour la reconnaissance faciale et l'extraction de texte. J'ai expérimenté avec plusieurs modèles, mais j'ai rencontré des problèmes de précision et de performance.

### Difficultés avec un Autre Modèle
Initialement, j'ai rencontré des difficultés avec un autre modèle qui s'est avéré moins efficace pour mes besoins. Le modèle avait des problèmes de compatibilité et ne fonctionnait pas bien.

### Problèmes de Bibliothèques et d'Installation
L'un des défis majeurs a été de gérer les dépendances des bibliothèques et les problèmes d'installation. Ces problèmes ont pris environ deux semaines à résoudre. Les principaux problèmes étaient :
- Conflits entre différentes versions de bibliothèques.
- Dépendances manquantes nécessaires à certaines bibliothèques.

### Installation et configuration d'android studio
-La configuration d'Android Studio a pris un temps considérable, ce qui n'était pas prévu au départ. Cependant, les circonstances ont changé, notamment du fait que mon collègue ne disposait pas d'appareil Android et aussi le faut qu'un des membres de l'équipe a commencé le stage tôt.

###Aide au test de l'application .dart

### Code dart
-Étant donné qu'un membre de l'équipe a commencé son stage tôt, je me suis retrouvé dans l'obligation d'apprendre à comprendre et à exécuter un code .dart, ainsi qu'à le modifier au minimum si nécessaire, sans avoir une compréhension approfondie.


### Stage
-Durant le stage, nous n'avons pas beaucoup avancé car chacun était occupé avec son propre stage.
Angel GONZALESBase pour le server Python
Développement de l’application mobile (UI et server GRPC Client)
Définition et aide à la conception de l’architecture de l’ensemble de l’application
(server/client)
Aide a la définition du server et client GRPC

State of the Art

Business Aspect
Technical Aspect

Project Description

Problem Definition
/
Challenges & Motivation
/
Real and Complete Usecases

Indiquer dans le rapport.

Technical Description

Indiquer dans le rapport.

Hardware

Materials
ImageNamePart NumberPriceCountLink
..00🛒
Schematic

Software

External Services

.

.