Sommario:

Crea un classificatore Pi Trash con ML!: 8 passaggi (con immagini)
Crea un classificatore Pi Trash con ML!: 8 passaggi (con immagini)

Video: Crea un classificatore Pi Trash con ML!: 8 passaggi (con immagini)

Video: Crea un classificatore Pi Trash con ML!: 8 passaggi (con immagini)
Video: Rajat Arya and Yucheng Low - Building Machine Learning Applications in Python 2024, Dicembre
Anonim
Crea un classificatore di rifiuti Pi con ML!
Crea un classificatore di rifiuti Pi con ML!
Crea un classificatore di rifiuti Pi con ML!
Crea un classificatore di rifiuti Pi con ML!

Il progetto Trash Classifier, affettuosamente noto come "Dove va?!", è progettato per rendere più veloce e affidabile lo smaltimento delle cose.

Questo progetto utilizza un modello di Machine Learning (ML) addestrato in Lobe, un generatore di modelli ML adatto ai principianti (nessun codice!), per identificare se un oggetto va nella spazzatura, nel riciclaggio, nel compost o nei rifiuti pericolosi. Il modello viene quindi caricato su un computer Raspberry Pi 4 per renderlo utilizzabile ovunque si trovino bidoni della spazzatura!

Questo tutorial ti spiega come creare il tuo progetto di classificatore di rifiuti su un Raspberry Pi da un modello Lobe TensorFlow in Python3.

Difficoltà: Principiante++ (una certa conoscenza di circuiti e codice è utile)

Tempo di lettura: 5 min

Tempo di costruzione: 60 - 90 minuti

Costo: ~ $ 70 (incluso Pi 4)

Forniture:

Software (lato PC)

  • Lobo
  • WinSCP (o altro metodo di trasferimento file SSH, può utilizzare CyberDuck per Mac)
  • terminale
  • Connessione desktop remoto o RealVNC

Hardware

  • Raspberry Pi, scheda SD e alimentazione USB-C (5 V, 2,5 A)
  • Fotocamera Pi
  • Premi il bottone
  • 5 LED (4 LED di segnalazione e 1 LED di stato)

    • LED giallo: spazzatura
    • LED blu: riciclare
    • LED verde: compost
    • LED rosso: rifiuti pericolosi
    • LED bianco: stato
  • 6 resistenze da 220 Ohm
  • 10 ponticelli da M a M
  • Tagliere, mezza misura

Se scegli di saldare:

  • 1 connettore JST, solo estremità femmina
  • 2 ponticelli da M a F
  • 10 ponticelli da F a F
  • PCB

Allegato

  • Custodia del progetto (ad es. scatola di cartone, legno o plastica, circa 6" x 5" x 4")
  • Quadrato di plastica trasparente da 0,5" x 0,5" (2 cm x 2 cm)

    Per esempio. da un coperchio di plastica per contenitori per alimenti

  • Velcro

Utensili

  • Pinza tagliafili
  • Coltello di precisione (ad es. coltello esatto) e tappetino da taglio
  • Saldatore (opzionale)
  • Strumento hot melt (o altra colla non conduttiva - la resina epossidica funziona benissimo ma è permanente)

Passaggio 1: prima di iniziare

Prima di iniziare
Prima di iniziare

Questo progetto presuppone che tu stia iniziando con un Raspberry Pi completamente configurato in una configurazione senza testa. Ecco una guida per principianti su come farlo.

Aiuta anche ad avere una certa conoscenza di quanto segue:

  1. Familiarità con il Raspberry Pi

    • Ecco una pratica guida introduttiva!
    • Utile anche: iniziare con la fotocamera Pi
  2. Lettura e modifica del codice Python (non sarà necessario scrivere un programma, è sufficiente modificare)

    Introduzione a Python con Raspberry Pi

  3. Leggere gli schemi elettrici di Fritzing
  4. Usando una breadboard

    Come usare un tutorial sulla breadboard

Scopri dove finisce la tua spazzatura

Ogni città degli Stati Uniti (e suppongo che il mondo) abbia i propri rifiuti/riciclaggio/compost/ecc. sistema di raccolta. Ciò significa che per creare un classificatore di rifiuti accurato, dovremo 1) creare un modello ML personalizzato (lo tratteremo nel passaggio successivo, nessun codice!) e 2) sapere dove va ogni pezzo di spazzatura.

Dato che non sempre conoscevo il cestino corretto per ogni oggetto che usavo per addestrare il mio modello, ho usato il volantino Seattle Utilities (Foto 1), e anche questo pratico "Dove va a finire?" strumento di ricerca per la città di Seattle! Controlla quali risorse sono disponibili nella tua città cercando l'utilità di raccolta dei rifiuti della tua città e sfogliando il suo sito web.

Passaggio 2: crea un modello ML personalizzato in Lobe

Crea un modello ML personalizzato in Lobe
Crea un modello ML personalizzato in Lobe
Crea un modello ML personalizzato in Lobe
Crea un modello ML personalizzato in Lobe
Crea un modello ML personalizzato in Lobe
Crea un modello ML personalizzato in Lobe
Crea un modello ML personalizzato in Lobe
Crea un modello ML personalizzato in Lobe

Lobe è uno strumento facile da usare che ha tutto il necessario per dare vita alle tue idee di machine learning. Mostragli esempi di ciò che vuoi che faccia e addestra automaticamente un modello di machine learning personalizzato che può essere esportato per dispositivi e app perimetrali. Non richiede alcuna esperienza per iniziare. Puoi allenarti sul tuo computer gratuitamente!

Ecco una rapida panoramica su come utilizzare Lobe:

1. Aprire il programma Lobe e creare un nuovo progetto.

2. Scatta o importa foto ed etichettale nelle categorie appropriate. (Foto 1) Avremo bisogno di queste etichette più avanti nella parte software del progetto.

Esistono due modi per importare le foto:

  1. Scatta foto di oggetti direttamente dalla webcam del tuo computer, oppure
  2. Importa foto da cartelle esistenti sul tuo computer.

    Tieni presente che il nome della cartella delle foto verrà utilizzato come nome dell'etichetta della categoria, quindi assicurati che corrisponda alle etichette esistenti

A parte: ho finito per usare entrambi i metodi, poiché più foto hai, più accurato è il tuo modello.

3. Utilizzare la funzione "Riproduci" per testare l'accuratezza del modello. Modifica le distanze, l'illuminazione, la posizione delle mani, ecc. per identificare dove si trova il modello e dove non è preciso. Aggiungi altre foto se necessario. (Foto 3 - 4)

4. Quando sei pronto, esporta il tuo modello Lobe ML in un formato TensorFlow (TF) Lite.

Suggerimenti:

  • Prima di importare le foto, crea un elenco di tutte le categorie di cui hai bisogno e di come vuoi etichettarle (ad es. "rifiuti, " "riciclaggio, " "compost, " ecc.)

    Nota: utilizzare le stesse etichette mostrate nella foto sopra "Etichette modello lobo" per ridurre la quantità di codice che è necessario modificare

  • Includi una categoria per "non spazzatura" che contenga foto di qualsiasi altra cosa possa essere presente nella foto (ad esempio le mani e le braccia, lo sfondo, ecc.)
  • Se possibile, scatta foto dalla fotocamera Pi e importa in Lobe. Ciò migliorerà notevolmente la precisione del tuo modello!
  • Hai bisogno di più foto? Dai un'occhiata ai set di dati open source su Kaggle, incluso questo set di immagini per la classificazione dei rifiuti!
  • Serve ancora aiuto? Connettiti con la community di Lobe su Reddit!

Passaggio 3: costruiscilo: hardware

Costruiscilo: hardware!
Costruiscilo: hardware!
Costruiscilo: hardware!
Costruiscilo: hardware!
Costruiscilo: hardware!
Costruiscilo: hardware!

1. Collega con attenzione la fotocamera Pi a Pi (visita la guida introduttiva di Pi Foundation per ulteriori informazioni). (Foto 1)

2. Seguire lo schema elettrico per collegare il pulsante e i LED ai pin GPIO Pi.

  • Pulsante: collegare una gamba del pulsante al pin GPIO 2. Collegare l'altra, tramite un resistore, a un pin GPIO GND.
  • LED giallo: collegare la gamba positiva (più lunga) al pin 17 GPIO. Collegare l'altra gamba, tramite un resistore, a un pin GPIO GND.
  • LED blu: collegare la gamba positiva al pin 27 del GPIO. Collegare l'altra gamba, tramite un resistore, a un pin GPIO GND.
  • LED verde: collegare la gamba positiva al pin 22 GPIO. Collegare l'altra gamba, tramite un resistore, a un pin GPIO GND.
  • LED rosso: collegare la gamba positiva al pin 23 GPIO. Collegare l'altra gamba, tramite un resistore, a un pin GPIO GND.
  • LED bianco: collegare la gamba positiva al pin 24 GPIO. Collegare l'altra gamba, tramite un resistore, a un pin GPIO GND.

3. Si consiglia di testare il circuito su una breadboard ed eseguire il programma prima di saldare o rendere permanenti le connessioni. Per fare ciò, dovremo scrivere e caricare il nostro programma software, quindi andiamo al passaggio successivo!

Passaggio 4: codificalo: software

Codificalo: software!
Codificalo: software!
Codificalo: software!
Codificalo: software!

1. Sul tuo PC, apri WinSCP e connettiti al tuo Pi. Crea una cartella Lobe nella directory principale del tuo Pi e crea una cartella del modello in quella directory.

2. Trascina il contenuto della cartella Lobe TF risultante sul Pi. Prendere nota del percorso del file: /home/pi/Lobe/model

3. Sul Pi, apri un terminale e scarica la libreria lobe-python per Python3 eseguendo i seguenti comandi bash:

pip3 installa

pip3 installa lobo

4. Scarica il codice del classificatore del cestino (rpi_trash_classifier.py) da questo repository sul Pi (fai clic sul pulsante "Codice" come mostrato nella foto 1).

  • Preferisci copiare/incollare? Ottieni il codice grezzo qui.
  • Preferisci scaricare sul tuo computer? Scarica il repository/codice sul tuo computer, quindi trasferisci il codice Python sul Pi tramite WinSCP (o il tuo programma di trasferimento file remoto preferito).

5. Dopo aver collegato l'hardware ai pin GPIO del Pi, leggi il codice di esempio e aggiorna i percorsi dei file secondo necessità:

  • Riga 29: percorso file per il modello Lobe TF
  • Righe 47 e 83: percorso file per le immagini catturate tramite Pi Camera

6. Se necessario, aggiorna le etichette del modello nel codice in modo che corrispondano esattamente alle etichette nel tuo modello di lobo (incluse lettere maiuscole, punteggiatura, ecc.):

  • Riga 57: "spazzatura"
  • Riga 60: "riciclare"
  • Riga 63: "compost"
  • Riga 66: "impianto rifiuti pericolosi"
  • Riga 69: "non spazzatura!"

7. Esegui il programma usando Python3 nella finestra del terminale:

python3 rpi_trash_classifier.py

Passaggio 5: provalo: esegui il programma

Provalo: esegui il programma!
Provalo: esegui il programma!
Provalo: esegui il programma!
Provalo: esegui il programma!
Provalo: esegui il programma!
Provalo: esegui il programma!

Osservazione del Programma

Quando esegui il programma per la prima volta, ci vorrà del tempo per caricare la libreria TensorFlow e il modello Lobe ML. Quando il programma è pronto per acquisire un'immagine, la spia di stato (LED bianco) lampeggerà.

Dopo aver scattato un'immagine, il programma confronterà l'immagine con il modello Lobe ML e produrrà la previsione risultante (riga 83). L'uscita determina quale luce si accende: gialla (rifiuti), blu (riciclaggio), verde (compost) o rossa (rifiuti pericolosi).

Se nessuno degli indicatori LED si accende e il LED di stato torna in modalità impulso, significa che l'immagine catturata era "non spazzatura", in altre parole, riscatta la foto!

Catturare un'immagine

Premere il pulsante per acquisire un'immagine. Si noti che potrebbe essere necessario tenere premuto il pulsante per almeno 1 secondo affinché il programma registri la stampa. Si consiglia di scattare alcune immagini di prova, quindi aprirle sul desktop per comprendere meglio la visualizzazione e l'inquadratura della fotocamera.

Per consentire all'utente di posizionare l'oggetto e regolare i livelli di luce della fotocamera, sono necessari circa 5 secondi per acquisire completamente un'immagine. Puoi modificare queste impostazioni nel codice (righe 35 e 41), ma tieni presente che la Pi Foundation consiglia un minimo di 2 secondi per la regolazione del livello di luce.

Risoluzione dei problemi

La sfida più grande è garantire che l'immagine acquisita sia quella che ci aspettiamo, quindi prenditi del tempo per rivedere le immagini e confrontare i risultati previsti con l'uscita del LED indicatore. Se necessario, puoi passare le immagini al modello Lobe ML per un'inferenza diretta e un confronto più rapido.

Alcune cose da notare:

  • La libreria TensorFlow probabilmente genererà alcuni messaggi di avviso, questo è tipico per la versione utilizzata in questo codice di esempio.
  • Le etichette di previsione devono essere esattamente come scritte nella funzione led_select(), comprese le maiuscole, la punteggiatura e la spaziatura. Assicurati di cambiarli se hai un modello di lobo diverso.
  • Il Pi richiede un'alimentazione costante. La spia di alimentazione del Pi dovrebbe essere rossa brillante e fissa.
  • Se uno o più led non si accendono quando previsto, verificare forzandoli con il comando:

red_led.on()

Passaggio 6: (Facoltativo) Costruiscilo: finalizza il tuo circuito

(Facoltativo) Costruiscilo: finalizza il tuo circuito!
(Facoltativo) Costruiscilo: finalizza il tuo circuito!
(Facoltativo) Costruiscilo: finalizza il tuo circuito!
(Facoltativo) Costruiscilo: finalizza il tuo circuito!
(Facoltativo) Costruiscilo: finalizza il tuo circuito!
(Facoltativo) Costruiscilo: finalizza il tuo circuito!

Ora che abbiamo testato e, se necessario, eseguito il debug, il nostro progetto in modo che funzioni come previsto, siamo pronti per saldare il nostro circuito!

Nota: se non si dispone di un saldatore, è possibile saltare questo passaggio. Un'alternativa è rivestire i collegamenti dei cavi con colla a caldo (questa opzione ti permetterà di aggiustare/aggiungere/usare le cose in un secondo momento, ma è più probabile che si rompa) o usare una colla epossidica o una colla permanente simile (questa opzione sarà molto più duratura ma non sarai in grado di utilizzare il circuito o potenzialmente il Pi dopo averlo fatto)

Commento veloce sulle mie scelte di design (Foto 1):

  • Ho optato per i cavi jumper femmina per i LED e Pi GPIO perché mi consentono di rimuovere i LED e scambiare i colori o spostarli se necessario. Puoi saltarli se vuoi rendere permanenti le connessioni.
  • Allo stesso modo, ho scelto un connettore JST per il pulsante.

Avanti con la costruzione

1. Tagliare a metà ciascuno dei fili del ponticello femmina (sì, tutti!). Usando spelafili, rimuovere circa 1/4 (1/2 cm) dell'isolamento del cavo.

2. Per ciascuno dei LED, saldare un resistore da 220Ω alla gamba negativa (più corta). (Foto 2)

3. Tagliare un piccolo pezzo, circa 1 (2 cm) di tubo termoretraibile e spingere sopra la giunzione del LED e del resistore. Assicurarsi che l'altra gamba del resistore sia accessibile, quindi riscaldare il tubo termoretraibile finché non fissa il giunto. (Foto 3)

4. Inserire ciascun LED in una coppia di cavi di collegamento femmina. (Foto 4)

5. Etichettare i cavi dei ponticelli (ad es. con del nastro adesivo), quindi saldare i cavi dei ponticelli sulla scheda a circuito stampato (PCB). (Foto 5)

6. Quindi, utilizzare un ponticello femmina (tagliato) per collegare ciascun LED al rispettivo pin GPIO Pi. Saldare ed etichettare un ponticello in modo che il metallo nudo si colleghi alla gamba del LED positivo tramite il PCB. (Foto 5)

Nota: il punto in cui si salda questo cavo dipenderà dal layout del PCB. Puoi anche saldare questo cavo direttamente al cavo del ponticello del LED positivo.

7. Saldare un resistore da 220Ω all'estremità negativa (nera) del connettore JST. (Foto 6)

8. Saldare il connettore JST e la resistenza al pulsante. (Foto 6)

9. Collegare i fili del ponticello da M a F tra il connettore del pulsante e i pin GPIO (promemoria: il nero è GND).

10. Rivestire le connessioni PCB con colla a caldo o resina epossidica per una connessione più sicura.

Nota: se scegli di utilizzare la resina epossidica, potresti non essere in grado di utilizzare i pin GPIO del Pi per altri progetti in futuro. Se sei preoccupato per questo, aggiungi un cavo a nastro GPIO e collega invece i fili del ponticello a quello.

Passaggio 7: (Facoltativo) Costruiscilo: caso

(Facoltativo) Costruiscilo: Caso!
(Facoltativo) Costruiscilo: Caso!
(Facoltativo) Costruiscilo: Caso!
(Facoltativo) Costruiscilo: Caso!
(Facoltativo) Costruiscilo: Caso!
(Facoltativo) Costruiscilo: Caso!
(Facoltativo) Costruiscilo: Caso!
(Facoltativo) Costruiscilo: Caso!

Crea una custodia per il tuo Pi che manterrà la fotocamera, il pulsante e i LED in posizione proteggendo allo stesso tempo il Pi. Progetta la tua custodia o segui le nostre istruzioni di costruzione di seguito per creare rapidamente un prototipo di una custodia in cartone!

  1. Sulla parte superiore della piccola scatola di cartone, traccia le posizioni del pulsante, della spia di stato, delle spie di identificazione e della finestra della fotocamera pi (foto 1).

    Nota: la finestra della fotocamera Pi dovrebbe essere di circa 3/4" x 1/2"

  2. Usando il tuo coltello di precisione, ritaglia le tracce.

    Nota: potresti voler testare le taglie man mano che procedi (foto 1)

  3. Opzionale: dipingi la custodia! Ho optato per la vernice spray:)
  4. Ritaglia una "finestra" rettangolare per la fotocamera Pi (Foto 4) e incollala all'interno della scatola
  5. Infine, ritaglia lo slot per il cavo di alimentazione Pi.

    Si consiglia di installare prima tutta l'elettronica per individuare il posto migliore per lo slot del cavo di alimentazione pi

Passaggio 8: installa e distribuisci

Installa e distribuisci!
Installa e distribuisci!

Questo è tutto! Sei pronto per installare e distribuire il tuo progetto! Posiziona il contenitore sopra i bidoni della spazzatura, collega il Pi ed esegui il programma per ottenere un modo più rapido e affidabile di ridurre i nostri rifiuti. Sìì!

Andando avanti

  • Condividi i tuoi progetti e le tue idee con altre persone tramite la community di Lobe Reddit!
  • Dai un'occhiata al repository GitHub di Lobe Python per una panoramica generale su come utilizzare Python per distribuire una più ampia varietà di progetti Lobe
  • Domande o richieste di progetto? Lascia un commento su questo progetto o contattaci direttamente: [email protected]

Consigliato: