2022-G03-Monitoring-KADDOUH-GOUI

Réalisation d'un système de surveillance d'examen à distance "automatisé".
Ce système doit être au plus complet possible et se doit de reconnaître toutes formes de tentatives de triches ou de triches.

Slides & Videos

Members

NameContribution
KADDOUH MichelEtat de l'art business
Visualisation des cas d'usages

Etat de l'art technique :
- Reconnaissance vocale
- Reconnaissance faciale/Détection de visage

Implémentation en python :
- Reconnaissance faciale avec OpenCV

Jeudi 27/01/2022 :
- Rédaction de l'état de l'art sur iotm3la
- Implémentation de la gestion de fichier, reconnaissance vocale et détection de plusieurs visage

Semaine entre le 27/01/2021 et le 03/02/2022:
- Retéléchargement de toutes les librairie car changement de machines
- Problème rencontré -> ne fait que un test à la fois - Solution : Thread
- Début de la réimplémentation des fonctions pour le Threading

Jeudi 03/02/2022 :
- Fin de réimplémentation des fonctions pour le Threading
- Implémentation de détection de mouvement avec la caméra

Semaine entre le 03/02/2022 et le 10/02/2022:
- Documentation des fichiers
- Début de la mise en situation des scénario (Bonjour et des actions a faire en fonction du nombre de personne)

Jeudi 10/02/2022 :
- Implémentation de la détection d'objet et des fonctions de Thread qui vont avec.

Semaine entre le 10/12/2021 et le 17/02/2022:
- Documentation des dernières fonctionnalités
- Début de la mise en commun des deux parties du projet
- Début de la création des slides

Semaine entre le 17/12/2021 et le 28/02/2022:
- Lors de test, j'ai remarqué que la synthétisation vocale pouvait causer problème a la reconnaissance vocale, j'ai donc implémenté une 2ème manière pour communiquer avec des pop-ups qui restent toujours au premier plan avec tkinter (implémenté aussi avec des Threads pour exécuter les autres vérification)
- Fin de la mise en commun des deux parties du projet
- Mise en place des derniers scénarios
- Montage vidéo
- Fin des slides
- Video présentation
- Ajout détection mouvement, reconnaissance objet à l'état de l'art

Vendredi 04/03/2022 :
- Ajout des fichier camera.py et micro.py dans la section Software
GOUI AlexandreVisualisation des cas d'usages

[26/01/2022]
>>> 8h30-11h45
Implémentation de l'accéléromètre et possibilité d’envoi de ces données au serveur (Wi-Fi)
>>> 13h45-17h20
Tentative d'implémentation de la prise en charge de la caméra par l'application => fait crash
>>> 19h-21h
Réfléchir sur une façon de procéder à aux captures d’écran auto (sans bouton pour prendre la photo) en background (impossible dû à la sécurité???)

[28/01/2022]
>>> 22h-23h30
Ajout de la fonctionnalité : prise de photo (avec EventListener)
https://fr.acervolima.com/comment-creer-une-camera-personnalisee-a-l-aide-de-camerax-sous-android/

[02/02/2022]
>>> 19h30-00h15
https://stackoverflow.com/questions/70164601/android-camerax-image-capture-onimagesaved-never-runs
- Envoi de photos vers serveur Python (encodage : ImageProxy → Bitmap → Base64 String)
- A du mal à reconstituer l’image

[03/02/2022]
>>> 14h-17h
Implémentation connexion client-serveur via gRPC
>>> 20h30-23h40
- Envoi des données de l’accéléromètre avec gRPC (streaming, 5 secondes)
- Essaie d’implémentation/intégration de l’envoie d’image vers le serveur gRPC (raté) (idée : lancer l’action de prise de photos avec TimeManager)

[08/02/2022]
>>> 15h30-23h30 (Il y a eu des pauses entre)
- Envoie d’image du client au serveur via gRPC
- Le format de l’image : ImageProxy → Bitmap → String Base64
- Le serveur a une bonne reconstitution de l’image (problème, après une photo prise, n’arrive pas en prendre une nouvelle lol)

[09/02/2022]
>>> 16h-20h
- Déplacement de la review camera vers la deuxième page
- Création de l’interface de l’appli
>>> 22h-00h45
- Amélioration de l’interface
- Réglage de pb (crash)
- Envoies des données possibles entre Fragment

[10/02/2022]
>>> 14h-17h
Pas fait grand-chose (j’ai oublié ce que j’ai fait …)
>>> 20h-22h
Envoi de photos et valeurs de l’accéléromètre en streaming

[14/02/2022]
>>> 21h30-22h40
Détection de mouvement à partir de l’accéléromètre (on n'envoie plus les données de l'accéléromètre au serveur, on envoie seulement un message si détection de mouvement ou pas)

[15/02/2022]
>>> 10h30-00h30 (Il y a eu des pauses entre)
- Débuggage et amélioration de l’interface
- Déplacement de codes, de MainActivity.kt à SecondFragment.kt et mise en forme du code (de Main à Fragment). Nécessaire pour une meilleure interface (faisait crash l’appli dans certains cas)

[17/02/2022]
>>> 13h-17h
Débuggage (lors des connexions, si champ vide, …)
>>> 20h-22h
Détection de mouvement (plus précis qu’avant) : haut, bas, droite, gauche
>>> 23h40-00h50
Débuggage (lors des connexions, si code étudiant non présent, …)

[20/02/2022]
>>> 17h30-20h
Débuggage (lors des connexions, si le message est envoyé mais reçu nul part, …)
>>> 22h-3h
- Amélioration de l’interface (plus intuitif pour l’utilisateur), utilisateur guidé pas à pas
- Amélioration de l’interface (avant de commencer l’examen, il est demandé à l’utilisateur de fixer l’écran de son PC et de prendre une photo de son bureau)

[21/02/2022]
>>> 22h-23h30
Ajout de données envoyés lors de la communication client-serveur (horodatage)

[22/02/2022]
>>> 13h30-17h
Débuggage

[24/02/2022]
>>> 13h30-17h-30
- Débuggage, sensibilité de la détection de mouvement
- Envoies des messages au serveur en streaming (toujours toutes les ~1 seconde)

[04/03/2022]
Ajout des fichier server.py, communication.proto, AndroidManifest.kt, build.gradle (app), globalVariables.kt, MainActivity.kt, FirstFragment.kt, PreExamFragment.kt, SecondFragment.kt, dans la section Software






State of the Art

Business Aspect

TestWe

Créer des examens hors-lignes (en téléchargeant le logiciel) ou interactifs utilisant les textes à trous, la dissertation, les graphiques, etc. et de gérer les épreuves orales. Authentification requise. Bloque l’ordinateur du candidat pendant qu’il compose (ne peux rien faire d’autre).

Collecte et analyse les données de l’examen pour du reporting pédagogique, par exemple, qu’ils ont passé beaucoup de temps sur telle question, qu’une autre question a généré un fort taux d’échec.

Propose des QCM avec un temps de réponse court et des questions aléatoires qui rendent toute triche impossible. Il y a aussi un dispositif d’oraux asynchrones : la personne entend une question et n’a que quelques secondes pour y répondre.

Enfin il y a aussi des examens en live vidéo avec des correcteurs qui surveillent chacun une dizaine de candidats sur leurs écrans. Ils peuvent leur demander de se lever ou de montrer leur oreille pour être certains qu’ils n’ont pas d’écouteur.

Le tarif de TestWe est disponible sur demande (ce prix peut évoluer en fonction du nombre d’utilisateurs, d’options activées …)

 

sources : https://www.campusmatin.com/numerique/edtechs/avis-d-expert-testwe-une-nouvelle-plateforme-debut-2021.html https://testwe.eu/fr/?gclid=Cj0KCQiA_8OPBhDtARIsAKQu0gYwdVkJVEoSj0WsnE5lTooHNKY9Xn717zqqzz0ftHZ99OWrVcmn9bUaAuTrEALw_wcB

Proctorio

Proctorio est un logiciel de télésurveillance qui permet d’effectuer la surveillance en différé des étudiants lors de la passation d’un examen. Les enseignants fixent les comportements qu’ils veulent signaler comme étant des activités inhabituelles à l’aide des algorithmes de Proctorio. Tout au long de la passation de l’évaluation, des fonctionnalités de l’ordinateur de l’étudiant peuvent être désactivées. Proctorio peut capter tout ce qui se déroule à l’écran et fournir un enregistrement du déroulement. Il faut télécharger l’extension Proctorio sur le navigateur. Les étudiants seront filmés pendant la réalisation de leur examen et l’enseignant pourra visionner l’enregistrement après la passation de l’examen. Les mesures de surveillance sont les suivantes :

  • Peu de restrictions des fonctionnalités du poste des étudiants :
    • Pas de copier/coller
    • Pas d’impression

 

  • Ajouts de restrictions modérées :  
    • Les restrictions précédentes du mode « Peu de restrictions » et…
    • Fermeture automatique des onglets du navigateur autre que celui du questionnaire
    • Pas d’ouverture de nouvel onglet dans le navigateur Google Chrome

 

  • Limitations sévères des fonctionnalités du poste des étudiants (examen à livre fermé) :
    • Pas de copier/coller
    • Pas d’impression
    • Fermeture automatique des onglets du navigateur Google Chrome autre que celui du questionnaire
    • Pas d’ouverture de nouvel onglet
    • Utilisation d’un seul moniteur (écran)
    • Clic droit sur la souris désactivé

 

A la fin de chaque examen il y a un rapport de surveillance : Présente la liste des étudiants, apparaissant selon le pourcentage de suspicion de chacun.

 

sources : https://www.enseigner.ulaval.ca/sites/default/files/proctorio_-_guide_de_lenseignant_vf_ul.pdf https://proctorio.com/

ProctorU

Pour chaque examen, chaque étudiant prend rendez-vous via le service ProctorU (il peut prendre rendez-vous 24H/24 et 7J/7).

Au moment de l’examen, l’étudiant se connectera par chat vidéo avec un surveillant de ProctorU qui vérifiera l’identité en vérifiant sa carte d’identité et aidera l’étudiant tout au long du processus d’examen.

Ils pourront avoir accès à l’écran, la caméra et au microphone pendant que l’étudiant passe l’examen et aide en cas de difficultés techniques. Pour cela il faut télécharger l’extension ProtcorU sur le navigateur.

 

Sources : https://www.proctoru.com/

https://www.pcs.udel.edu/proctoru-student-information/

Evalbox

Plateforme d’évaluation pour gérer des tests QCM en ligne.

Correction automatique de vos tests et questionnaires.

Génère simplement les QCM par tirage au sort à partir de banques de questions, et ne donne pas les mêmes questions à tous les étudiants pour éviter la triche.

Temps des questions limité. Mécanisme pour empêcher de sauter à une autre fenêtre durant le QCM. Pendant l’examen, suivi des étudiants en temps réel et affichage instantané des alertes de tricherie.

Résultat instantané à la fin de l’examen. Si l’étudiant change de page pendant une question, cela comptera comme une mauvaise réponse sur la question, même s’il a répondu correctement.

Le tarif de Evalbox est de 0,01 € par mois et par utilisateur.

Technical Aspect

Reconnaissance faciale/Détection de visage

Il existe deux principales applications de machine learning qui analysent les images contenant des visages : la détection de visage et la comparaison faciale. L’analyse des visages dans une image/vidéo fonctionne grâce aux réseaux de neurones, qui vas reconnaître plusieurs attribut d’une personne (qui sera précisé plus tard, selon les applications). La détection de visage consiste à détecter un visage humain dans une image numérique. C’est un cas spécifique de détection d’objet, où l’on cherche à détecter la présence et la localisation précise d’un ou plusieurs visages dans une image. La détection de visage cherche à détecter la présence et la localisation précise d’un ou plusieurs visages dans une image numérique ou une vidéo. C’est un sujet difficile, notamment dû à la grande variabilité d’apparence des visages dans des conditions non contraintes:

  • Variabilité intrinsèque des visages humains (couleur, taille, forme)
  • Présence ou absence de caractéristiques particulières (cheveux, moustache, barbe, lunettes…)
  • Expressions faciales modifiant la géométrie du visage
  • Occultation par d’autres objets ou d’autres visages
  • Orientation et pose (de face, de profil)
  • Conditions d’illumination et qualité de l’image
  • Présence de photos de visages qui seront prises comme des visages de personnes vraies.

La reconnaissance faciale s’appuie sur les spécificités biométriques de chaque visage. Les systèmes automatisés de reconnaissance faciale permettent d’identifier ou de vérifier l’identité d’un individu en quelques secondes seulement à partir des caractéristiques de leur visage :

  • écartement des yeux,
  • des arêtes du nez,
  • des commissures des lèvres,
  • des oreilles,
  • du menton, etc.,

y compris au milieu d’une foule, au sein d’environnements dynamiques et instables. Elle permet :

  • D’authentifier une personne : « Etes-vous bien celui que vous prétendez être ? ».

La biométrie permet ici de certifier l’identité d’une personne en comparant les données qu’elle va présenter avec les données préenregistrées de la personne qu’elle prétend être (vérification 1:1). Ou

  • D’identifier une personne : « qui êtes-vous ? ».

Dans ce cas, la personne est identifiée parmi d’autres (vérification 1:N). Ses données personnelles sont comparées aux données d’autres personnes contenues dans la même base de données ou dans d’éventuelles bases de données reliées. Ces deux systèmes sont capables d’estimer le niveau de confiance de la prédiction sous la forme d’une probabilité ou d’un score de confiance. Par exemple, un système de détection des visages peut prédire qu’une région d’image est un visage à un score de confiance de 90 %, et qu’une autre région d’image est un visage à un score de confiance de 60 %. La région dont le score de confiance est le plus élevé doit être la plus susceptible de contenir un visage. Type de Produit : GaussianFace, DeepFace, FaceNet, Rekognition, FaceID. Librairie python que l’on utilise : OpenCV : OpenCV (pour Open Computer Vision) est une bibliothèque graphique libre, initialement développée par Intel, spécialisée dans le traitement d’images en temps réel. sources : https://fr.wikipedia.org/wiki/D%C3%A9tection_de_visage https://docs.aws.amazon.com/fr_fr/rekognition/latest/dg/face-feature-differences.html https://www.cnil.fr/fr/definition/reconnaissance-faciale https://www.thalesgroup.com/fr/europe/france/dis/gouvernement/biometrie/reconnaissance-faciale https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_reconnaissance_faciale https://docs.aws.amazon.com/fr_fr/rekognition/latest/dg/what-is.html https://en.wikipedia.org/wiki/DeepFace https://veilletic.imist.ma/index.php/r-d/cloud-telecom-et-multimedia/421-gaussianface-un-algorithme-de-la-reconnaissance-faciale-plus-performant-que-les-humains https://opencv.org/ https://fr.wikipedia.org/wiki/OpenCV

Reconnaissance vocale

Une phrase enregistrée et numérisée est donnée au programme de reconnaissance automatique de la parole (RAP). Dans le formalisme RAP (ASR en anglais), le découpage fonctionnel est le suivant :

  • Le traitement acoustique (front-end en anglais) permet principalement d’extraire du signal vocal une image acoustique compacte sous forme de vecteurs acoustiques correspondant à des tranches de 20 à 30ms de signal avec un pas de 10ms (technique de fenêtrage de Hamming). Le signal est numérisé et paramétré par une technique d’analyse fréquentielle utilisant la transformée de Fourier (par exemple MFCC, Mel-Frequency Cepstral Coefficients).
  • L’apprentissage automatique réalise une association entre les segments élémentaires de la parole et les éléments lexicaux. Cette association fait appel à une modélisation statistique entre autres par modèles de Markov cachés (HMM, Hidden Markov Models) et/ou par réseaux de neurones artificiels (ANN, Artificial Neural Networks) en répertoriant les associations entre les fréquences et les mots. Chaque association va créer un neurone qui servira à déduire de nouvelles correspondances. Ainsi, plus les informations sont nombreuses, plus le modèle est précis statistiquement parlant et en prenant en compte le contexte général pour attribuer le meilleur mot en fonction des autres déjà définis.
  • Le décodage en concaténant les modèles élémentaires précédemment appris reconstitue le discours le plus probable. Il s’agit donc d’une correspondance de motif (pattern matching) temporelle, réalisée souvent par l’algorithme de déformation temporelle dynamique (en anglais DTW, dynamic time warping).

Type de logiciel : Siri, Cortana, Google Now, Alexa, Vocapia Research. Librairie python que l’on utilise : PyAudio sources : https://ichi.pro/fr/reconnaissance-vocale-comment-ca-marche-138707510669430 https://www.dicma.fr/details-comment+fonctionne+la+reconnaissance+vocale-185.html https://fr.linkedin.com/pulse/reconnaissance-vocale-comment-%C3%A7a-marche-avec-vivoka-aur%C3%A9lien-chapuzet https://www.maxicours.com/se/cours/reconnaissance-vocale/ https://fr.wikipedia.org/wiki/Reconnaissance_automatique_de_la_parole

Detection de mouvement

Parmi les méthodes de détection de mouvement les plus répondus on trouve : La détection de mouvement par soustraction : Au fait il s’agit d’un algorithme simple qui consiste à comparer les images successives après un traitement préliminaire et de déterminer la position des pixels dont le changement d’intensité est remarquable , si cet ensemble de pixels détectés constitue un groupe homogène alors ce groupe d’éléments représente le changement de position d’un objet en mouvement dans l’espace.   La détection de mouvement par accéléromètre : Un accéléromètre est un capteur qui, fixé à un mobile ou tout autre objet, permet de mesurer l’accélération non gravitationnelle linéaire de ce dernier. On parle d’accéléromètre même lorsqu’il s’agit en fait de 3 accéléromètres qui calculent les accélérations linéaires selon 3 axes orthogonaux. La détection de mouvement par accéléromètre est effectuée par la différence entre les anciennes et les nouvelles valeurs captées par l’accéléromètre. Si cette différence dépasse un seuil défini, alors il y a mouvement. Dans la vie courante la détection de mouvement grâce a l’accéléromètre est utilisé pour les podomètres par exemple.

sources : https://fr.wikipedia.org/wiki/Acc%C3%A9l%C3%A9rom%C3%A8tre https://ratiler.wordpress.com/2014/09/08/detection-de-mouvement-avec-javacv/#:~:text=%2DLa%20d%C3%A9tection%20de%20mouvement%20par,d%C3%A9tect%C3%A9s%20constitue%20un%20groupe%20homog%C3%A8ne https://www.youtube.com/watch?v=pkzT9MlICPE

Reconnaissance d'objet

En vision par ordinateur on désigne par détection d’objet (ou classification d’objet) une méthode permettant de détecter la présence d’une instance (reconnaissance d’objet) ou d’une classe d’objets dans une image numérique. L’approche générale pour détecter un objet dans une image (sans connaissance a priori sur les conditions de prise de vue) consiste en trois étapes :

  • Déterminer les localisations potentielles de l’objet, soit au moyen d’une fenêtre glissante sur l’image, soit directement en détectant les points d’intérêt en son sein.
  • Extraire des caractéristiques dans l’image permettant d’identifier la classe d’objet visée
  • Classifier automatiquement chaque sous fenêtre comme contenant l’objet recherché ou pas ou bien apparier les caractéristiques extraites avec celles d’un modèle de référence.

sources : https://fr.wikipedia.org/wiki/D%C3%A9tection_d%27objet https://www.saagie.com/fr/blog/quest-ce-que-la-detection-dobjet/

Communication client-serveur avec gRPC

Comme de nombreux systèmes RPC, gRPC est basé sur l’idée de définir un service, en spécifiant les méthodes qui peuvent être appelées à distance avec leurs paramètres et types de retour. Par défaut, gRPC utilise des tampons de protocole comme langage de définition d’interface (IDL) pour décrire à la fois l’interface du service et la structure des messages utiles. Il est possible d’utiliser d’autres alternatives si on le souhaite. Dans gRPC, une application cliente peut appeler directement une méthode d’une application serveur située sur une autre machine, comme s’il s’agissait d’un objet local, ce qui vous permet de créer plus facilement des applications et des services distribués. Comme dans de nombreux systèmes RPC, gRPC est basé sur l’idée de définir un service, en spécifiant les méthodes qui peuvent être appelées à distance avec leurs paramètres et types de retour. Du côté serveur, le serveur implémente cette interface et exécute un serveur gRPC pour traiter les appels des clients. Du côté client, le client dispose d’un stub (appelé simplement client dans certains langages) qui fournit les mêmes méthodes que le serveur. Les clients et les serveurs gRPC peuvent s’exécuter et communiquer entre eux dans divers environnements, des serveurs de Google à votre propre bureau, et peuvent être écrits dans tous les langages pris en charge par gRPC. Ainsi, par exemple, vous pouvez facilement créer un serveur gRPC en Java avec des clients en Go, Python ou Ruby. En outre, les dernières API de Google disposeront de versions gRPC de leurs interfaces, ce qui vous permettra d’intégrer facilement les fonctionnalités de Google dans vos applications.   Sources : https://grpc.io/docs/what-is-grpc/introduction/ https://grpc.io/docs/what-is-grpc/core-concepts/

Project Description

Problem Definition
Réalisation d'un système de surveillance d'examen à distance "automatisé".
Ce système doit être au plus complet possible et se doit de reconnaître toutes formes de tentatives de triches ou de triches.
Challenges & Motivation
A notre connaissance, aucun système de surveillance "automatisé" à distance ne combine deux logiciels (applications mobiles et logiciel PC) à ces fins et à prix abordable.

Notre enjeux était de réaliser un système qui soit bien évidemment performant, qui répond aux attentes de tout individu, professeur, école, organisme et qui ne contraint pas les individus surveillés sur le plan académique et financier.

Pour cela, on a décidé de combiner un logiciel à lancer sur le PC de l'individu qui passe l'examen et un objet que nous possédons tous : un smartphone.

Ce système de surveillance à distance est dit "automatisé" car nous n'avons pas besoin d'un examinateur pendant la durée de l'examen. En effet, notre système détecte, analyse et garde en preuve les comportements suspects, voire frauduleux.
Pour cela, notre application mobile sera, pendant toute la durée de l'examen, en communication avec le logiciel PC en partageant ce qu'il détecte et capture, c'est-à-dire la détection de mouvement et des images que la caméra du smartphone transmet.

Le logiciel PC quant à lui surveillera à partir de la caméra du PC et de son micro. La caméra permettra de reconnaître l'individu, le nombre de personnes présentes, les objets qui l'entourent et la détection de mouvement. Le micro sera utilisé conjointement et afin de reconnaître le nombre de personnes présentes dans la pièce, de reconnaître certains mots clés et d'enregistrer les moments suspects.
La détection de mouvement envoyé par l'application mobile servira à savoir si les images envoyés doivent être traités.
Real and Complete Usecases

Notre produit comprend deux types d’utilisateurs : un surveillant et un surveillé. Le surveillant devra fournir un fichier CSV contenant les individus passants l’examen au logiciel. Les individus surveillés devront d’abord lancés le logiciel PC. Ensuite, lancés l’application mobile, et une fois connectées, ils devront suivre les instructions données sur l’application mobile. Une fois ceci fait, ils devront placer leur smartphone sur leur front et attendre les tests du logiciel PC. Peu avant le début de l’examen, le logiciel PC devra reconnaître si la personne est la bonne (grâce à une photo donnée au préalable). Si c’est la bonne, alors il pourra commencer l’examen.

Technical Description

La communication application mobile – logiciel PC se fait à partir de gRPC, qui est un framework RPC (Remote Procedure Call). L’avantage de ce dernier est qu’il est compatible avec plusieurs langages de programmation, facile d’utilisation. L’application mobile fournit au logiciel PC différentes données : le type de transmission, l’horodatage, la détection de mouvement et l’image capturé par la caméra. La détection de mouvement par l’accéléromètre est permis grâce aux instructions données avant le début de l’examen. Une en particulière, celle qui est demandée au surveillé de fixer son écran pendant 3 secondes, dont le but est de calculer la moyenne des coordonnées de l’accéléromètre pendant ce temps là. Ensuite, il nous a suffit de calculer la différence entre la position actuelle et cette moyenne et si la différence dépasse un certain seuil, alors y a mouvement (haut, bas, droite, gauche). Concernant la prise d’images, dans la phase d’instructions, dans l’application mobile, nous utilisons la librairie Intent. L’avantage est qu’il est déjà toute implémenté et le désavantage est qu’il est difficile à personnaliser. A propos des images envoyées en streaming venant du client au serveur,  nous l’avons implémenté à partir de la librairie CameraX et d’un Preview de la caméra. CameraX fixe sur le Preview ce que la caméra visionne et ainsi nous pouvons récupérer image par image.

Hardware

Materials
ImageNamePart NumberPriceCountLink
Ordinateur (OS : Windows) doté d'une caméra et d'un micro000🛒
Smartphone doté d'une caméra et de capteurs accéléromètre111🛒
Schematic

Software

Arduino Code

Création d’une classe qui regroupe toutes les variables importantes y compris certaines des codes.

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

Reprise de la manière de reconnaître des visages parmi tous les visages d'un dossier.

modification :
 - Le modèle se base maintenant sur une image, et au lieu de prendre la distance minimum entre toutes les photos du dossier, il va reconnaître la personne si la distance et en dessous d’un certain seuil
- Transformation du code principale en plusieurs fonctions
- Implémentation d’une fonction pour connaître le nombre de visage
- Implémentation d’une fonction pour reconnaître une personne pendant un certain nombre de seconde
- Implémentation d’une fonction de routine de la caméra à utiliser pour le threading
- Implémentation d’une fonction pour la prise en photo

https://github.com/L42Project/Tutoriels/blob/master/OpenCV/tutoriel26/camera.py

Reprise du code pour la détection de mouvement par soustraction.

modification :
- Suppressions des variables
- Ajout de d’un compteur de différence de pixel en fonction des images, s’il la différence de pixels est supérieur à 15000 pendant n images alors il y a une l’alarme. Et si elle est inférieure à 100, il y a aussi une alarme.
- Prendre en photo si il y a une alarme
- Implémentation d’une fonction de routine de la détection de mouvement à utiliser pour le threading
http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/projets/technique.html
https://www.datacorner.fr/audio-recog/

Reprise de la détection vocale.

modification :
- Création d’une classe de reconnaissance vocale
- Création d’une liste de mot triche et implémentation d’une fonction pour en ajouter
- Création d’une fonction qui écoute le son du micro et enregistre l'audio si un des mots triche à été reconnu
- Implémentation d’une fonction de routine de la détection vocale
SOURCES :
https://medium.com/swlh/a-beginners-guide-to-grpc-in-android-61cc56a423f7 (gRPC, intégration)
https://stackoverflow.com/questions/2323128/convert-string-in-base64-to-image-and-save-on-filesystem (reprise d’une fonction)


Reprise de la structure d’envois/réceptions de message.
Reprise d’une fonction pour convertir une image au format String Base64 en JPG.
SOURCE : https://grpc.io/docs/languages/kotlin/quickstart/ (intégration)

Pour la création du proto buff, on a repris l’exemple donné sur le site officiel, puis on l’a adapté à nos besoins.
SOURCES : 
https://medium.com/swlh/a-beginners-guide-to-grpc-in-android-61cc56a423f7 (intégration)
https://fr.acervolima.com/comment-creer-une-camera-personnalisee-a-l-aide-de-camerax-sous-android/ (intégration)

Ajout des sources nécessaires pour l’utilisation de gRPC (INTERNET), de cameraX et camera Intent (CAMERA).
SOURCES : 
https://medium.com/swlh/a-beginners-guide-to-grpc-in-android-61cc56a423f7 (gRPC, intégration)
https://fr.acervolima.com/comment-creer-une-camera-personnalisee-a-l-aide-de-camerax-sous-android/ (cameraX, intégration)
https://stackoverflow.com/questions/49039777/how-do-you-include-com-google-protobuf-on-android-project-gradle-as-full-but (Google DateTime, reprise du code et adaptation)

Ajout des dépendances nécessaires afin de pouvoir utiliser certaines fonctions déjà complètement définies (gRPC, cameraX, DateTime de Google pour récupérer l’horodatage).
SOURCE : https://medium.com/swlh/a-beginners-guide-to-grpc-in-android-61cc56a423f7 (reprise de la structure d’envois de message au serveur gRPC)

Le fichier a été fait nous-même. Pour notre fonction communication_cs, on a repris la structure basique d’envois gRPC de message au serveur (provenant de la source), puis nous l’avons adapté à nos besoins (création de fonction, les conditions, temps de TimeOut).
SOURCES : 
https://fr.acervolima.com/comment-creer-une-camera-personnalisee-a-l-aide-de-camerax-sous-android/ 
https://stackoverflow.com/questions/8631095/how-to-prevent-going-back-to-the-previous-activity (“Désactiver” le bouton retour en arrière du portable)

Reprise du code et modification afin qu’ils correspondent à nos besoins.
Intégration du code pour la désactivation du bouton retour en arrière du portable.
SOURCE : aucune

Dans ce fragment, on a juste utilisé la fonction communication_cs définies dans globalVariables.kt, le reste n’a pas eu besoin de source.
SOURCES :
https://www.youtube.com/watch?v=xcsuDDQHrLo (Accéléromètre)
https://www.youtube.com/watch?v=DPHkhamDoyc (camera Intent)

Intégration du code pour l’accéléromètre et modification du code afin l'adapter à un Fragment.
Intégration du code pour utiliser camera Intent. Modification apportée : on ne sauvegarde plus la photo prise, on l’envoie directement au serveur
SOURCES :
https://www.youtube.com/watch?v=xcsuDDQHrLo (Accéléromètre)
https://developer.android.com/guide/topics/sensors/sensors_motion (Accéléromètre, pour savoir quelle variable correspondait à quel axe)
https://fr.acervolima.com/comment-creer-une-camera-personnalisee-a-l-aide-de-camerax-sous-android/ (cameraX)
https://stackoverflow.com/questions/14066038/why-does-an-image-captured-using-camera-intent-gets-rotated-on-some-devices-on-a (pour pouvoir faire la rotation de l’image)
https://www.androidbugfix.com/2022/01/android-camerax-image-capture.html (pour convertir une image au format ImageProxy au format Bitmap)
https://stackoverflow.com/questions/9224056/android-bitmap-to-base64-string (pour convertir une image au format Bitmap au format String Base64)

Intégration du code pour l’accéléromètre et modification du code afin l'adapter à un Fragment.
Intégration des codes trouvés sur différents sites afin de pouvoir fixer cameraX à un Preview et prendre des photos pour les envoyer au serveur.

External Services

0

0