Taula de continguts:

Feu un classificador de paperera Pi amb ML: 8 passos (amb imatges)
Feu un classificador de paperera Pi amb ML: 8 passos (amb imatges)

Vídeo: Feu un classificador de paperera Pi amb ML: 8 passos (amb imatges)

Vídeo: Feu un classificador de paperera Pi amb ML: 8 passos (amb imatges)
Vídeo: Праздник. Новогодняя комедия 2024, Desembre
Anonim
Feu un classificador de paperera Pi amb ML
Feu un classificador de paperera Pi amb ML
Feu un classificador de paperera Pi amb ML
Feu un classificador de paperera Pi amb ML

El projecte Trash Classifier, conegut afectuosament com "On va ?!", està dissenyat per llençar les coses més ràpidament i més fiable.

Aquest projecte utilitza un model d’aprenentatge automàtic (ML) format a Lobe, un constructor de models ML per a principiants (sense codi!), Per identificar si un objecte entra a les escombraries, el reciclatge, el compost o els residus perillosos. A continuació, el model es carrega a un ordinador Raspberry Pi 4 per fer-lo útil allà on pugueu trobar contenidors d’escombraries.

Aquest tutorial us explica com podeu crear el vostre propi projecte de classificador de paperera en un Raspberry Pi a partir d’un model Lobe TensorFlow a Python3.

Dificultat: principiant ++ (alguns coneixements sobre circuits i codificació són útils)

Temps de lectura: 5 min

Temps de construcció: 60 - 90 min

Cost: ~ 70 dòlars (inclòs el Pi 4)

Subministraments:

Programari (costat de l'ordinador)

  • Lòbul
  • WinSCP (o un altre mètode de transferència de fitxers SSH, pot utilitzar CyberDuck per a Mac)
  • Terminal
  • Connexió d'escriptori remot o RealVNC

Maquinari

  • Raspberry Pi, targeta SD i font d'alimentació USB-C (5V, 2.5A)
  • Càmera Pi
  • Polsador
  • 5 LED (4 LED indicadors i 1 LED d'estat)

    • LED groc: escombraries
    • LED blau: recicla
    • LED verd: compost
    • LED vermell: residus perillosos
    • LED blanc: estat
  • 6 resistències de 220 Ohm
  • 10 cables de pont de M a M
  • Taula de pa, de mida mitjana

Si decidiu soldar:

  • 1 connector JST, només extrem femella
  • 2 cables de pont de M a F
  • 10 cables de pont de F a F
  • PCB

Recinte

  • Caixa del projecte (p. Ex. Caixa de cartró, fusta o plàstic, aprox. 6 "x 5" x 4 ")
  • Quadrat de plàstic transparent de 2 "x 2 cm (0,5" x 0,5 ")

    Per exemple. d’una tapa de recipient de plàstic per a aliments

  • Velcro

Eines

  • Talladors de filferro
  • Ganivet de precisió (per exemple, ganivet exacto) i estora de tall
  • Soldador (opcional)
  • Eina de fusió en calent (o una altra cola no conductora: l’epoxi funciona molt bé, però és permanent)

Pas 1: Abans de començar

Abans de començar
Abans de començar

Aquest projecte suposa que comenceu amb un Raspberry Pi completament configurat en una configuració sense cap. Aquí teniu una guia per a principiants sobre com fer-ho.

També ajuda a tenir un cert coneixement del següent:

  1. Conèixer el Raspberry Pi

    • Aquí teniu una guia útil per començar.
    • També és útil: Introducció a la càmera Pi
  2. Lectura i edició de codi Python (no cal que escriviu un programa, només cal que editeu)

    Introducció a Python amb el Raspberry Pi

  3. Lectura de diagrames de cablejat de Fritzing
  4. Utilitzant una pissarra

    Com s'utilitza un tutorial de taulers de revisió

Esbrineu cap a on va la paperera

Cada ciutat dels Estats Units (i suposo que el món) té la seva pròpia brossa / reciclatge / compost / etc. sistema de recollida. Això vol dir que per fer un classificador d’escombraries precís, haurem de 1) construir un model de ML personalitzat (tractarem això al pas següent, sense codi!) I 2) saber on va cada tros d’escombraries.

Com que no sempre sabia la paperera adequada per a cada element que utilitzava per entrenar el meu model, vaig utilitzar el fulletó de Seattle Utilities (Foto 1), i també aquest útil "On va?" eina de cerca de la ciutat de Seattle. Consulteu quins recursos hi ha disponibles a la vostra ciutat si cerqueu la utilitat de recollida d’escombraries de la vostra ciutat i consulteu el lloc web.

Pas 2: creeu un model de ML personalitzat a Lobe

Creeu un model de ML personalitzat a Lobe
Creeu un model de ML personalitzat a Lobe
Creeu un model de ML personalitzat a Lobe
Creeu un model de ML personalitzat a Lobe
Creeu un model de ML personalitzat a Lobe
Creeu un model de ML personalitzat a Lobe
Creeu un model de ML personalitzat a Lobe
Creeu un model de ML personalitzat a Lobe

Lobe és una eina fàcil d'utilitzar que conté tot el necessari per donar vida a les vostres idees d'aprenentatge automàtic. Mostreu-li exemples del que voleu que faci i formi automàticament un model d'aprenentatge automàtic personalitzat que es pugui exportar per a dispositius i aplicacions perimetrals. Per començar, no requereix cap experiència. Podeu entrenar al vostre propi ordinador de forma gratuïta.

Aquí teniu una descripció ràpida sobre com utilitzar Lobe:

1. Obriu el programa Lobe i creeu un projecte nou.

2. Feu o importeu fotos i etiqueteu-les en categories adequades. (Foto 1) Necessitarem aquestes etiquetes més endavant a la part de programari del projecte.

Hi ha dues maneres d'importar fotos:

  1. Feu fotos d’elements directament des de la càmera web de l’ordinador o bé
  2. Importeu fotos de carpetes existents a l'ordinador.

    Recordeu que el nom de la carpeta de fotos s'utilitzarà com a nom d'etiqueta de categoria, així que assegureu-vos que coincideixi amb les etiquetes existents

A part: vaig acabar fent servir els dos mètodes, ja que com més fotos tingueu, més precís serà el vostre model.

3. Utilitzeu la funció "Reprodueix" per provar la precisió del model. Canvieu les distàncies, la il·luminació, les posicions de les mans, etc. per identificar on és o no el model. Afegiu més fotos si cal. (Fotos 3-4)

4. Quan estigueu a punt, exporteu el model Lobe ML en format TensorFlow (TF) Lite.

Consells:

  • Abans d’importar fotos, feu una llista de totes les categories que necessiteu i de com les voleu etiquetar (per exemple, "escombraries", "reciclar", "compostar", etc.)

    Nota: Utilitzeu les mateixes etiquetes que es mostren a la foto "Etiquetes de models de lòbuls" per reduir la quantitat de codi que heu de canviar

  • Incloeu una categoria per a "no escombraries" que contingui fotos de qualsevol altra cosa (p. Ex. Les mans i els braços, el fons, etc.)
  • Si és possible, feu fotos de la càmera Pi i importeu-les a Lobe. Això millorarà molt la precisió del vostre model.
  • Necessiteu més fotos? Consulteu conjunts de dades de codi obert a Kaggle, inclòs aquest conjunt d'imatges de classificació de deixalles.
  • Necessiteu més ajuda? Connecteu-vos amb la comunitat Lobe a Reddit.

Pas 3: Creeu-lo: maquinari

Construeix-lo: maquinari
Construeix-lo: maquinari
Construeix-lo: maquinari
Construeix-lo: maquinari
Construeix-lo: maquinari
Construeix-lo: maquinari

1. Connecteu amb cura la càmera Pi a Pi (visiteu la guia d'introducció de la Fundació Pi per obtenir més informació). (Foto 1)

2. Seguiu l'esquema de cablejat per connectar el polsador i els LED als pins GPIO Pi.

  • Polsador: connecteu una pota del polsador al pin GPIO 2. Connecteu l'altra, mitjançant una resistència, a un pin GPIO GND.
  • LED groc: connecteu la cama positiva (més llarga) al pin GPIO 17. Connecteu l’altra cama, mitjançant una resistència, a un pin GPIO GND.
  • LED blau: connecteu la pota positiva al pin GPIO 27. Connecteu l’altra pota, mitjançant una resistència, a un pin GPIO GND.
  • LED verd: connecteu la pota positiva al pin 22. GPIO Connecteu l'altra pota, mitjançant una resistència, a un pin GPIO GND.
  • LED vermell: connecteu la pota positiva al pin GPIO 23. Connecteu l’altra pota, mitjançant una resistència, a un pin GPIO GND.
  • LED blanc: connecteu la pota positiva al pin GPIO 24. Connecteu l’altra pota, mitjançant una resistència, a un pin GPIO GND.

3. Es recomana provar el circuit en una taula de programació i executar el programa abans de soldar o fer que qualsevol de les connexions sigui permanent. Per fer-ho, haurem d’escriure i penjar el nostre programa, així que anem al següent pas.

Pas 4: Codi: programari

Codi: programari
Codi: programari
Codi: programari
Codi: programari

1. Al vostre ordinador, obriu WinSCP i connecteu-vos al Pi. Creeu una carpeta Lobe al directori inicial del vostre Pi i creeu una carpeta model en aquest directori.

2. Arrossegueu el contingut de la carpeta Lobe TF resultant al Pi. Anoteu la ruta del fitxer: / home / pi / Lobe / model

3. Al Pi, obriu un terminal i descarregueu la biblioteca lobe-python per a Python3 executant les ordres bash següents:

instal·lar pip3

pip3 instal·la el lòbul

4. Baixeu el codi classificador de la paperera (rpi_trash_classifier.py) des d'aquesta reposició al Pi (feu clic al botó "Codi" com es mostra a la foto 1).

  • Prefereix copiar / enganxar? Obteniu el codi en brut aquí.
  • Prefereixes descarregar-lo a l'ordinador? Baixeu el repo / codi a l'ordinador i, a continuació, transfereu el codi Python al Pi mitjançant WinSCP (o el programa de transferència de fitxers remot preferit).

5. Un cop hàgiu connectat el maquinari als pins GPIO del Pi, llegiu el codi d'exemple i actualitzeu els camins de fitxers segons calgui:

  • Línia 29: ruta de fitxers al model Lobe TF
  • Línies 47 i 83: ruta d’arxiu a les imatges capturades mitjançant la càmera Pi

6. Si cal, actualitzeu les etiquetes del model al codi perquè coincideixin exactament amb les etiquetes del model Lobe (incloses les majúscules, la puntuació, etc.):

  • 57 e línia
  • Línia 60: "reciclar"
  • Línia 63: "compost"
  • Línia 66: "instal·lació de residus perillosos"
  • Línia 69: "no escombraries!"

7. Executeu el programa mitjançant Python3 a la finestra del terminal:

python3 rpi_trash_classifier.py

Pas 5: proveu-ho: executeu el programa

Proveu-lo: executeu el programa
Proveu-lo: executeu el programa
Proveu-lo: executeu el programa
Proveu-lo: executeu el programa
Proveu-lo: executeu el programa
Proveu-lo: executeu el programa

Descripció general del programa

Quan executeu el programa per primer cop, trigareu a carregar la biblioteca TensorFlow i el model Lobe ML. Quan el programa estigui a punt per capturar una imatge, el llum d'estat (LED blanc) polsarà.

Un cop feta una imatge, el programa compararà la imatge amb el model Lobe ML i generarà la predicció resultant (línia 83). La sortida determina quina llum s’encén: groc (escombraries), blau (reciclar), verd (compost) o vermell (residus perillosos).

Si cap dels LED indicadors s'encén i el LED d'estat torna al mode de pols, significa que la imatge capturada "no és paperera", és a dir, torneu a fer la foto.

Captura d'una imatge

Premeu el botó per capturar una imatge. Tingueu en compte que és possible que hagueu de mantenir premut el botó durant almenys 1 s perquè el programa registri la premsa. Es recomana fer algunes imatges de prova i obrir-les a l'escriptori per comprendre millor la vista i el marc de la càmera.

Per permetre a l’usuari temps de posicionar l’objecte i ajustar els nivells de llum de la càmera, triga uns 5 segons a capturar completament una imatge. Podeu canviar aquests paràmetres al codi (línies 35 i 41), però tingueu present que la Fundació Pi recomana un mínim de 2 segons per ajustar el nivell de llum.

Resolució de problemes

El desafiament més gran és assegurar-nos que la imatge capturada sigui el que esperem, així que preneu-vos un temps per revisar les imatges i comparar els resultats esperats amb la sortida LED indicadora. Si cal, podeu passar imatges al model Lobe ML per obtenir inferències directes i comparar-les més ràpidament.

Algunes coses a tenir en compte:

  • És probable que la biblioteca TensorFlow llanci alguns missatges d’advertència; això és típic de la versió que s’utilitza en aquest codi de mostra.
  • Les etiquetes de predicció han de ser exactament com s’escriuen a la funció led_select (), incloses les majúscules, la puntuació i l’espaiat. Assegureu-vos de canviar-los si teniu un model de Lobe diferent.
  • El Pi requereix una font d'alimentació estable. La llum de potència del Pi ha de ser brillant i vermella contínua.
  • Si un o més LED no s’encenen quan s’espera, comproveu-los forçant-los amb l’ordre:

red_led.on ()

Pas 6: (Opcional) Construeix-lo: finalitza el circuit

(Opcional) Construeix-lo: finalitza el teu circuit
(Opcional) Construeix-lo: finalitza el teu circuit
(Opcional) Construeix-lo: finalitza el teu circuit
(Opcional) Construeix-lo: finalitza el teu circuit
(Opcional) Construeix-lo: finalitza el teu circuit
(Opcional) Construeix-lo: finalitza el teu circuit

Ara que hem provat i, si cal, depurat el nostre projecte perquè funcioni com s’esperava, estem preparats per soldar el nostre circuit.

Nota: si no teniu un soldador, podeu ometre aquest pas. Una alternativa és recobrir les connexions de filferro amb cola calenta (aquesta opció us permetrà arreglar / afegir / utilitzar coses més tard, però és més probable que es trenqui), o bé utilitzar epoxi o una cola permanent similar (aquesta opció serà molt més duradora però no podreu utilitzar el circuit ni potencialment el Pi després de fer-ho)

Comentari ràpid sobre les meves opcions de disseny (Foto 1):

  • Vaig optar per cables de pont femení per als LED i Pi GPIO perquè em permeten eliminar els LED i canviar els colors o moure’ls si cal. Podeu ometre-les si voleu que les connexions siguin permanents.
  • De la mateixa manera, vaig triar un connector JST per al polsador.

Endavant a la construcció

1. Talleu per la meitat cadascun dels cables de pont femení (sí, tots!). Feu servir separadors de filferro per treure aproximadament 1/4 (1/2 cm) de l'aïllament del filferro.

2. Per a cadascun dels LED, soldeu una resistència de 220Ω a la cama negativa (més curta). (Foto 2)

3. Tallar una peça petita, aproximadament 1 cm (2 cm) de tub termoretràctil i empènyer sobre el LED i la unió de la resistència. Assegureu-vos que l'altra pota de la resistència sigui accessible i, a continuació, escalfeu el tub retràctil fins que asseguri la junta. (Foto 3)

4. Introduïu cada LED en un parell de cables femella. (Foto 4)

5. Etiqueu els cables de pont (per exemple, amb cinta adhesiva) i, a continuació, soldeu els cables de pont a la vostra placa de circuit imprès (PCB). (Foto 5)

6. A continuació, utilitzeu un cable de pont femella (tallat) per connectar cada LED al seu pin Pi GPIO respectiu. Soldeu i etiqueteu un cable de pont de manera que el metall nu es connecti a la cama LED positiva a través del PCB. (Foto 5)

Nota: on soldeu aquest cable dependrà del vostre disseny de PCB. També podeu soldar aquest cable directament al cable de pont LED positiu.

7. Soldeu una resistència de 220Ω a l’extrem negatiu (negre) del connector JST. (Foto 6)

8. Soldeu el connector i la resistència JST al polsador (Foto 6)

9. Connecteu els cables de pont de M a F entre el connector del polsador i els pins GPIO (recordatori: el negre és GND).

10. Recobriu les connexions PCB en cola calenta o epoxi per obtenir una connexió més segura.

Nota: si escolliu utilitzar epoxi, és possible que no pugueu utilitzar els pins GPIO de Pi per a altres projectes en el futur. Si us preocupa això, afegiu un cable de cinta GPIO i connecteu-hi els cables del pont.

Pas 7: (Opcional) Construeix-lo: majúscules i minúscules

(Opcional) Build it: Case!
(Opcional) Build it: Case!
(Opcional) Build it: Case!
(Opcional) Build it: Case!
(Opcional) Build it: Case!
(Opcional) Build it: Case!
(Opcional) Build it: Case!
(Opcional) Build it: Case!

Creeu un recinte per al vostre Pi que mantingui la càmera, el polsador i els LED al seu lloc i que protegeixi també el Pi. Dissenyeu el vostre propi recinte o seguiu les nostres instruccions de construcció següents per prototipar ràpidament un recinte de cartró.

  1. A la part superior de la petita caixa de cartró, traqueu les ubicacions del polsador, la llum d'estat, els llums d'identificació i la finestra de la càmera pi (foto 1).

    Nota: la finestra de la càmera Pi ha de tenir aproximadament 3/4 "x 1/2"

  2. Amb el ganivet de precisió, retalleu les traces.

    Nota: potser voldreu provar les mides a mesura que aneu (Foto 1)

  3. Opcional: pinta la funda. Vaig optar per la pintura en aerosol:)
  4. Retalleu una tapa rectangular de "finestra" per a la càmera Pi (Foto 4) i enganxeu-la a l'interior de la caixa
  5. Finalment, talleu la ranura del cable d'alimentació Pi.

    Es recomana instal·lar primer tots els aparells electrònics per localitzar el millor lloc per a la ranura del cable d'alimentació pi

Pas 8: instal·leu-lo i implementeu-lo

Instal·lació i desplegament
Instal·lació i desplegament

Això és! Ja esteu a punt per instal·lar i desplegar el vostre projecte. Col·loqueu el recinte a sobre dels contenidors d’escombraries, connecteu el Pi i executeu el programa per obtenir una manera més ràpida i fiable de reduir els nostres residus. Visca!

De cara al futur

  • Comparteix els teus projectes i idees amb altres persones a través de la comunitat Lobe Reddit.
  • Consulteu el repositori Lobe Python GitHub per obtenir una visió general sobre com utilitzar Python per desplegar una àmplia varietat de projectes Lobe.
  • Teniu preguntes o sol·licituds de projecte? Deixa un comentari sobre aquest projecte o contacta amb nosaltres directament: [email protected]

Recomanat: