Indholdsfortegnelse:

Lav en Pi Trash Classifier med ML !: 8 trin (med billeder)
Lav en Pi Trash Classifier med ML !: 8 trin (med billeder)

Video: Lav en Pi Trash Classifier med ML !: 8 trin (med billeder)

Video: Lav en Pi Trash Classifier med ML !: 8 trin (med billeder)
Video: Джордж Хотц | Программирование | реверс-инжиниринг коронавируса #lockdown часть 2 | COVID-19 2024, November
Anonim
Lav en Pi Trash Classifier med ML!
Lav en Pi Trash Classifier med ML!
Lav en Pi Trash Classifier med ML!
Lav en Pi Trash Classifier med ML!

Trash Classifier -projektet, kærligt kendt som "Hvor går det hen ?!", er designet til at gøre det hurtigere og mere pålideligt at smide ting væk.

Dette projekt bruger en Machine Learning (ML) -model uddannet i Lobe, en nybegyndervenlig (ingen kode!) ML-modelbygger, til at identificere, om et objekt går i skraldet, genbrug, kompost eller farligt affald. Modellen indlæses derefter på en Raspberry Pi 4 -computer for at gøre den anvendelig, uanset hvor du måtte finde skraldespande!

Denne vejledning viser dig, hvordan du opretter dit eget Trash Classifier -projekt på en Raspberry Pi fra en Lobe TensorFlow -model i Python3.

Vanskelighed: Begynder ++ (noget viden m/ kredsløb og kodning er nyttigt)

Læsetid: 5 min

Bygningstid: 60 - 90 min

Omkostninger: ~ $ 70 (inklusive Pi 4)

Tilbehør:

Software (pc-side)

  • Lobe
  • WinSCP (eller anden SSH -filoverførselsmetode, kan bruge CyberDuck til Mac)
  • Terminal
  • Remote Desktop Connection eller RealVNC

Hardware

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

    • Gul LED: skrald
    • Blå LED: genbrug
    • Grøn LED: kompost
    • Rød LED: farligt affald
    • Hvid LED: status
  • 6 220 Ohm modstande
  • 10 M-til-M jumperwires
  • Brødbræt, halvstørrelse

Hvis du vælger at lodde:

  • 1 JST -stik, kun hun -ende
  • 2 M-til-F jumperwires
  • 10 F-til-F jumperwires
  • PCB

Kabinet

  • Projektkasse (f.eks. Pap, træ eller plastkasse, ca. 6 "x 5" x 4 ")
  • 0,5 "x 0,5" (2 cm x 2 cm) klar plastik firkant

    F.eks. fra et låg til madbeholder i plast

  • velcro

Værktøjer

  • Trådskærere
  • Præcisionskniv (f.eks. Exacto -kniv) og skæremåtte
  • Loddejern (valgfrit)
  • Smelteværktøj (eller anden ikke-ledende lim-epoxy fungerer godt, men er permanent)

Trin 1: Inden vi starter

Inden vi starter
Inden vi starter

Dette projekt forudsætter, at du starter med en fuldt konfigureret Raspberry Pi i en hovedløs konfiguration. Her er en nybegyndervenlig guide til, hvordan du gør dette.

Det hjælper også med at have en vis viden om følgende:

  1. Kendskab til Raspberry Pi

    • Her er en praktisk startguide!
    • Også nyttigt: Kom godt i gang med Pi -kameraet
  2. Læsning og redigering af Python -kode (du behøver ikke skrive et program, bare rediger)

    Introduktion til Python med Raspberry Pi

  3. Læsning af Fritzing -ledningsdiagrammer
  4. Ved hjælp af et brødbræt

    Sådan bruges en brødbrætstudie

Find ud af, hvor dit affald går

Hver by i USA (og jeg vil antage, at kloden) har sit eget skrald/genbrug/kompost/osv. indsamlingssystem. Det betyder, at for at lave en præcis skraldespandsklassificering skal vi 1) bygge en brugerdefineret ML -model (vi dækker dette i det næste trin - ingen kode!) Og 2) vide, hvor hvert skraldespand går.

Da jeg ikke altid kendte den rigtige skraldespand til hvert element, jeg plejede at træne min model, brugte jeg flyvebladet i Seattle Utilities (foto 1), og også denne praktiske "Hvor skal det hen?" opslagsværktøj til byen Seattle! Tjek hvilke ressourcer der er tilgængelige i din by ved at slå op i din bys affaldsindsamlingsværktøj og gennemgå dens websted.

Trin 2: Opret en brugerdefineret ML -model i Lobe

Opret en brugerdefineret ML -model i Lobe
Opret en brugerdefineret ML -model i Lobe
Opret en brugerdefineret ML -model i Lobe
Opret en brugerdefineret ML -model i Lobe
Opret en brugerdefineret ML -model i Lobe
Opret en brugerdefineret ML -model i Lobe
Opret en brugerdefineret ML -model i Lobe
Opret en brugerdefineret ML -model i Lobe

Lobe er et brugervenligt værktøj, der har alt, hvad du har brug for for at få ideer til maskinlæring til live. Vis det eksempler på, hvad du vil have det til at gøre, og det træner automatisk en tilpasset maskinindlæringsmodel, der kan eksporteres til kant -enheder og apps. Det kræver ingen erfaring at komme i gang. Du kan træne på din egen computer gratis!

Her er en hurtig oversigt over, hvordan du bruger Lobe:

1. Åbn Lobe -programmet, og opret et nyt projekt.

2. Tag eller importer fotos og mærk dem i passende kategorier. (Foto 1) Vi skal bruge disse etiketter senere i softwaredelen af projektet.

Der er to måder at importere fotos på:

  1. Tag fotos af genstande direkte fra din computers webcam eller
  2. Importer fotos fra eksisterende mapper på din computer.

    Husk, at fotomappens navn vil blive brugt som kategorimærkatnavn, så sørg for, at det matcher eksisterende etiketter

Bortset: Jeg endte med at bruge begge metoder, da jo flere fotos du har, jo mere præcis er din model.

3. Brug funktionen "Afspil" til at teste modelnøjagtigheden. Ændre afstande, belysning, håndpositioner osv. For at identificere, hvor modellen er og ikke er præcis. Tilføj flere fotos efter behov. (Billeder 3-4)

4. Når du er klar, skal du eksportere din Lobe ML -model i et TensorFlow (TF) Lite -format.

Tips:

  • Inden du importerer fotos, skal du lave en liste over alle de kategorier, du skal bruge, og hvordan du vil mærke dem (f.eks. "Skrald", "genbrug", "kompost" osv.)

    Bemærk: Brug de samme etiketter som vist på "Lobe Model Labels" foto ovenfor for at reducere mængden af kode, du skal ændre

  • Inkluder en kategori for "ikke skraldespand", der har fotos af hvad der ellers kan være på billedet (f.eks. Dine hænder og arme, baggrunden osv.)
  • Tag om muligt billeder fra Pi -kameraet og importer til Lobe. Dette vil i høj grad forbedre nøjagtigheden af din model!
  • Har du brug for flere billeder? Tjek open-source datasæt på Kaggle, herunder dette affaldsklassificeringsbilledsæt!
  • Brug for mere hjælp? Opret forbindelse til Lobe -fællesskabet på Reddit!

Trin 3: Byg det: Hardware

Byg det: Hardware!
Byg det: Hardware!
Byg det: Hardware!
Byg det: Hardware!
Byg det: Hardware!
Byg det: Hardware!

1. Tilslut forsigtigt Pi -kameraet til Pi (besøg Pi Foundation -startguiden for at få flere oplysninger). (Foto 1)

2. Følg ledningsdiagrammet for at forbinde trykknappen og lysdioderne til Pi GPIO -benene.

  • Trykknap: Tilslut det ene ben på trykknappen til GPIO -ben 2. Tilslut det andet via en modstand til en GPIO GND -stift.
  • Gul LED: Tilslut det positive (længere) ben til GPIO pin 17. Tilslut det andet ben via en modstand til en GPIO GND pin.
  • Blå LED: Tilslut det positive ben til GPIO pin 27. Tilslut det andet ben via en modstand til en GPIO GND pin.
  • Grøn LED: Tilslut det positive ben til GPIO pin 22. Tilslut det andet ben via en modstand til en GPIO GND pin.
  • Rød LED: Tilslut det positive ben til GPIO pin 23. Tilslut det andet ben via en modstand til en GPIO GND pin.
  • Hvid LED: Tilslut det positive ben til GPIO -pin 24. Tilslut det andet ben via en modstand til en GPIO GND -pin.

3. Det anbefales at teste dit kredsløb på et brødbræt og køre programmet, før lodning eller gør nogen af forbindelserne permanente. For at gøre dette skal vi skrive og uploade vores softwareprogram, så lad os gå til næste trin!

Trin 4: Kode det: Software

Kode det: Software!
Kode det: Software!
Kode det: Software!
Kode det: Software!

1. Åbn WinSCP på din pc, og opret forbindelse til din Pi. Opret en Lobe -mappe i din Pi's hjemmemappe, og opret en modelmappe i den mappe.

2. Træk det resulterende indhold i Lobe TF -mappen til Pi. Noter filstien:/home/pi/Lobe/model

3. Åbn en terminal på Pi, og download lobe-python-biblioteket til Python3 ved at køre følgende bash-kommandoer:

pip3 installer

pip3 installer lap

4. Download Trash Classifier -koden (rpi_trash_classifier.py) fra denne repo til Pi (klik på knappen "Code" som vist på foto 1).

  • Foretrækker du at kopiere/indsætte? Få den rå kode her.
  • Foretrækker du at downloade til din computer? Download repo/koden til din computer, og overfør derefter Python -koden til Pi via WinSCP (eller dit foretrukne eksterne filoverførselsprogram).

5. Når du har tilsluttet hardwaren til Pi's GPIO -ben, skal du læse eksemplet igennem og opdatere eventuelle filstier efter behov:

  • Linje 29: filepath til Lobe TF -modellen
  • Linje 47 og 83: filepath til taget billeder via Pi -kamera

6. Opdater om nødvendigt modeletiketterne i koden, så de nøjagtigt matcher etiketterne i din Lobe -model (herunder store bogstaver, tegnsætning osv.):

  • Linje 57: "skrald"
  • Linje 60: "genbrug"
  • Linje 63: "kompost"
  • Linje 66: "anlæg til farligt affald"
  • Linje 69: "ikke skraldespand!"

7. Kør programmet ved hjælp af Python3 i terminalvinduet:

python3 rpi_trash_classifier.py

Trin 5: Test det: Kør programmet

Test det: Kør programmet!
Test det: Kør programmet!
Test det: Kør programmet!
Test det: Kør programmet!
Test det: Kør programmet!
Test det: Kør programmet!

Programoversigt

Når du først kører programmet, vil det tage noget tid at indlæse TensorFlow -biblioteket og Lobe ML -modellen. Når programmet er klar til at tage et billede, vil statuslampen (hvid LED) pulsere.

Når du har taget et billede, vil programmet sammenligne billedet med Lobe ML -modellen og udsende den resulterende forudsigelse (linje 83). Outputtet bestemmer, hvilket lys der er tændt: gul (affald), blå (genbrug), grøn (kompost) eller rød (farligt affald).

Hvis ingen af indikatorlysdioderne tændes, og status -LED'en vender tilbage til pulsmodus, betyder det, at billedet, der blev taget, var "ikke skraldespand", med andre ord, tag billedet igen!

Optagelse af et billede

Tryk på knappen for at tage et billede. Bemærk, at du muligvis skal trykke på knappen i mindst 1 sek., Før programmet kan registrere pressen. Det anbefales at tage nogle testbilleder og derefter åbne dem på skrivebordet for bedre at forstå kameravisningen og rammen.

For at give brugeren tid til at placere objektet og til at justere kameralysniveauerne tager det cirka 5 sekunder at tage et billede fuldt ud. Du kan ændre disse indstillinger i koden (linje 35 og 41), men husk, at Pi Foundation anbefaler minimum 2s til justering af lysniveau.

Fejlfinding

Den største udfordring er at sikre, at det fangede billede er, hvad vi forventer, så tag lidt tid at gennemgå billederne og sammenligne forventede resultater med indikator -LED -output. Hvis det er nødvendigt, kan du sende billeder til Lobe ML -modellen for direkte konklusioner og hurtigere sammenligning.

Et par ting at bemærke:

  • TensorFlow -biblioteket vil sandsynligvis smide nogle advarselsmeddelelser - dette er typisk for den version, der bruges i denne prøvekode.
  • Forudsigelsesetiketterne skal være nøjagtigt som skrevet i funktionen led_select (), herunder store bogstaver, tegnsætning og mellemrum. Sørg for at ændre disse, hvis du har en anden Lobe -model.
  • Pi kræver en stabil strømforsyning. Pi's strømindikator skal være lys, fast rød.
  • Hvis en eller flere lysdioder ikke tænder, når det forventes, skal du kontrollere ved at tvinge dem til med kommandoen:

red_led.on ()

Trin 6: (Valgfrit) Byg det: Afslut dit kredsløb

(Valgfrit) Byg det: Afslut dit kredsløb!
(Valgfrit) Byg det: Afslut dit kredsløb!
(Valgfrit) Byg det: Afslut dit kredsløb!
(Valgfrit) Byg det: Afslut dit kredsløb!
(Valgfrit) Byg det: Afslut dit kredsløb!
(Valgfrit) Byg det: Afslut dit kredsløb!

Nu hvor vi har testet og om nødvendigt fejlfindet vores projekt, så det fungerer som forventet, er vi klar til at lodde vores kredsløb!

Bemærk: Hvis du ikke har et loddejern, kan du springe dette trin over. Et alternativ er at belægge trådforbindelserne i varm lim (denne mulighed giver dig mulighed for at reparere/tilføje/bruge ting senere, men er mere tilbøjelig til at gå i stykker) eller bruge epoxy eller en lignende permanent lim (denne mulighed vil være meget mere holdbar men du vil ikke være i stand til at bruge kredsløbet eller potentielt Pi efter at have gjort dette)

Hurtig kommentar om mine designvalg (Foto 1):

  • Jeg valgte kvindelige jumperledninger til lysdioderne og Pi GPIO, fordi de tillader mig at fjerne lysdioder og skifte farver eller flytte dem rundt, hvis det er nødvendigt. Du kan springe disse over, hvis du vil gøre forbindelser permanente.
  • På samme måde valgte jeg et JST -stik til trykknappen.

Videre til bygningen

1. Skær hver af de kvindelige jumpertråde i halve (ja, dem alle!). Fjern trådisolering med ca. 1/4 (1/2 cm) af trådisoleringen.

2. For hver af lysdioderne loddes en 220Ω modstand til det negative (kortere) ben. (Foto 2)

3. Skær et lille stykke, cirka 2 (2 cm) varmekrympeslange, og skub LED og modstandsforbindelsen over. Sørg for, at det andet modstandsben er tilgængeligt, og opvarm derefter krympeslangen, indtil det fastgør samlingen. (Foto 3)

4. Indsæt hver LED i et par huntrøjer. (Foto 4)

5. Mærk jumperkablerne (f.eks. Med tape), og lod derefter jumperwires på dit printkort (PCB). (Foto 5)

6. Dernæst skal du bruge en (afskåret) hunkabel til at forbinde hver LED til dens respektive Pi GPIO -pin. Lod og mærke en jumper wire, så det nøgne metal forbinder til det positive LED -ben via printet. (Foto 5)

Bemærk: Hvor du lodder denne ledning afhænger af dit PCB -layout. Du kan også lodde denne ledning direkte til den positive LED -jumperledning.

7. Lod en 220Ω modstand til den negative (sorte) ende af JST -stikket. (Foto 6)

8. Lod lod JST -stikket og modstanden til trykknappen. (Foto 6)

9. Tilslut M-til-F-jumperkablerne mellem trykknapstikket og GPIO-benene (påmindelse: sort er GND).

10. Coatforbindelser PCB i varm lim eller epoxy for en mere sikker forbindelse.

Bemærk: Hvis du vælger at bruge epoxy, kan du muligvis ikke bruge Pi's GPIO -ben til andre projekter i fremtiden. Hvis du er bekymret for dette, skal du tilføje et GPIO -båndkabel og forbinde jumperkablerne til det i stedet.

Trin 7: (Valgfrit) Build It: Case

(Valgfrit) Byg det: Case!
(Valgfrit) Byg det: Case!
(Valgfrit) Byg det: Case!
(Valgfrit) Byg det: Case!
(Valgfrit) Byg det: Case!
(Valgfrit) Byg det: Case!
(Valgfrit) Byg det: Case!
(Valgfrit) Byg det: Case!

Opret et kabinet til din Pi, der holder kameraet, trykknappen og lysdioderne på plads og samtidig beskytter Pi. Design dit eget kabinet, eller følg vores byggeinstruktioner herunder for hurtigt at prototyper et papkabinet!

  1. På toppen af den lille papkasse skal du spore placeringerne for trykknappen, statuslampen, identifikationslamperne og pi -kameravinduet (foto 1).

    Bemærk: Pi -kameravinduet skal være ca. 3/4 "x 1/2"

  2. Skær sporene ud med din præcisionskniv.

    Bemærk: du vil måske teste størrelserne undervejs (foto 1)

  3. Valgfrit: Mal sagen! Jeg valgte spraymaling:)
  4. Skær et rektangulært "vinduesdæksel" til Pi -kameraet (foto 4) og lim på indersiden af æsken
  5. Til sidst skæres åbningen til Pi -strømkablet ud.

    Det anbefales først at installere al elektronik for at finde det bedste sted til pi -strømkabelslot

Trin 8: Installer og implementer

Installer og implementer!
Installer og implementer!

Det er det! Du er klar til at installere og implementere dit projekt! Placer kabinettet over dine skraldespande, tilslut Pi, og kør programmet for at få en hurtigere og mere pålidelig måde at reducere vores affald. Yay!

Fremadrettet

  • Del dine projekter og ideer med andre mennesker via Lobe Reddit -fællesskabet!
  • Tjek Lobe Python GitHub repo for en generel oversigt over, hvordan du bruger Python til at implementere en bredere vifte af Lobe -projekter
  • Spørgsmål eller projektanmodninger? Efterlad en kommentar til dette projekt, eller kontakt os direkte: [email protected]

Anbefalede: