Kazalo:

Naredite klasifikator smeti Pi z ML!: 8 korakov (s slikami)
Naredite klasifikator smeti Pi z ML!: 8 korakov (s slikami)

Video: Naredite klasifikator smeti Pi z ML!: 8 korakov (s slikami)

Video: Naredite klasifikator smeti Pi z ML!: 8 korakov (s slikami)
Video: CS50 2013 - Week 1 2024, Julij
Anonim
Naredite klasifikator Pi smeti z ML!
Naredite klasifikator Pi smeti z ML!
Naredite klasifikator smeti Pi z ML!
Naredite klasifikator smeti Pi z ML!

Projekt klasifikatorja smeti, ljubkovalno znan kot "Kam gre ?!", je zasnovan tako, da stvari vrže hitreje in zanesljiveje.

Ta projekt uporablja model strojnega učenja (ML), usposobljen v Lobeju, začetniku prijaznem (brez kode!) Izdelovalcu modelov ML, da ugotovi, ali gre predmet v smeti, recikliranje, kompost ali nevarne odpadke. Model se nato naloži na računalnik Raspberry Pi 4, da ga lahko uporabite povsod, kjer najdete koše za smeti!

Ta vadnica vas vodi, kako ustvariti lasten projekt klasifikatorja smeti na Raspberry Pi iz modela Lobe TensorFlow v Pythonu3.

Težavnost: Začetnik ++ (nekaj znanja z vezji in kodiranjem je v pomoč)

Čas branja: 5 min

Čas izdelave: 60 - 90 min

Cena: ~ 70 USD (vključno s Pi 4)

Zaloge:

Programska oprema (na strani računalnika)

  • Lobe
  • WinSCP (ali drug način prenosa datotek SSH, lahko uporabite CyberDuck za Mac)
  • Terminal
  • Povezava z oddaljenim namizjem ali RealVNC

Strojna oprema

  • Napajanje Raspberry Pi, SD kartica in USB-C (5V, 2.5A)
  • Pi kamera
  • Pritisni gumb
  • 5 LED (4 indikatorske LED in 1 statusna LED)

    • Rumena LED: smeti
    • Modra LED: reciklirajte
    • Zelena LED: kompost
    • Rdeča LED: nevarni odpadki
    • Bela LED: stanje
  • 6 220 ohmskih uporov
  • 10 mostičnih žic M-do-M
  • Okrožnik, polovičen

Če se odločite za spajkanje:

  • 1 priključek JST, samo ženski konec
  • 2 mostični žici M-to-F
  • 10 mostičnih žic F-to-F
  • PCB

Ohišje

  • Ohišje projekta (npr. Kartonska, lesena ali plastična škatla, pribl. 6 "x 5" x 4 ")
  • 0,5 "x 0,5" (2 cm x 2 cm) prozornega plastičnega kvadrata

    Npr. iz plastičnega pokrova posode za hrano

  • ježevi trakovi

Orodja

  • Rezalniki žice
  • Natančen nož (npr. Natančni nož) in rezalna preproga
  • Spajkalnik (neobvezno)
  • Orodje za vroče taljenje (ali drugo neprevodno lepilo-epoksid deluje odlično, vendar je trajen)

1. korak: Preden začnemo

Preden začnemo
Preden začnemo

Ta projekt predvideva, da začenjate s popolnoma nastavljenim Raspberry Pi v konfiguraciji brez glave. Tukaj je začetnikom prijazen vodnik, kako to narediti.

Pomaga tudi, če poznate naslednje:

  1. Seznanitev z Raspberry Pi

    • Tukaj je priročen vodnik za začetek!
    • Pomaga tudi: Začetek uporabe kamere Pi
  2. Branje in urejanje kode Python (programa vam ni treba pisati, samo uredite)

    Uvod v Python z Raspberry Pi

  3. Branje shem ožičenja Fritzing
  4. Z uporabo mize

    Kako uporabljati vadnico za ploščo

Ugotovite, kam gre vaš smeti

Vsako mesto po ZDA (in domnevam, da je svet) ima svoje smeti/recikliranje/kompost/itd. sistem zbiranja. To pomeni, da bomo za natančen klasifikator smeti morali 1) izdelati model ML po meri (to bomo obravnavali v naslednjem koraku - brez kode!) In 2) vedeti, kam gre vsak kos smeti.

