Innholdsfortegnelse:

Lag en Pi Trash Classifier With ML !: 8 trinn (med bilder)
Lag en Pi Trash Classifier With ML !: 8 trinn (med bilder)

Video: Lag en Pi Trash Classifier With ML !: 8 trinn (med bilder)

Video: Lag en Pi Trash Classifier With ML !: 8 trinn (med bilder)
Video: Recyclable Waste Classifier using Opencv Python | Computer Vision 2024, November
Anonim
Lag en Pi Trash Classifier med ML!
Lag en Pi Trash Classifier med ML!
Lag en Pi Trash Classifier med ML!
Lag en Pi Trash Classifier med ML!

Trash Classifier -prosjektet, kjærlig kjent som "Hvor går det ?!", er designet for å gjøre det å kaste ting raskere og mer pålitelig.

Dette prosjektet bruker en Machine Learning (ML) -modell opplært i Lobe, en nybegynnervennlig (ingen kode!) ML-modellbygger, for å identifisere om et objekt går i søppel, resirkulering, kompost eller farlig avfall. Modellen lastes deretter inn på en Raspberry Pi 4 -datamaskin for å gjøre den brukbar uansett hvor du finner søppelkasser!

Denne opplæringen viser deg hvordan du lager ditt eget Trash Classifier -prosjekt på en Raspberry Pi fra en Lobe TensorFlow -modell i Python3.

Vanskelighetsgrad: Nybegynner ++ (litt kunnskap m/ kretser og koding er nyttig)

Lesetid: 5 min

Byggetid: 60 - 90 min

Kostnad: ~ $ 70 (inkludert Pi 4)

Rekvisita:

Programvare (PC-side)

  • Lobe
  • WinSCP (eller annen SSH -filoverføringsmetode, kan bruke CyberDuck for Mac)
  • Terminal
  • Tilkobling til eksternt skrivebord eller RealVNC

Maskinvare

  • Bringebær Pi, SD-kort og USB-C strømforsyning (5V, 2,5A)
  • Pi kamera
  • Trykknapp
  • 5 lysdioder (4 indikatorlysdioder og 1 status -LED)

    • Gul LED: søppel
    • Blå LED: resirkuler
    • Grønn LED: kompost
    • Rød LED: farlig avfall
    • Hvit LED: status
  • 6 220 Ohm motstander
  • 10 M-til-M-hoppetråder
  • Brødbrett, halvstørrelse

Hvis du velger å lodde:

  • 1 JST -kontakt, kun hun -ende
  • 2 M-til-F-ledninger
  • 10 F-til-F jumperkabler
  • PCB

Innhegning

  • Prosjektkasse (f.eks. Papp, tre eller plastboks, ca. 6 "x 5" x 4 ")
  • 0,5 cm x 0,5 tommer (2 cm x 2 cm) kvadrat i klar plast

    F.eks. fra lokket til en matbeholder i plast

  • Borrelås

Verktøy

  • Avbitertang
  • Presisjonskniv (f.eks. Exacto -kniv) og skjærematte
  • Loddejern (valgfritt)
  • Smelteverktøy (eller annet ikke-ledende lim-epoksy fungerer bra, men er permanent)

Trinn 1: Før vi starter

Før vi starter
Før vi starter

Dette prosjektet forutsetter at du starter med en fullstendig konfigurert Raspberry Pi i en hodeløs konfigurasjon. Her er en nybegynnervennlig guide om hvordan du gjør dette.

Det hjelper også å ha litt kunnskap om følgende:

  1. Kjennskap til Raspberry Pi

    • Her er en praktisk startguide!
    • Også nyttig: Komme i gang med Pi -kameraet
  2. Lese og redigere Python -kode (du trenger ikke skrive et program, bare rediger)

    Introduksjon til Python med Raspberry Pi

  3. Lese Fritzing -koblingsskjemaer
  4. Bruke et brødbrett

    Hvordan bruke en brødbrettopplæring

Finn ut hvor søppelet ditt går

Hver by i USA (og jeg antar at kloden) har sitt eget søppel/resirkulering/kompost/osv. innsamlingssystem. Dette betyr at for å lage en nøyaktig søppelklassifisering må vi 1) bygge en tilpasset ML -modell (vi dekker dette i neste trinn - ingen kode!) Og 2) vite hvor hvert søppel går.

Siden jeg ikke alltid visste riktig beholder for hvert element jeg brukte til å trene modellen min, brukte jeg Seattle Utilities -flygebladet (foto 1), og også denne praktiske "Hvor går det?" oppslagsverktøy for byen Seattle! Sjekk hvilke ressurser som er tilgjengelige i byen din ved å slå opp i byens søppelinnsamlingsverktøy og lese nettstedet.

Trinn 2: Lag en tilpasset ML -modell i Lobe

Lag en tilpasset ML -modell i Lobe
Lag en tilpasset ML -modell i Lobe
Lag en tilpasset ML -modell i Lobe
Lag en tilpasset ML -modell i Lobe
Lag en tilpasset ML -modell i Lobe
Lag en tilpasset ML -modell i Lobe
Lag en tilpasset ML -modell i Lobe
Lag en tilpasset ML -modell i Lobe

Lobe er et brukervennlig verktøy som har alt du trenger for å få ideene dine om maskinlæring ut i livet. Vis det eksempler på hva du vil at den skal gjøre, og den trener automatisk en tilpasset maskinlæringsmodell som kan eksporteres for kant -enheter og apper. Det krever ingen erfaring å komme i gang. Du kan trene på din egen datamaskin gratis!

Her er en rask oversikt over hvordan du bruker Lobe:

1. Åpne Lobe -programmet og opprett et nytt prosjekt.

2. Ta eller importer bilder og merk dem i passende kategorier. (Foto 1) Vi trenger disse etikettene senere i programvaredelen av prosjektet.

Det er to måter å importere bilder på:

  1. Ta bilder av elementer direkte fra datamaskinens webkamera, eller
  2. Importer bilder fra eksisterende mapper på datamaskinen.

    Husk at fotomappens navn vil bli brukt som kategorietikettnavn, så sørg for at det samsvarer med eksisterende etiketter

Bortsett: Jeg endte opp med å bruke begge metodene, siden jo flere bilder du har, jo mer nøyaktig er modellen din.

3. Bruk "Play" -funksjonen for å teste modellens nøyaktighet. Endre avstander, belysning, håndposisjoner osv. For å identifisere hvor modellen er og ikke er nøyaktig. Legg til flere bilder etter behov. (Bilder 3-4)

4. Når du er klar, eksporterer du Lobe ML -modellen i et TensorFlow (TF) Lite -format.

Tips:

  • Før du importerer bilder, må du lage en liste over alle kategoriene du trenger og hvordan du vil merke dem (f.eks. Søppel, resirkulering, kompost osv.)

    Merk: Bruk de samme etikettene som vist på bildet "Lobe Model Labels" ovenfor for å redusere mengden kode du må endre

  • Inkluder en kategori for "ikke søppel" som har bilder av alt annet som kan være på bildet (f.eks. Hender og armer, bakgrunnen, etc.)
  • Ta om mulig bilder fra Pi -kameraet og importer til Lobe. Dette vil forbedre nøyaktigheten til modellen din sterkt!
  • Trenger du flere bilder? Sjekk datasett med åpen kildekode på Kaggle, inkludert dette bildesettet for søppelklassifisering!
  • Trenger du mer hjelp? Ta kontakt med Lobe -fellesskapet på Reddit!

Trinn 3: Bygg det: Maskinvare

Bygg det: Maskinvare!
Bygg det: Maskinvare!
Bygg det: Maskinvare!
Bygg det: Maskinvare!
Bygg det: Maskinvare!
Bygg det: Maskinvare!

1. Koble Pi -kameraet forsiktig til Pi (besøk Pi Foundation startguide for mer informasjon). (Bilde 1)

2. Følg koblingsskjemaet for å koble trykknappen og lysdiodene til Pi GPIO -pinnene.

  • Trykknapp: Koble det ene benet på trykknappen til GPIO -pinne 2. Koble det andre, via en motstand, til en GPIO GND -pinne.
  • Gul LED: Koble det positive (lengre) benet til GPIO -pinnen 17. Koble det andre benet, via en motstand, til en GPIO GND -pinne.
  • Blå LED: Koble det positive benet til GPIO -pinnen 27. Koble det andre benet, via en motstand, til en GPIO GND -pinne.
  • Grønn LED: Koble det positive benet til GPIO -pinnen 22. Koble det andre benet, via en motstand, til en GPIO GND -pinne.
  • Rød LED: Koble det positive benet til GPIO -pinnen 23. Koble det andre benet, via en motstand, til en GPIO GND -pinne.
  • Hvit LED: Koble det positive benet til GPIO -pinnen 24. Koble det andre benet, via en motstand, til en GPIO GND -pinne.

3. Det anbefales å teste kretsen på et brødbrett og kjøre programmet før du lodder eller gjør noen av tilkoblingene permanente. For å gjøre dette må vi skrive og laste opp programmet vårt, så la oss gå til neste trinn!

Trinn 4: Code It: Software

Code It: Programvare!
Code It: Programvare!
Code It: Programvare!
Code It: Programvare!

1. Åpne WinSCP på PCen og koble til Pi. Lag en Lobe -mappe i Pi -hjemmekatalogen din, og lag en modellmappe i den katalogen.

2. Dra det resulterende innholdet i Lobe TF -mappen til Pi. Legg merke til filbanen:/home/pi/Lobe/model

3. Åpne en terminal på Pi og last ned lobe-python-biblioteket for Python3 ved å kjøre følgende bash-kommandoer:

pip3 installer

pip3 installer lobe

4. Last ned søppelklassifiseringskoden (rpi_trash_classifier.py) fra denne repoen til Pi (klikk på "Code" -knappen som vist på bilde 1).

  • Foretrekker du å kopiere/lime inn? Få råkoden her.
  • Foretrekker du å laste ned til datamaskinen? Last ned repoen/koden til datamaskinen din, og overfør deretter Python -koden til Pi via WinSCP (eller ditt foretrukne eksterne filoverføringsprogram).

5. Når du har koblet maskinvaren til Pi's GPIO -pinner, les gjennom eksempelkoden og oppdater eventuelle filbaner etter behov:

  • Linje 29: filepath til Lobe TF -modellen
  • Linje 47 og 83: filbane til fangede bilder via Pi -kamera

6. Oppdater om nødvendig modelletikettene i koden slik at de samsvarer nøyaktig med etikettene i din Lobe -modell (inkludert store bokstaver, tegnsetting osv.):

  • Linje 57: "søppel"
  • Linje 60: "resirkuler"
  • Linje 63: "kompost"
  • Linje 66: "anlegg for farlig avfall"
  • Linje 69: "ikke søppel!"

7. Kjør programmet ved hjelp av Python3 i terminalvinduet:

python3 rpi_trash_classifier.py

Trinn 5: Test det: Kjør programmet

Test det: Kjør programmet!
Test det: Kjør programmet!
Test det: Kjør programmet!
Test det: Kjør programmet!
Test det: Kjør programmet!
Test det: Kjør programmet!

Programoversikt

Når du først kjører programmet, vil det ta litt tid å laste inn TensorFlow -biblioteket og Lobe ML -modellen. Når programmet er klart for å ta et bilde, vil statuslampen (hvit LED) pulsere.

Når du har tatt et bilde, vil programmet sammenligne bildet med Lobe ML -modellen og sende ut den resulterende prediksjonen (linje 83). Utgangen bestemmer hvilket lys som er slått på: gul (søppel), blå (resirkulering), grønn (kompost) eller rød (farlig avfall).

Hvis ingen av indikatorlampene tennes og status -LED -en går tilbake til pulsmodus, betyr det at bildet som ble tatt var "ikke søppel", med andre ord, ta bildet på nytt!

Ta et bilde

Trykk på trykknappen for å ta et bilde. Vær oppmerksom på at du kanskje må holde inne knappen i minst 1 sek for at programmet skal registrere pressen. Det anbefales å ta noen testbilder, og deretter åpne dem på skrivebordet for å bedre forstå kameravisningen og rammen.

For å gi brukeren tid til å plassere objektet og justere kameralysnivået, tar det omtrent fem sekunder å ta et bilde helt. Du kan endre disse innstillingene i koden (linje 35 og 41), men husk at Pi Foundation anbefaler minimum 2s for justering av lysnivå.

Feilsøking

Den største utfordringen er å sikre at det fangede bildet er det vi forventer, så ta litt tid å gå gjennom bildene og sammenligne forventede resultater med indikator -LED -utgang. Om nødvendig kan du sende inn bilder til Lobe ML -modellen for direkte slutninger og raskere sammenligning.

Noen ting å merke seg:

  • TensorFlow -biblioteket vil sannsynligvis kaste noen advarsler - dette er typisk for versjonen som brukes i denne eksempelkoden.
  • Forutsigelsesetikettene må være nøyaktig slik de er skrevet i led_select () -funksjonen, inkludert store bokstaver, tegnsetting og mellomrom. Sørg for å endre disse hvis du har en annen Lobe -modell.
  • Pi krever en jevn strømforsyning. Strømlampen til Pi skal være lys, solid rød.
  • Hvis en eller flere lysdioder ikke slås på når det forventes, må du kontrollere ved å tvinge dem med kommandoen:

red_led.on ()

Trinn 6: (Valgfritt) Bygg det: Fullfør kretsen din

(Valgfritt) Bygg det: Fullfør kretsen din!
(Valgfritt) Bygg det: Fullfør kretsen din!
(Valgfritt) Bygg det: Fullfør kretsen din!
(Valgfritt) Bygg det: Fullfør kretsen din!
(Valgfritt) Bygg det: Fullfør kretsen din!
(Valgfritt) Bygg det: Fullfør kretsen din!

Nå som vi har testet og om nødvendig feilsøkt prosjektet vårt slik at det fungerer som forventet, er vi klare til å lodde kretsen vår!

Merk: Hvis du ikke har et loddejern, kan du hoppe over dette trinnet. Ett alternativ er å belegge trådforbindelsene med varmt lim (dette alternativet lar deg fikse/legge til/bruke ting senere, men er mer sannsynlig å bryte), eller bruke epoxy eller lignende permanent lim (dette alternativet vil være mye mer holdbart men du vil ikke kunne bruke kretsen eller potensielt Pi etter å ha gjort dette)

Rask kommentar om mine designvalg (Bilde 1):

  • Jeg valgte kvinnelige jumper -ledninger for lysdiodene og Pi GPIO fordi de lar meg fjerne lysdioder og bytte farger eller flytte dem rundt om nødvendig. Du kan hoppe over disse hvis du vil gjøre tilkoblinger permanente.
  • På samme måte valgte jeg en JST -kontakt for trykknappen.

Videre til byggingen

1. Skjær hver av de kvinnelige hoppetrådene i to (ja, alle sammen!). Fjern wireisoleringen ved å fjerne ca. 1/2 av trådisoleringen.

2. For hver av lysdiodene, lodd en 220Ω motstand til det negative (kortere) benet. (Bilde 2)

3. Skjær et lite stykke, ca. 2 "(2") varmekrympeslange og skyv over LED og motstandsforbindelse. Sørg for at det andre motstandsbenet er tilgjengelig, varm deretter krympeslangen til det fester skjøten. (Foto 3)

4. Sett hver LED inn i et par hun -ledninger. (Bilde 4)

5. Merk jumpertrådene (f.eks. Med tape), og lodd deretter jumpertrådene på kretskortet (PCB). (Bilde 5)

6. Deretter bruker du en (kuttet) hunkabel for å koble hver LED til den respektive Pi GPIO -pinnen. Lodd og merk en jumper wire slik at det nakne metallet kobles til det positive LED -benet via PCB. (Bilde 5)

Merk: Hvor du lodder denne ledningen vil avhenge av PCB -oppsettet. Du kan også lodde denne ledningen direkte til den positive LED -jumperledningen.

7. Lodd en 220Ω motstand til den negative (svarte) enden av JST -kontakten. (Bilde 6)

8. Lodd JST -kontakten og motstanden til trykknappen. (Foto 6)

9. Koble M-til-F-jumperledningene mellom trykknappkontakten og GPIO-pinnene (påminnelse: svart er GND).

10. Belegg tilkoblinger PCB i varmt lim eller epoxy for en sikrere tilkobling.

Merk: Hvis du velger å bruke epoxy, kan det hende at du ikke kan bruke Pi's GPIO -pins til andre prosjekter i fremtiden. Hvis du er bekymret for dette, kan du legge til en GPIO -båndkabel og koble jumperledningene til den i stedet.

Trinn 7: (Valgfritt) Build It: Case

(Valgfritt) Build It: Case!
(Valgfritt) Build It: Case!
(Valgfritt) Build It: Case!
(Valgfritt) Build It: Case!
(Valgfritt) Build It: Case!
(Valgfritt) Build It: Case!
(Valgfritt) Build It: Case!
(Valgfritt) Build It: Case!

Lag et kabinett for din Pi som holder kameraet, trykknappen og lysdiodene på plass samtidig som du beskytter Pi. Design ditt eget kabinett eller følg våre byggeinstruksjoner nedenfor for raskt å prototyper et kartongskap!

  1. På toppen av den lille pappkassen sporer du plasseringene for trykknappen, statuslampen, identifikatorlysene og pi -kameravinduet (Foto 1).

    Merk: Pi -kameravinduet skal være omtrent 3/4 "x 1/2"

  2. Klipp ut sporene med presisjonskniven din.

    Merk: det kan være lurt å teste størrelsene mens du går (Bilde 1)

  3. Valgfritt: Mal saken! Jeg valgte spraymaling:)
  4. Klipp ut et rektangulært "vindus" -deksel for Pi -kameraet (foto 4) og lim på innsiden av esken
  5. Til slutt, kutt ut sporet for Pi -strømkabelen.

    Anbefales å først installere all elektronikk for å finne det beste stedet for pi -strømkabelsporet

Trinn 8: Installer og distribuer

Installer og distribuer!
Installer og distribuer!

Det er det! Du er klar til å installere og distribuere prosjektet ditt! Plasser kabinettet over søppelbøttene, koble til Pi og kjør programmet for å få en raskere og mer pålitelig måte å redusere avfallet vårt. Jippi!

Fremover

  • Del dine prosjekter og ideer med andre mennesker via Lobe Reddit -fellesskapet!
  • Ta en titt på Lobe Python GitHub -repoen for en generell oversikt over hvordan du bruker Python til å distribuere et bredere utvalg av Lobe -prosjekter
  • Spørsmål eller prosjektforespørsler? Legg igjen en kommentar om dette prosjektet, eller kontakt oss direkte: [email protected]

Anbefalt: