2021-M2-Bougaila-2

Plusieurs universités ont eu le besoin d'une solution fiable et efficace pour la télésurveillance pour garantir le bon déroulement des examens, ce projet est une proposition de notre solution qui va nous servir à la détection des tentatives de triche dans les examens passé à distance, notre solution va concentrer sur les trois principaux éléments : une solution pour la détection des visages, détection des positions et une solution pour la détection des objets.

Slides & Videos

Members

NameContribution
Oussama BOUGAILA1) Seance 01:
- Activité 1: Utilisation de la classe VGG16 de keras pour définir les différents layers de notre réseaux: https://keras.io/api/applications/vgg/#vgg16-function
On a défini 3 classe comme output du dernier layer(comme on est 3 étudiants dans le groupe)
Pour la compilation, on définit l'optimizer Adam comme on a vu dans le TP2
- Activité 2: On a utilisé la classe (ImageDataGenerator) de keras avec la fonction (flow_from_directory) https://keras.io/api/preprocessing/image/#flowfromdirectory-method Qui va prendre le chemin d'un répertoire et génère des lots de données augmentées, ce chemin doit contenir des dossiers par class (dans notre cas, il y a 3 dossiers au nom de chaque étudiant)
- Activité 3: faire un fit du model avec epoch de 5 (comme un début pour ne pas prendre beaucoup de temps) et tester le résultat sur validation sets
2) Seance 02:
- Activité 1: Utilisation de la classe VGG16 de keras pour définir les différents layers de notre réseaux: https://keras.io/api/applications/vgg/#vgg16-function
On a défini 6 classe come output du dernier layer(face, gauche, droite, haut, bas, absent)
Pour la compilation, on définit l'optimizer Adam et loss c'est CategoricalCrossentropy comme on a vu dans le TP2

- Activité 2: On a utilisé la classe (ImageDataGenerator) de keras avec la fonction (flow_from_directory) https://keras.io/api/preprocessing/image/#flowfromdirectory-method

Qui va prendre le chemin d'un répertoire et génère des lots de données augmentées, ce chemin doit contenir des dossier par class (dans notre cas, il y a 6 dossier au nom de chaque position)
- Activité 3: faire un fit du model avec epoch de 5 (comme un début pour ne pas prendre beaucoup de temps) et tester le résultat sur validation sets
3) Seance 03:
- Activité 1: Adopter la solution YOLOv4 et faire quelque changement pour l'adapter a notre solution de reconnaissance des objets
Rafik TCHOKETCH KEBIR1) Seance 01:
- Activité 1: Préparation d’un script python, Js pour lier la caméra du pc au programme afin de préparer la datasets
- Activité 2: recherche et documentation sur le sujet (blog, article,...) et plus précisément sur les thématiques : computer vision, behavior detection using computer vision.
https://machinelearningmastery.com/how-to-perform-face-recognition-with-vggface2-convolutional-neural-network-in-keras/
http://jaesik.info/publications/data/14_accv.pdf
- Activité 3:
- J'ai participer avec Bougaila dans le dévelopement du model pour la partie reconnaisance
- Documentation sur OpenCv et développer un algorithme pour prendre des frame de la webcam pour faire la prédiction en temps réel (en cours)
2) Seance 02:
- Activité 1: Définitions des cas suspect triche à partir de la position de la tête, timing, et les résultat des capteurs du smartphone (ex: position de la tête fixer à gauche pour plus de 2 mn)
- Activité 2: division des datasets (que on a construit) entre : training, validation avec plus de 150 images avec différent positions (gauche, droite, haut, bas, absent)
- Activité 3: préparation du programme pour prendre des frame de la webcam pour faire la prédiction en temps réel (en cours)
3) Seance 03:
- Activité 1: Préparation d'une solution qui va connecter la camera de smartphone vers la machine et plus perticulierement avec l'envirenement Collab en utilisant la solution DroidCam
- Activité 2: Déterminer les objets qui sont interdits à être présent devant l'étudiant
Zouhair ELKILI1) Seance 01:
- Activité 1: préparation d’un script python, Js pour lier la caméra du pc au programme afin de préparer la dataset avec des images de dimension 640*480
- Activité 2: division des dataset (que on a construit) entre : training, validation avec 150 images
2) Seance 02:
- Activité 1: préparation de la liaison du camera de smartphone avec le programme python
- Activité 2: Documentation et recherche sur les capteurs et les paramètres du smartphone qui pourrait être utilisé pour mieux distinguer les situation des triches par rapport à l'état normale
3) Seance 03:
- Activité 1: Documentation sur l'algorithme de YOLOv4 qui fait la reconnaissance des objets : https://towardsdatascience.com/yolo-v4-optimal-speed-accuracy-for-object-detection-79896ed47b50

State of the Art

Business Aspect
Technical Aspect

Project Description

Problem Definition
Pendant cette période de crise sanitaire, plusieurs universités ont eu le besoin de valider les sessions d'étude en faisant des examens aux étudiants pour évaluer leurs niveaux scolaires, et comme les études ça passe en distanciel, ces universités ont besoin d'une solution fiable et efficace pour la télésurveillance pour garantir le bon déroulement des examens.
Challenges & Motivation
La solution de la télésurveillance est compliquée et coûteuse, d'abord il faut convaincre les élèves, les étudiants et leurs parents d'investir dans les matériels (hardware) comme la webcam, le smartphone... etc et que l'élève accepte d'être surveillé dans sa chambre. D'un autre côté, cette approche va résoudre un problème majeur surtout en cette période de crise et elle présente une opportunité financière pour les entreprises qui développent cette solution.
Real and Complete Usecases

Une demonstration technique: https://youtu.be/YmXarXU5mrI

Technical Description

Reconnaissance des visages :

  • Réalisation de la partie qui nous aide à activer la webcam dans colab et prendre des images et les stocker dans Google drive
  • Pour la 1ère parti on a fait la reconnaissance des visages et on a utilisé la classe VGG16 de Keras pour définir les différents layers de notre réseau
  • On a défini 3 classe comme output du dernier layer(comme on est 3 étudiants dans le groupe)
  • division des dataset (qu’on a construit) entre : training, validation avec 150 images
  • Pour la compilation, on définit l’optimizer Adam comme on a vu dans le TP2
  • On a utilisé la classe (ImageDataGenerator) de keras avec la fonction (flow_from_directory)  Qui va prendre le chemin d’un répertoire et génère des lots de données augmentées, ce chemin doit contenir des dossiers par classe (dans notre cas, il y a 3 dossiers au nom de chaque étudiant)
  • faire un fit du model avec epoch de 5 (comme un début pour ne pas prendre beaucoup de temps) et tester le résultat sur validation sets
  • entraîner le modèle pour la reconnaissance faciale sur le datasets et tester le résultat sur validation sets , on a trouvé un loss = 0.5339 et accuracy = 0.9202 de training set, et loss = 1.4389 et accuracy = 0.7692 pour la validation set
  • Afficher les différents valeurs du loss et accuracy dans des graphes en utilisant (pyplot) comme montré dans la figure

Reconnaissance des positions :

  • Réalisation de la partie qui nous aide à activer la webcam dans colab et prendre des images et les stocker dans Google drive
  • Pour la 1ère parti on a fait la reconnaissance des positions et on a utilisé la classe VGG16 de Keras pour définir les différents layers de notre réseau
  • On a défini 6 classe comme output du dernier layer(face, gauche, droite, haut, bas, absent)
  • division des dataset (qu’on a construit) entre : training, validation avec 150 images
  • Pour la compilation, on définit l’optimizer Adam comme on a vu dans le TP2
  • On a utilisé la classe (ImageDataGenerator) de keras avec la fonction (flow_from_directory)  Qui va prendre le chemin d’un répertoire et génère des lots de données augmentées, ce chemin doit contenir des dossiers par classe (dans notre cas, il y a 6 dossiers au nom de chaque position)
  • faire un fit du model avec epoch de 5 (comme un début pour ne pas prendre beaucoup de temps) et tester le résultat sur validation sets
  • Entraîner le modèle pour la reconnaissance des positions sur le datasets et tester le résultat sur validation sets, on a trouvé un loss = 1.36 et accuracy = 0.71 de training set, et loss = 1.59 et accuracy = 0.81 pour la validation set
  • Afficher les différents valeurs du loss et accuracy dans des graphes en utilisant (pyplot) comme montré dans la figure

Reconnaissance des objets avec smartphone :

  • La 3ᵉ solution qu’on a proposé dans notre projet, c’est l’utilisation d’un smartphone qui vas être collé dans la tête de l’étudiant et qui va nous aider à faire une reconnaissance des objets qui présente devant l’étudiant ou sur la table où l’étudiant va passer son examen, 
  • pour la connexion on a préparé une solution qui va connecter la camera de smartphone vers la machine et plus particulièrement avec l’environnement Collab en utilisant la solution DroidCam
  • on adopter la solution YOLOv4 qui un algorithme de reconnaissance des objets avec une vitesse de reconnaissance optimale
  • qui va reconnaitre une famille de 80 objets de différent type comme : Personne, cartable, frisbee, ballon, bouteille, des fruits, téléphone… Etc, 
  • et on a spécifié les objets qui sont interdit à être présent devant l’étudiant comme les objets électroniques comme le téléphone … Etc
  • Si c’était le cas, on fait une notification au responsable qui fait la surveillance pour le notifier qui il y a une tentative de triche.

Hardware

Materials
ImageNamePart NumberPriceCountLink
Webcam1201🛒
Schematic

Software

External Services