Ker nisem vedno poznal ustreznega koša za vsak predmet, s katerim sem treniral svoj model, sem uporabil letak Seattle Utilities (fotografija 1) in tudi ta priročen "Kam gre?" iskalno orodje za mesto Seattle! Preverite, kateri viri so na voljo v vašem mestu, tako da poiščete pripomoček za zbiranje smeti v svojem mestu in poiščete njegovo spletno stran.

2. korak: Ustvarite model ML po meri v Lobeju

Ustvarite model ML po meri v Lobeju
Ustvarite model ML po meri v Lobeju
Ustvarite model ML po meri v Lobeju
Ustvarite model ML po meri v Lobeju
Ustvarite model ML po meri v Lobeju
Ustvarite model ML po meri v Lobeju
Ustvarite model ML po meri v Lobeju
Ustvarite model ML po meri v Lobeju

Lobe je preprosto orodje, ki vsebuje vse, kar potrebujete za oživitev vaših idej strojnega učenja. Pokažite mu primere tega, kar želite, in samodejno usposobi model strojnega učenja po meri, ki ga je mogoče izvoziti za robne naprave in aplikacije. Za začetek ne potrebujete izkušenj. Brezplačno lahko trenirate na svojem računalniku!

Tu je kratek pregled uporabe Lobe:

1. Odprite program Lobe in ustvarite nov projekt.

2. Fotografirajte ali uvozite in jih označite v ustrezne kategorije. (Fotografija 1) Te oznake bomo potrebovali kasneje v programskem delu projekta.

Obstajata dva načina za uvoz fotografij:

  1. Fotografirajte predmete neposredno s spletne kamere računalnika ali
  2. Uvozite fotografije iz obstoječih map v računalniku.

    Ime mape s fotografijami se bo uporabljalo kot ime oznake kategorije, zato se prepričajte, da se ujema z obstoječimi oznakami

Mimogrede: na koncu sem uporabil obe metodi, ker več fotografij imate, natančnejši je vaš model.

3. S funkcijo "Play" preizkusite natančnost modela. Spremenite razdalje, osvetlitev, položaj rok itd., Da ugotovite, kje je model in ni natančen. Po potrebi dodajte še več fotografij. (Fotografije 3 - 4)

4. Ko ste pripravljeni, izvozite svoj model Lobe ML v obliki zapisa TensorFlow (TF) Lite.

Nasveti:

  • Pred uvozom fotografij naredite seznam vseh kategorij, ki jih potrebujete, in kako jih želite označiti (npr. »Smeti«, »recikliraj«, »kompost« itd.)

    Opomba: Če želite zmanjšati količino kode, ki jo morate spremeniti, uporabite iste oznake, kot je prikazano na zgornji fotografiji "Nalepke modela lobe"

  • Vključite kategorijo »ni smeti«, ki vsebuje fotografije, ki so na fotografiji (na primer vaše roke in roke, ozadje itd.)
  • Če je mogoče, naredite fotografije s kamere Pi in jih uvozite v Lobe. To bo močno izboljšalo natančnost vašega modela!
  • Potrebujete več fotografij? Oglejte si odprtokodne nabore podatkov na Kaggleu, vključno s tem naborom slik za razvrstitev smeti!
  • Potrebujete več pomoči? Povežite se s skupnostjo Lobe na Redditu!

3. korak: Zgradite ga: strojna oprema

Zgradite ga: strojna oprema!
Zgradite ga: strojna oprema!
Zgradite ga: strojna oprema!
Zgradite ga: strojna oprema!
Zgradite ga: strojna oprema!
Zgradite ga: strojna oprema!

1. Previdno povežite kamero Pi s Pi (za več informacij obiščite vodnik za začetek delovanja Fundacije Pi). (Fotografija 1)

2. Sledite diagramu ožičenja, da potisni gumb in LED priklopite na nožice Pi GPIO.

  • Potisni gumb: Priključite eno nogo tipke na pin GPIO 2. Drugo, preko upora, priključite na pin GPIO GND.
  • Rumena LED: Priključite pozitivno (daljšo) nogo na GPIO pin 17. Drugo nogo preko upora priključite na pin GPIO GND.
  • Modra LED: Pozitivno nogo priključite na pin GPIO 27. Drugo nogo preko upora priklopite na pin GPIO GND.
  • Zelena LED: Priključite pozitivno nogo na GPIO pin 22. Drugo nogo preko upora priključite na pin GPIO GND.
  • Rdeča LED: Priključite pozitivno nogo na GPIO pin 23. Drugo nogo preko upora priklopite na pin GPIO GND.
  • Bela LED: Priključite pozitivno nogo na GPIO pin 24. Drugo nogo preko upora priključite na pin GPIO GND.

3. Priporočljivo je, da preskusite vezje na plošči in zaženete program, preden spajkate ali naredite katero koli povezavo trajno. Če želite to narediti, bomo morali napisati in naložiti naš program, zato pojdimo na naslednji korak!

4. korak: kodirajte: programska oprema

Kodiraj to: programska oprema!
Kodiraj to: programska oprema!
Kodiraj to: programska oprema!
Kodiraj to: programska oprema!

1. V računalniku odprite WinSCP in se povežite s svojim Pi. Ustvarite mapo Lobe v domačem imeniku vašega Pi in v tem imeniku ustvarite vzorčno mapo.

2. Povlecite nastalo vsebino mape Lobe TF na Pi. Zabeležite pot do datoteke:/home/pi/Lobe/model

3. Na Pi odprite terminal in prenesite knjižnico lobe-python za Python3 z izvajanjem naslednjih ukazov bash:

pip3 namestite

pip3 namestite reženj

4. Prenesite kodo razvrščevalnika smeti (rpi_trash_classifier.py) iz tega repo na Pi (kliknite gumb "Koda", kot je prikazano na fotografiji 1).

  • Ali želite kopirati/prilepiti? Pridobite surovo kodo tukaj.
  • Raje naložite v računalnik? Prenesite repo/kodo na svoj računalnik in nato kodo Python prenesite v Pi prek WinSCP (ali želenega programa za prenos datotek na daljavo).

5. Ko priključite strojno opremo na Pi -jeve zatiče GPIO, preberite primer kode in po potrebi posodobite vse poti datotek:

  • Vrstica 29: pot datoteke do modela Lobe TF
  • Vrstice 47 in 83: pot do datotek za posnete slike prek kamere Pi Camera

6. Po potrebi posodobite oznake modela v kodi, da se natančno ujemajo z oznakami v vašem modelu Lobe (vključno z velikimi tiskanimi črkami, ločili itd.):

  • Vrstica 57: "smeti"
  • Vrstica 60: "recikliraj"
  • Vrstica 63: "kompost"
  • Vrstica 66: "obrat za nevarne odpadke"
  • Vrstica 69: "ne smeti!"

7. Zaženite program z uporabo Python3 v terminalskem oknu:

python3 rpi_trash_classifier.py

5. korak: Preizkusite: zaženite program

Preizkusite: zaženite program!
Preizkusite: zaženite program!
Preizkusite: zaženite program!
Preizkusite: zaženite program!
Preizkusite: zaženite program!
Preizkusite: zaženite program!

Pregled programa

Ko prvič zaženete program, bo trajalo nekaj časa, da naložite knjižnico TensorFlow in model Lobe ML. Ko je program pripravljen za zajem slike, bo utripala lučka stanja (bela LED).

Ko posnamete sliko, bo program primerjal sliko z modelom Lobe ML in prikazal nastalo napoved (vrstica 83). Izhod določa, katera lučka je prižgana: rumena (smeti), modra (recikliraj), zelena (kompost) ali rdeča (nevarni odpadki).

Če se nobena od indikatorskih LED ne prižge in se LED stanja vrne v impulzni način, to pomeni, da posneta slika "ni smeti", z drugimi besedami, fotografirajte znova!

Zajem slike

Pritisnite gumb za zajem slike. Upoštevajte, da boste morda morali pritisniti gumb vsaj 1 sekundo, da program registrira tisk. Priporočljivo je, da posnamete nekaj preskusnih slik, nato pa jih odprete na namizju, da boste bolje razumeli pogled in okvir kamere.

Če želite uporabniku omogočiti čas za postavitev predmeta in prilagoditev ravni svetlobe fotoaparata, traja približno 5 sekund za popolno zajem slike. Te nastavitve lahko spremenite v kodi (vrstice 35 in 41), vendar ne pozabite, da Fundacija Pi priporoča najmanj 2 sekundi za nastavitev ravni svetlobe.

Odpravljanje težav

Največji izziv je zagotoviti, da je zajeta slika tisto, kar pričakujemo, zato si vzemite nekaj časa, da si ogledate slike in primerjate pričakovane rezultate z indikacijskim izhodom LED. Če je potrebno, lahko slike posredujete modelu Lobe ML za neposredno okužbo in hitrejšo primerjavo.

Upoštevati je treba nekaj stvari:

  • Knjižnica TensorFlow bo verjetno vrgla nekaj opozorilnih sporočil - to je značilno za različico, uporabljeno v tej vzorčni kodi.
  • Oznake napovedi morajo biti natančno zapisane v funkciji led_select (), vključno z velikimi tiskanimi črkami, ločili in presledki. Če imate drug model Lobe, jih spremenite.
  • Pi potrebuje stabilen napajalnik. Lučka za napajanje Pi mora biti svetla, rdeča.
  • Če se ena ali več LED ne prižge po pričakovanjih, preverite tako, da jih vklopite z ukazom:

red_led.on ()

6. korak: (Izbirno) Zgradite ga: dokončajte svoj krog

(Izbirno) Zgradite ga: dokončajte svoj krog!
(Izbirno) Zgradite ga: dokončajte svoj krog!
(Izbirno) Zgradite ga: dokončajte svoj krog!
(Izbirno) Zgradite ga: dokončajte svoj krog!
(Izbirno) Zgradite ga: dokončajte svoj krog!
(Izbirno) Zgradite ga: dokončajte svoj krog!

Zdaj, ko smo naš projekt preizkusili in po potrebi odpravili napake, da deluje po pričakovanjih, smo pripravljeni spajkati naše vezje!

Opomba: Če spajkalnika nimate, lahko ta korak preskočite. Ena od možnosti je, da žične povezave premažete z vročim lepilom (ta možnost vam bo omogočila, da pozneje popravite/dodate/uporabite stvari, vendar je verjetneje, da se zlomijo), ali uporabite epoksi ali podobno trajno lepilo (ta možnost bo veliko bolj trpežna vendar po tem ne boste mogli uporabiti vezja ali potencialno Pi)

Hiter komentar o mojih oblikovalskih odločitvah (Fotografija 1):

  • Odločil sem se za žice za moške za LED in Pi GPIO, ker mi omogočajo, da odstranim LED in zamenjam barve ali jih po potrebi premikam. Če želite vzpostaviti trajne povezave, jih lahko preskočite.
  • Podobno sem za gumb izbral priključek JST.

Naprej do stavbe

1. Vsako žico moškega mostička prerežite na pol (da, vse!). Z odstranjevalci žic odstranite približno 1/4 (1/2 cm) izolacije žice.

2. Za vsako LED diodo spajajte 220Ω upor na negativno (krajšo) nogo. (Fotografija 2)

3. Odrežite majhen kos, približno 1 (2 cm) toplotno skrčljive cevi in potisnite LED in uporni stik. Prepričajte se, da je dostopna druga noga upora, nato pa segrejte skrčljivo cev, da pritrdi spoj. (Fotografija 3)

4. Vsako LED vstavite v par ženskih mostičkov. (Fotografija 4)

5. Označite mostične žice (npr. S trakom), nato pa spajkalne žice spajkajte na tiskano vezje (PCB). (Fotografija 5)

6. Nato uporabite (prerezano) žensko mostično žico, da vsako LED povežete z ustreznim zatičem Pi GPIO. Spajkajte in označite skakalno žico, tako da se gola kovina poveže s pozitivno LED nogo preko tiskanega vezja. (Fotografija 5)

Opomba: Kje boste spajkali to žico, je odvisno od postavitve vašega tiskanega vezja. To žico lahko tudi spajkate neposredno na pozitivno žico mostička LED.

7. Spojite 220Ω upor na negativni (črni) konec priključka JST. (Fotografija 6)

8. Priključite priključek JST in upor na gumb. (Fotografija 6)

9. Povežite žice mostička M-to-F med priključkom gumba in zatiči GPIO (opomnik: črna je GND).

10. Za bolj varno povezavo povežite tiskano vezje na vroče lepilo ali epoksid.

Opomba: če se odločite za uporabo epoksida, v prihodnosti morda ne boste mogli uporabiti Pi -jevih zatičev GPIO za druge projekte. Če vas to skrbi, dodajte kabel GPIO in namesto tega priključite mostične žice.

7. korak: (izbirno) Zgradite: primer

(Izbirno) Build it: Case!
(Izbirno) Build it: Case!
(Izbirno) Build it: Case!
(Izbirno) Build it: Case!
(Izbirno) Build it: Case!
(Izbirno) Build it: Case!
(Izbirno) Build it: Case!
(Izbirno) Build it: Case!

Ustvarite ohišje za svoj Pi, ki bo držalo kamero, gumb in LED na mestu, hkrati pa bo zaščitilo Pi. Oblikujte si lastno ohišje ali sledite spodnjim navodilom za hitro izdelavo prototipov kartonskega ohišja!

  1. Na vrhu majhne kartonske škatle poiščite lokacije gumba, lučke stanja, luči identifikatorja in okna kamere pi (fotografija 1).

    Opomba: Okno kamere Pi mora biti približno 3/4 "x 1/2"

  2. S svojim natančnim nožem izrežite sledi.

    Opomba: velikosti boste morda želeli preizkusiti (fotografija 1)

  3. Izbirno: okrasite ohišje! Odločil sem se za razpršilno barvo:)
  4. Izrežite pravokotni pokrov "okna" za Pi kamero (fotografija 4) in lepite na notranji strani škatle
  5. Na koncu izrežite režo za napajalni kabel Pi.

    Priporočljivo je, da najprej namestite vso elektroniko, da poiščete najboljše mesto za režo za napajalni kabel pi

8. korak: Namestite in uvedite

Namestite in uvedite!
Namestite in uvedite!

To je to! Pripravljeni ste na namestitev in uvajanje vašega projekta! Ohišje postavite nad koše za smeti, priključite Pi in zaženite program, da dobite hitrejši in zanesljivejši način zmanjševanja naših odpadkov. Juhu!

Gredo naprej

  • Delite svoje projekte in ideje z drugimi v skupnosti Lobe Reddit!
  • Oglejte si repo Lobe Python GitHub za splošen pregled, kako uporabiti Python za uvajanje večjega števila projektov Lobe
  • Vprašanja ali projektne zahteve? Pustite komentar o tem projektu ali se obrnite neposredno na nas: [email protected]

Priporočena: