Slide1
samar :bonjour, je m'appelle samar hamraoui
yassine : bonjour, je m'appelle yassine hattay , notre projet porte sur la
détection des pièces monnaies pour les aveugles
Slide 3
plan:
la présentation est divisée en 3 grands chapitres
tout d'abord le contexte du projet, ensuite l'analyse
et enfin la réalisation.
Slide 4
Contexte:
Commençons par le premier chapitre
on va voir la problématique puis la solution
Slide 5
Problématique:
Les personnes aveugles rencontrent souvent des difficultés lorsqu'il s'agit de
différencier les différentes valeurs de pièces, ce peut être un défi pour eux, ce
qui peut entraîner des erreurs et une dépendance à l'égard des autres. Il est
donc essentiel de développer des solutions technologiques pour les aider à
résoudre ce problème.
Slide 6
solution:
Notre solution à ce problème consiste à utiliser une carte
'RaspberryPi' pour prendre une photo des pièces et l'envoyer à un
serveur qui détecte et reconnaît ces pièces , puis envoie les
résultats à la carte.
Slide 7
Analyse du solution:
En passant à la partie d'analyse
Slide 8
La question posé donc
Comment l'utilisateur déclenche-t-il l'envoi de l'image et la réception des
résultats et comment le processus se déroule-t-il en détail ?
Slide 9
Carte
L'utilisateur clique d'abord sur un bouton, ce qui provoque l'exécution d'une
méthode python. et ce code doit être placé en tant que processus
d'arrière-plan afin qu'il puisse être exécuté lorsque le bouton est cliqué et
chaque fois que la carte est redémarrée. Cette méthode demande à la carte
de prendre une photo à l'aide d'un appareil photo connecté à la carte, puis elle
envoie les données à un serveur, et à l'aide des résultats du ce dernier , la
carte calcule la somme des pièces et l'annonce sur un haut-parleur connecté.
👍
Slide 10
Ces étapes sont contrôlées par python qui fonctionne de ce maniére :
1-Importation des bibliothèques nécessaires, telles que requests, picamera,
[Link], et pyttsx3.
2-Configuration de la caméra pour une résolution de 1080x720 pixels.
3-Configuration des broches GPIO pour la Raspberry Pi, en particulier la
broche à laquelle le bouton est connecté.
4-Définition d'une fonction de rappel qui sera exécutée chaque fois que le
bouton est pressé. À l'intérieur de cette fonction, une image est capturée,
envoyée via une requête POST à l’URL de serveur, et une synthèse vocale est
réalisée en fonction de la réponse reçue.
5-Détection d'événement sur la broche du bouton, de sorte que la fonction de
rappel soit exécutée lorsque le bouton est pressé.
Slide 11
Serveur
Et que se passe-t-il du côté du serveur ? entre l'étape 3 et l'étape 4
Lorsque le serveur reçoit l'image, il détecte les types des pièces et le
nombre de chaque type à l'aide de l'apprentissage profond en utilisant
l'algorithme YOLO , puis il envoie le résultat en format json à la carte.
Slide 12
le code python du serveur fonctionne comme suit:
1-Importation des bibliothèques : argparse, json, torch, Flask et Popen .
2-Configuration de l'application Flask : Une instance de l'application
Flask est créée.
3-Définition des routes :
il y’a deux routes
a- Route d'index ('/'): Lorsque la route racine est accédée en utilisant la
méthode GET, le modèle '[Link]' est rendu.
b- Route de détection d'objets lorsque la route racine est accédée en
utilisant la méthode POST : les actions suivantes sont déclenchés
● Le fichier image est extrait de la requête envoyer par la carte à
l’aide de la méthode POST.
● L'image est enregistrée en tant que fichier temporaire.
● La détection d'objets YOLOv7 est effectuée en exécutant un
script Python qui s’appel '[Link]' .
● puis Les résultats de la détection sont stockés dans un fichier
JSON.
● Le fichier JSON est chargé et les numéros de classe sont
extraits.
● ensuite Les nombres de classes sont envoyés sous forme de
réponse JSON à l'aide de jsonify.
4- enfin dans la Fonction principale :
● Un analyseur d'arguments est défini pour spécifier le numéro de
port lors de l'exécution du script.
● Le modèle YOLOv7 est chargé et mis en mode évaluation.
● L'application Flask est exécutée avec l'hôte et le port spécifiés.
Slide 13
Réalisation:
Dans le dernier chapitre nommé Réalisation, nous examinerons les
choix matériels et logiciels ,le choix du modèle, la préparation de
l'ensemble des données et l'entraînement du modèle.
Choix matériel et logiciel:
Slide 14
Carte: en raison de la disponibilité de ressources en ligne et de
tutoriels, la carte Raspberry paraissait être un bon choix pour ce
projet .
Slide 15
serveur : Pourquoi utiliser un serveur ? En utilisant un serveur, nous
pouvons fournir les informations nécessaires à l'utilisateur dans un
temps raisonnable à l'aide d'un modèle d'apprentissage profond qui
serait sinon plus lent et moins précis dans une carte raspberry.
Slide 16
modèle :ce modèle est basé sur L'algorithme YOLO (You Only Look Once)
,c’est un algorithme de détection d'objets réputé pour sa rapidité, sa précision
et sa polyvalence .
YOLO est reconnu pour sa vitesse en temps réel. Grâce à son architecture
optimisée et à l'utilisation de techniques telles que les réseaux de neurones
convolutifs, YOLO peut détecter et localiser des objets dans une image à une
vitesse élevée.
Cet algorithme a besoin des photos et des fichiers avec l'extension ‘.txt’ qui
contiennent les informations nécessaires pour former un modèle.
préparation de données:
Slide 17
Maintenant Pour la préparation des donnés :
Nous avons obtenu nos données d'un autre groupe du même projet
avec des fichiers avec l'extension ‘.xml’ pour chaque photo, nous avons donc
dû préparer un script python qui transforme ces fichiers avec l'extension ‘.xml’
en fichiers avec l’extension ‘.txt’ et transforme leur contenu à une format
utilisable par l'algorithme yolo qui sera utilisé sur le serveur pour la détection
des pièces de monnaie .
Slide 18
Nous avons utilisé le logiciel LabelImg qui crée des fichiers ‘.txt’ des objets
encadrés dans l'image ce qui facilite grandement le travail d'étiquetage des
images et nous aide à changer le contenu de certains fichiers texte et ajouter
des classes supplémentaires.
Slide 19
ensuite
Entrainement du modèle:
Les données étant prêtes à être utilisées pour l'entraînement du
modèle
A chaque fois,nous avons continué à expérimenter avec
différents paramètres du modèle et en changeant le nombre
d'itérations et la résolution de l'image pour essayer d'obtenir le
modèle optimal
, à l'aide de Pytorch, un ‘framework’ d'apprentissage
automatique open source.
Slide 20
Clôture
Pour cette dernière partie, nous souhaitons présenter un problème que nous
avons rencontré concernant le modèle
Slide 21
Problème:
Ce modèle détecte parfois des types des pièces incorrects
Comme vous le voyez dans cet exemple
Slide 22
comment le rendre plus performant:
On met trois méthodes pour cela
1-Augmentation des données : Collectez et générez plus d'images de pièces
de monnaie dans diverses orientations, éclairages et contextes pour améliorer
la diversité des données d'entraînement.
2-Équilibrage des données : Assurez-vous que le jeu de données contient une
quantité équilibrée d'exemples pour chaque classe de pièce de monnaie, afin
d'éviter un déséquilibre qui pourrait affecter les performances du modèle.
3-Ensembles de modèles : Entraînez plusieurs modèles YOLO avec des
initialisations aléatoires différentes, puis fusionnez leurs prédictions pour
obtenir une prédiction plus précise.
Slide 23
Merci pour votre attention et n'hésitez pas a posez vos questions ,