Table des matières:

Créez un classificateur de déchets Pi avec ML ! : 8 étapes (avec des images)
Créez un classificateur de déchets Pi avec ML ! : 8 étapes (avec des images)

Vidéo: Créez un classificateur de déchets Pi avec ML ! : 8 étapes (avec des images)

Vidéo: Créez un classificateur de déchets Pi avec ML ! : 8 étapes (avec des images)
Vidéo: Apprendre Python avec 3 Projets FUN (Computer Vision) 2024, Novembre
Anonim
Créez un classificateur de déchets Pi avec ML !
Créez un classificateur de déchets Pi avec ML !
Créez un classificateur de déchets Pi avec ML !
Créez un classificateur de déchets Pi avec ML !

Le projet Trash Classifier, affectueusement appelé "Où va-t-il ?!", est conçu pour rendre les choses plus rapides et plus fiables.

Ce projet utilise un modèle d'apprentissage automatique (ML) formé dans Lobe, un constructeur de modèles ML convivial pour les débutants (sans code !), pour identifier si un objet va à la poubelle, au recyclage, au compost ou aux déchets dangereux. Le modèle est ensuite chargé sur un ordinateur Raspberry Pi 4 pour le rendre utilisable partout où vous pourriez trouver des poubelles !

Ce tutoriel vous explique comment créer votre propre projet Trash Classifier sur un Raspberry Pi à partir d'un modèle Lobe TensorFlow en Python3.

Difficulté: Débutant++ (quelques connaissances sur les circuits et le codage sont utiles)

Temps de lecture: 5 minutes

Temps de construction: 60 - 90 minutes

Coût: ~70 $ (y compris Pi 4)

Fournitures:

Logiciel (côté PC)

  • Lobe
  • WinSCP (ou une autre méthode de transfert de fichiers SSH, peut utiliser CyberDuck pour Mac)
  • Terminal
  • Connexion Bureau à distance ou RealVNC

Matériel

  • Raspberry Pi, carte SD et alimentation USB-C (5 V, 2,5 A)
  • Caméra Pi
  • Bouton
  • 5 LED (4 LED indicatrices et 1 LED d'état)

    • LED jaune: ordures
    • LED bleue: recycler
    • LED verte: compost
    • LED rouge: déchets dangereux
    • LED blanche: état
  • 6 résistances de 220 Ohm
  • 10 fils de pontage M à M
  • Planche à pain, demi-taille

Si vous choisissez de souder:

  • 1 connecteur JST, extrémité femelle uniquement
  • 2 cavaliers M à F
  • 10 fils de connexion F à F
  • PCB

Enceinte

  • Caisse de projet (par exemple, carton, bois ou boîte en plastique, environ 6" x 5" x 4")
  • 0,5" x 0,5" (2cm x 2cm) carré en plastique transparent

    Par exemple. à partir d'un couvercle de récipient alimentaire en plastique

  • Velcro

Outils

  • Pinces coupantes
  • Couteau de précision (ex. couteau exacto) et tapis de coupe
  • Fer à souder (facultatif)
  • Outil thermofusible (ou autre colle non conductrice - l'époxy fonctionne très bien mais est permanent)

Étape 1: Avant de commencer

Avant de commencer
Avant de commencer

Ce projet suppose que vous commencez avec un Raspberry Pi entièrement configuré dans une configuration sans tête. Voici un guide convivial pour les débutants sur la façon de procéder.

Il est également utile d'avoir quelques connaissances sur les éléments suivants:

  1. Familiarité avec le Raspberry Pi

    • Voici un guide de démarrage pratique !
    • Également utile: Premiers pas avec la caméra Pi
  2. Lire et éditer du code Python (vous n'aurez pas besoin d'écrire un programme, il suffit de le modifier)

    Introduction à Python avec le Raspberry Pi

  3. Lecture des schémas électriques de Fritzing
  4. Utiliser une planche à pain

    Comment utiliser un tutoriel de maquette

Découvrez où vont vos déchets

Chaque ville à travers les États-Unis (et je suppose que le monde) a ses propres déchets/recyclage/compost/etc. système de collecte. Cela signifie que pour créer un classificateur de déchets précis, nous devrons 1) créer un modèle de ML personnalisé (nous couvrirons cela à l'étape suivante - pas de code !) Et 2) savoir où va chaque déchet.

Comme je ne connaissais pas toujours le bac approprié pour chaque élément que j'utilisais pour entraîner mon modèle, j'ai utilisé le dépliant Seattle Utilities (Photo 1), ainsi que ce pratique "Où va-t-il?" outil de recherche pour la ville de Seattle! Vérifiez quelles ressources sont disponibles dans votre ville en recherchant l'utilitaire de collecte des ordures de votre ville et en parcourant son site Web.

Étape 2: Créez un modèle de ML personnalisé dans Lobe

Créer un modèle de ML personnalisé dans Lobe
Créer un modèle de ML personnalisé dans Lobe
Créer un modèle de ML personnalisé dans Lobe
Créer un modèle de ML personnalisé dans Lobe
Créer un modèle de ML personnalisé dans Lobe
Créer un modèle de ML personnalisé dans Lobe
Créer un modèle de ML personnalisé dans Lobe
Créer un modèle de ML personnalisé dans Lobe

Lobe est un outil facile à utiliser qui contient tout ce dont vous avez besoin pour donner vie à vos idées d'apprentissage automatique. Montrez-lui des exemples de ce que vous voulez qu'il fasse et il forme automatiquement un modèle d'apprentissage automatique personnalisé qui peut être exporté pour les appareils et applications de périphérie. Il ne nécessite aucune expérience pour commencer. Vous pouvez vous entraîner gratuitement sur votre propre ordinateur !

Voici un bref aperçu de l'utilisation de Lobe:

1. Ouvrez le programme Lobe et créez un nouveau projet.

2. Prenez ou importez des photos et classez-les dans les catégories appropriées. (Photo 1) Nous aurons besoin de ces étiquettes plus tard dans la partie logicielle du projet.

Il existe deux manières d'importer des photos:

  1. Prenez des photos d'éléments directement depuis la webcam de votre ordinateur, ou
  2. Importez des photos à partir de dossiers existants sur votre ordinateur.

    Gardez à l'esprit que le nom du dossier photo sera utilisé comme nom d'étiquette de catégorie, alors assurez-vous qu'il correspond aux étiquettes existantes

Mis à part: j'ai fini par utiliser les deux méthodes, car plus vous avez de photos, plus votre modèle est précis.

3. Utilisez la fonction « Play » pour tester la précision du modèle. Modifiez les distances, l'éclairage, la position des mains, etc. pour identifier où le modèle est et n'est pas précis. Ajoutez plus de photos si nécessaire. (Photos 3 - 4)

4. Lorsque vous êtes prêt, exportez votre modèle Lobe ML au format TensorFlow (TF) Lite.

Des astuces:

  • Avant d'importer des photos, faites une liste de toutes les catégories dont vous aurez besoin et comment vous souhaitez les étiqueter (par exemple, "ordures", "recycler, " "compost, " etc.)

    Remarque: utilisez les mêmes étiquettes que celles illustrées sur la photo « Étiquettes de modèle de lobe » ci-dessus pour réduire la quantité de code que vous devez modifier

  • Incluez une catégorie pour « pas de poubelle » qui contient des photos de tout ce qui pourrait être sur la photo (par exemple, vos mains et vos bras, l'arrière-plan, etc.)
  • Si possible, prenez des photos depuis la caméra Pi et importez-les dans Lobe. Cela améliorera grandement la précision de votre modèle !
  • Besoin de plus de photos ? Découvrez les ensembles de données open source sur Kaggle, y compris cet ensemble d'images de classification des déchets !
  • Besoin d'aide? Connectez-vous avec la communauté Lobe sur Reddit !

Étape 3: Construisez-le: matériel

Construisez-le: matériel !
Construisez-le: matériel !
Construisez-le: matériel !
Construisez-le: matériel !
Construisez-le: matériel !
Construisez-le: matériel !

1. Connectez soigneusement la caméra Pi à Pi (consultez le guide de démarrage de la Fondation Pi pour plus d'informations). (Photo 1)

2. Suivez le schéma de câblage pour connecter le bouton-poussoir et les LED aux broches Pi GPIO.

  • Bouton-poussoir: connectez une branche du bouton-poussoir à la broche GPIO 2. Connectez l'autre, via une résistance, à une broche GPIO GND.
  • LED jaune: connectez la branche positive (la plus longue) à la broche GPIO 17. Connectez l'autre branche, via une résistance, à une broche GPIO GND.
  • LED bleue: connectez la branche positive à la broche GPIO 27. Connectez l'autre branche, via une résistance, à une broche GPIO GND.
  • LED verte: connectez la branche positive à la broche GPIO 22. Connectez l'autre branche, via une résistance, à une broche GPIO GND.
  • LED rouge: connectez la branche positive à la broche GPIO 23. Connectez l'autre branche, via une résistance, à une broche GPIO GND.
  • LED blanche: connectez la branche positive à la broche GPIO 24. Connectez l'autre branche, via une résistance, à une broche GPIO GND.

3. Il est recommandé de tester votre circuit sur une maquette et d'exécuter le programme avant de souder ou de rendre l'une des connexions permanente. Pour ce faire, nous devrons écrire et télécharger notre logiciel, alors passons à l'étape suivante !

Étape 4: Codez-le: Logiciel

Codez-le: logiciel !
Codez-le: logiciel !
Codez-le: logiciel !
Codez-le: logiciel !

1. Sur votre PC, ouvrez WinSCP et connectez-vous à votre Pi. Créez un dossier Lobe dans le répertoire personnel de votre Pi et créez un dossier modèle dans ce répertoire.

2. Faites glisser le contenu du dossier Lobe TF obtenu sur le Pi. Notez le chemin du fichier: /home/pi/Lobe/model

3. Sur le Pi, ouvrez un terminal et téléchargez la bibliothèque lobe-python pour Python3 en exécutant les commandes bash suivantes:

pip3 installer

pip3 installer le lobe

4. Téléchargez le code Trash Classifier (rpi_trash_classifier.py) à partir de ce référentiel sur le Pi (cliquez sur le bouton "Code" comme indiqué sur la photo 1).

  • Vous préférez copier/coller ? Obtenez le code brut ici.
  • Vous préférez télécharger sur votre ordinateur ? Téléchargez le référentiel/code sur votre ordinateur, puis transférez le code Python vers le Pi via WinSCP (ou votre programme de transfert de fichiers à distance préféré).

5. Une fois que vous avez connecté le matériel aux broches GPIO du Pi, lisez l'exemple de code et mettez à jour les chemins de fichiers si nécessaire:

  • Ligne 29: chemin d'accès au modèle Lobe TF
  • Lignes 47 et 83: chemin d'accès aux images capturées via la caméra Pi

6. Si nécessaire, mettez à jour les étiquettes de modèle dans le code pour qu'elles correspondent exactement aux étiquettes de votre modèle Lobe (y compris les majuscules, la ponctuation, etc.):

  • Ligne 57: « ordures »
  • Ligne 60: « recycler »
  • Ligne 63: « compost »
  • Ligne 66: « installation de déchets dangereux »
  • Ligne 69: "pas poubelle !"

7. Exécutez le programme à l'aide de Python3 dans la fenêtre du terminal:

python3 rpi_trash_classifier.py

Étape 5: Testez-le: exécutez le programme

Testez-le: exécutez le programme !
Testez-le: exécutez le programme !
Testez-le: exécutez le programme !
Testez-le: exécutez le programme !
Testez-le: exécutez le programme !
Testez-le: exécutez le programme !

Aperçu du programme

Lorsque vous exécutez le programme pour la première fois, le chargement de la bibliothèque TensorFlow et du modèle Lobe ML prend un certain temps. Lorsque le programme est prêt à capturer une image, le voyant d'état (LED blanche) clignote.

Une fois que vous avez pris une image, le programme comparera l'image au modèle Lobe ML et produira la prédiction résultante (ligne 83). La sortie détermine quel voyant est allumé: jaune (ordures), bleu (recyclage), vert (compost) ou rouge (déchets dangereux).

Si aucune des LED indicatrices ne s'allume et que la LED d'état repasse en mode impulsion, cela signifie que l'image capturée n'était "pas poubelle", en d'autres termes, reprenez la photo !

Capturer une image

Appuyez sur le bouton-poussoir pour capturer une image. Notez que vous devrez peut-être maintenir le bouton-poussoir enfoncé pendant au moins 1 s pour que le programme enregistre la presse. Il est recommandé de prendre quelques images de test, puis de les ouvrir sur le bureau pour mieux comprendre la vue et le cadre de la caméra.

Pour laisser à l'utilisateur le temps de positionner l'objet et pour que les niveaux de luminosité de la caméra s'ajustent, il faut environ 5 secondes pour capturer complètement une image. Vous pouvez modifier ces paramètres dans le code (lignes 35 et 41), mais gardez à l'esprit que la Fondation Pi recommande un minimum de 2 s pour le réglage du niveau de lumière.

Dépannage

Le plus grand défi est de s'assurer que l'image capturée correspond à ce que nous attendons, alors prenez le temps d'examiner les images et de comparer les résultats attendus avec la sortie LED de l'indicateur. Si nécessaire, vous pouvez transmettre des images au modèle Lobe ML pour une inférence directe et une comparaison plus rapide.

Quelques points à noter:

  • La bibliothèque TensorFlow lancera probablement des messages d'avertissement, ce qui est typique de la version utilisée dans cet exemple de code.
  • Les étiquettes de prédiction doivent être exactement telles qu'elles sont écrites dans la fonction led_select(), y compris les majuscules, la ponctuation et l'espacement. Assurez-vous de les changer si vous avez un modèle de lobe différent.
  • Le Pi nécessite une alimentation électrique stable. Le voyant d'alimentation du Pi doit être rouge vif et fixe.
  • Si une ou plusieurs LED ne s'allument pas comme prévu, vérifiez en les forçant avec la commande:

red_led.on()

Étape 6: (Facultatif) Construisez-le: Finalisez votre circuit

(Facultatif) Construisez-le: finalisez votre circuit !
(Facultatif) Construisez-le: finalisez votre circuit !
(Facultatif) Construisez-le: finalisez votre circuit !
(Facultatif) Construisez-le: finalisez votre circuit !
(Facultatif) Construisez-le: finalisez votre circuit !
(Facultatif) Construisez-le: finalisez votre circuit !

Maintenant que nous avons testé et, si nécessaire, débogué, notre projet pour qu'il fonctionne comme prévu, nous sommes prêts à souder notre circuit !

Remarque: si vous n'avez pas de fer à souder, vous pouvez sauter cette étape. Une alternative consiste à enduire les connexions des fils de colle chaude (cette option vous permettra de réparer/ajouter/utiliser des choses plus tard, mais est plus susceptible de se casser), ou d'utiliser de l'époxy ou une colle permanente similaire (cette option sera beaucoup plus durable mais vous ne pourrez pas utiliser le circuit ou potentiellement le Pi après avoir fait cela)

Commentaire rapide sur mes choix de conception (Photo 1):

  • J'ai opté pour des cavaliers femelles pour les LED et Pi GPIO car ils me permettent de supprimer les LED et d'échanger les couleurs ou de les déplacer si nécessaire. Vous pouvez les ignorer si vous souhaitez rendre les connexions permanentes.
  • De même, j'ai choisi un connecteur JST pour le bouton poussoir.

En avant pour construire

1. Coupez chacun des cavaliers femelles en deux (oui, tous !). À l'aide de pinces à dénuder, retirez environ 1/4 (1/2 cm) de l'isolant du fil.

2. Pour chacune des LED, soudez une résistance de 220Ω à la branche négative (la plus courte). (Photo 2)

3. Coupez un petit morceau d'environ 1 (2 cm) de gaine thermorétractable et poussez sur la jonction de la LED et de la résistance. Assurez-vous que l'autre patte de la résistance est accessible, puis chauffez la gaine thermorétractable jusqu'à ce qu'elle fixe le joint. (Photo 3)

4. Insérez chaque LED dans une paire de cavaliers femelles. (Photo 4)

5. Étiquetez les cavaliers (par exemple avec du ruban adhésif), puis soudez les cavaliers sur votre carte de circuit imprimé (PCB). (Photo 5)

6. Ensuite, utilisez un cavalier femelle (coupé) pour connecter chaque LED à sa broche Pi GPIO respective. Soudez et étiquetez un fil de liaison de manière à ce que le métal nu se connecte à la patte LED positive via le PCB. (Photo 5)

Remarque: L'endroit où vous soudez ce fil dépendra de la disposition de votre PCB. Vous pouvez également souder ce fil directement au fil de liaison positif de la LED.

7. Soudez une résistance de 220Ω à l'extrémité négative (noire) du connecteur JST. (Photo 6)

8. Soudez le connecteur JST et la résistance au bouton poussoir. (Photo 6)

9. Connectez les cavaliers M-à-F entre le connecteur du bouton-poussoir et les broches GPIO (rappel: le noir est GND).

10. Enduire les connexions PCB de colle chaude ou d'époxy pour une connexion plus sûre.

Remarque: si vous choisissez d'utiliser de l'époxy, vous ne pourrez peut-être pas utiliser les broches GPIO du Pi pour d'autres projets à l'avenir. Si cela vous inquiète, ajoutez un câble ruban GPIO et connectez-y plutôt les fils de liaison.

Étape 7: (Facultatif) Construisez-le: cas

(Facultatif) Construisez-le: cas !
(Facultatif) Construisez-le: cas !
(Facultatif) Construisez-le: cas !
(Facultatif) Construisez-le: cas !
(Facultatif) Construisez-le: cas !
(Facultatif) Construisez-le: cas !
(Facultatif) Construisez-le: cas !
(Facultatif) Construisez-le: cas !

Créez un boîtier pour votre Pi qui maintiendra la caméra, le bouton-poussoir et les LED en place tout en protégeant le Pi. Concevez votre propre boîtier ou suivez nos instructions de construction ci-dessous pour prototyper rapidement un boîtier en carton !

  1. Sur le dessus de la petite boîte en carton, tracez les emplacements du bouton-poussoir, du voyant d'état, des voyants d'identification et de la fenêtre de la caméra pi (Photo 1).

    Remarque: la fenêtre de la caméra Pi doit mesurer environ 3/4" x 1/2"

  2. À l'aide de votre couteau de précision, découpez les traces.

    Remarque: vous pouvez tester les tailles au fur et à mesure (Photo 1)

  3. Facultatif: Peignez le boîtier ! J'ai opté pour la peinture en aérosol:)
  4. Découpez un cache "fenêtre" rectangulaire pour la caméra Pi (Photo 4) et collez-le à l'intérieur de la boîte
  5. Enfin, découpez la fente pour le câble d'alimentation Pi.

    Il est recommandé d'installer d'abord tous les composants électroniques pour localiser le meilleur emplacement pour la fente du câble d'alimentation pi

Étape 8: installez et déployez

Installez et déployez !
Installez et déployez !

C'est ça! Vous êtes prêt à installer et déployer votre projet ! Placez le boîtier au-dessus de vos poubelles, branchez le Pi et exécutez le programme pour obtenir un moyen plus rapide et plus fiable de réduire nos déchets. Yay!

Aller de l'avant

  • Partagez vos projets et idées avec d'autres personnes via la communauté Lobe Reddit !
  • Consultez le référentiel Lobe Python GitHub pour un aperçu général sur la façon d'utiliser Python pour déployer une plus grande variété de projets Lobe
  • Des questions ou des demandes de projets ? Laissez un commentaire sur ce projet ou contactez-nous directement: [email protected]

Conseillé: