Sadržaj:

Napravite Pi Trassi Classifier s ML !: 8 koraka (sa slikama)
Napravite Pi Trassi Classifier s ML !: 8 koraka (sa slikama)

Video: Napravite Pi Trassi Classifier s ML !: 8 koraka (sa slikama)

Video: Napravite Pi Trassi Classifier s ML !: 8 koraka (sa slikama)
Video: MJC Stream: Видишь енота? А он есть! Главное об ML и компьютерном зрении 2024, Studeni
Anonim
Napravite Pi Trassi Classifier s ML!
Napravite Pi Trassi Classifier s ML!
Napravite Pi Trassi Classifier s ML!
Napravite Pi Trassi Classifier s ML!

Projekt Trash Classifier, od milja poznat kao "Kamo ide ?!", osmišljen je kako bi bacanje stvari bilo brže i pouzdanije.

Ovaj projekt koristi model strojnog učenja (ML) obučen u Lobeu, graditelja modela ML prilagođenog početnicima (bez koda!), Kako bi identificirao ide li neki objekt u smeće, recikliranje, kompost ili opasni otpad. Model se zatim učitava na računalo Raspberry Pi 4 kako bi bio upotrebljiv gdje god možete pronaći kante za smeće!

Ovaj će vas vodič uputiti kako stvoriti vlastiti projekt Trash Classifier na Raspberry Pi iz modela Lobe TensorFlow u Pythonu3.

Poteškoća: Početnik ++ (neko znanje s krugovima i kodiranjem je od pomoći)

Vrijeme čitanja: 5 min

Vrijeme izrade: 60 - 90 min

Cijena: ~ 70 USD (uključujući Pi 4)

Pribor:

Softver (sa strane računala)

  • Lobe
  • WinSCP (ili neki drugi način prijenosa datoteka SSH, može koristiti CyberDuck za Mac)
  • Terminal
  • Veza s udaljenom radnom površinom ili RealVNC

Hardver

  • Raspberry Pi, SD kartica i USB-C napajanje (5V, 2.5A)
  • Pi kamera
  • Tipkalo
  • 5 LED dioda (4 indikatorske i 1 statusna LED)

    • Žuta LED: smeće
    • Plava LED dioda: reciklirajte
    • Zelena LED dioda: kompost
    • Crvena LED dioda: opasan otpad
    • Bijela LED: status
  • 6 otpornika od 220 ohma
  • 10 žica kratkospojnika M-to-M
  • Oglasna ploča, pola veličine

Ako se odlučite za lemljenje:

  • 1 JST konektor, samo ženski kraj
  • 2 žice kratkospojnika M-to-F
  • 10 žica kratkospojnika F-to-F
  • PCB

Kućište

  • Kutija za projekte (npr. Kartonska, drvena ili plastična kutija, približno 6 "x 5" x 4 ")
  • 0,5 "x 0,5" (2 cm x 2 cm) prozirni plastični kvadrat

    Npr. s poklopca plastične posude za hranu

  • Čičak

Alati

  • Rezači žice
  • Precizni nož (npr. Egzaktni nož) i prostirka za rezanje
  • Lemilica (opcionalno)
  • Alat za topljenje (ili drugo neprovodljivo ljepilo-epoksid odlično funkcionira, ali je postojan)

Korak 1: Prije nego počnemo

Prije nego počnemo
Prije nego počnemo

Ovaj projekt pretpostavlja da započinjete s potpuno postavljenom Raspberry Pi u konfiguraciji bez glave. Evo vodiča za početnike o tome kako to učiniti.

Pomaže i znanje o sljedećem:

  1. Upoznavanje s Raspberry Pi

    • Evo praktičnog vodiča za početak!
    • Također korisno: Početak rada s Pi kamerom
  2. Čitanje i uređivanje Python koda (nećete morati pisati program, samo uredite)

    Uvod u Python s Raspberry Pi

  3. Čitanje dijagrama ožičenja Fritzing
  4. Korištenje matične ploče

    Kako koristiti vodič za matičnu ploču

Saznajte kamo vam smeće odlazi

Svaki grad diljem SAD -a (a pretpostavljam i globus) ima svoje smeće/recikliranje/kompost/itd. sustav prikupljanja. To znači da ćemo za izradu točnog klasifikatora smeća morati 1) izgraditi prilagođeni ML model (o tome ćemo govoriti u sljedećem koraku - bez koda!) I 2) znati kamo odlazi svaki komad smeća.

Budući da nisam uvijek znao odgovarajuću kantu za svaku stavku koju sam koristio za obuku svog modela, koristio sam letak Seattle Utilities (Fotografija 1), a također i ovaj zgodan "Gdje ide?" alat za pretraživanje grada Seattlea! Provjerite koji su resursi dostupni u vašem gradu tako što ćete potražiti uslužni program za prikupljanje smeća u svom gradu i pregledati njegovu web stranicu.

Korak 2: Izradite prilagođeni ML model u Lobeu

Izradite prilagođeni ML model u Lobeu
Izradite prilagođeni ML model u Lobeu
Izradite prilagođeni ML model u Lobeu
Izradite prilagođeni ML model u Lobeu
Izradite prilagođeni ML model u Lobeu
Izradite prilagođeni ML model u Lobeu
Izradite prilagođeni ML model u Lobeu
Izradite prilagođeni ML model u Lobeu

Lobe je alat za jednostavno korištenje koji ima sve što vam je potrebno za oživljavanje vaših ideja strojnog učenja. Pokažite mu primjere onoga što želite da učini i automatski će trenirati prilagođeni model strojnog učenja koji se može izvesti za rubne uređaje i aplikacije. Za početak nije potrebno nikakvo iskustvo. Možete trenirati na svom računalu besplatno!

Evo kratkog pregleda kako koristiti Lobe:

1. Otvorite program Lobe i izradite novi projekt.

2. Snimite ili uvezite fotografije i označite ih u odgovarajuće kategorije. (Fotografija 1) Ove će nam oznake trebati kasnije u softverskom dijelu projekta.

Postoje dva načina za uvoz fotografija:

  1. Fotografirajte stavke izravno s web kamere vašeg računala ili
  2. Uvezite fotografije iz postojećih mapa na računalu.

    Imajte na umu da će se naziv mape s fotografijama koristiti kao naziv oznake kategorije, stoga provjerite odgovara li postojećim oznakama

Osim toga: Na kraju sam upotrijebio obje metode, budući da što više fotografija imate, to je vaš model točniji.

3. Pomoću značajke "Reproduciraj" provjerite točnost modela. Promijenite udaljenosti, osvjetljenje, položaj ruku itd. Kako biste utvrdili gdje je model, a koji nije točan. Po potrebi dodajte još fotografija. (Fotografije 3-4)

4. Kad budete spremni, izvezite svoj Lobe ML model u TensorFlow (TF) Lite formatu.

Savjeti:

  • Prije uvoza fotografija napravite popis svih kategorija koje su vam potrebne i kako ih želite označiti (npr. "Smeće", "reciklirati", "kompost" itd.)

    Napomena: Upotrijebite iste oznake kao što je prikazano na gornjoj fotografiji "Oznake modela pločica" kako biste smanjili količinu koda koju trebate promijeniti

  • Uključite kategoriju "nije smeće" koja sadrži fotografije bilo čega drugog na fotografiji (npr. Ruke i ruke, pozadina itd.)
  • Ako je moguće, snimite fotografije s Pi kamere i uvezite u Lobe. To će uvelike poboljšati točnost vašeg modela!
  • Trebate više fotografija? Pogledajte skupove podataka otvorenog koda na Kaggleu, uključujući ovaj skup slika za klasifikaciju smeća!
  • Trebate dodatnu pomoć? Povežite se s Lobe Coommunity na Redditu!

Korak 3: Napravite ga: Hardver

Napravi to: Hardver!
Napravi to: Hardver!
Napravi to: Hardver!
Napravi to: Hardver!
Napravi to: Hardver!
Napravi to: Hardver!

1. Pažljivo povežite Pi kameru s Pi (za više informacija posjetite vodič za početak rada Zaklade Pi). (Fotografija 1)

2. Slijedite dijagram ožičenja za povezivanje gumba i LED dioda na Pi GPIO pinove.

  • Tipkalo: Spojite jednu nogicu tipke na GPIO pin 2. Drugu, preko otpornika, spojite na GPIO GND pin.
  • Žuta LED: Spojite pozitivnu (dužu) nogu na GPIO pin 17. Drugu nogu preko otpornika spojite na GPIO GND pin.
  • Plava LED: Spojite pozitivnu nogu na GPIO pin 27. Drugu nogu preko otpornika spojite na GPIO GND pin.
  • Zelena LED: Spojite pozitivnu nogu na GPIO pin 22. Drugu nogu preko otpornika spojite na GPIO GND pin.
  • Crvena LED: Spojite pozitivnu nogu na GPIO pin 23. Drugu nogu preko otpornika spojite na GPIO GND pin.
  • Bijela LED: Spojite pozitivnu nogu na GPIO pin 24. Drugu nogu preko otpornika spojite na GPIO GND pin.

3. Preporučuje se testiranje vašeg kruga na ploči i pokretanje programa prije lemljenja ili trajne veze. Da bismo to učinili, morat ćemo napisati i učitati naš softver, pa idemo na sljedeći korak!

Korak 4: Kodirajte ga: Softver

Kodirajte ga: Softver!
Kodirajte ga: Softver!
Kodirajte ga: Softver!
Kodirajte ga: Softver!

1. Na računalu otvorite WinSCP i spojite se na svoj Pi. Napravite mapu Lobe u početnom direktoriju vašeg Pi -a i stvorite mapu modela u tom direktoriju.

2. Povucite rezultirajući sadržaj mape Lobe TF na Pi. Zabilježite putanju datoteke:/home/pi/Lobe/model

3. Na Pi otvorite terminal i preuzmite knjižnicu lobe-python za Python3 pokretanjem sljedećih bash naredbi:

pip3 instalirajte

pip3 instalirajte režanj

4. Preuzmite kôd klasifikatora otpada (rpi_trash_classifier.py) iz ovog repoa na Pi (kliknite gumb "Kôd" kao što je prikazano na fotografiji 1).

  • Radije kopirate/lijepite? Ovdje nabavite sirovi kôd.
  • Radije preuzimate na računalo? Preuzmite repo/kôd na svoje računalo, a zatim prenesite Python kôd u Pi putem WinSCP -a (ili željenog programa za prijenos datoteka s udaljenog mjesta).

5. Nakon što spojite hardver na Pi -ove GPIO pinove, pročitajte primjer koda i ažurirajte sve putanje datoteka prema potrebi:

  • Red 29: put datoteke do Lobe TF modela
  • Linije 47 i 83: put datoteke do snimljenih slika putem Pi kamere

6. Ako je potrebno, ažurirajte oznake modela u kodu tako da se točno podudaraju s oznakama u vašem modelu Lobe (uključujući velika slova, interpunkciju itd.):

  • Redak 57: "smeće"
  • Redak 60: "recikliraj"
  • Redak 63: "kompost"
  • Redak 66: "postrojenje za opasni otpad"
  • Redak 69: "nije smeće!"

7. Pokrenite program pomoću Python3 u prozoru terminala:

python3 rpi_trash_classifier.py

Korak 5: Isprobajte: Pokrenite program

Testirajte: Pokrenite program!
Testirajte: Pokrenite program!
Testirajte: Pokrenite program!
Testirajte: Pokrenite program!
Testirajte: Pokrenite program!
Testirajte: Pokrenite program!

Pregled programa

Kada prvi put pokrenete program, trebat će neko vrijeme za učitavanje knjižnice TensorFlow i modela Lobe ML. Kad je program spreman za snimanje slike, svjetlo statusa (bijela LED) će pulsirati.

Nakon što snimite sliku, program će usporediti sliku s Lobe ML modelom i ispisati rezultirajuće predviđanje (redak 83). Izlaz određuje koje je svjetlo uključeno: žuto (smeće), plavo (recikliraj), zeleno (kompost) ili crveno (opasni otpad).

Ako se niti jedna od LED lampica indikatora ne uključi i statusna LED se vrati u pulsni način rada, to znači da snimljena slika "nije smeće", drugim riječima, ponovno snimite fotografiju!

Snimanje slike

Pritisnite gumb za snimanje slike. Imajte na umu da ćete možda morati pritisnuti tipku najmanje 1 s kako bi program registrirao tisak. Preporuča se snimiti neke probne slike, a zatim ih otvoriti na radnoj površini kako biste bolje razumjeli prikaz kamere i okvir.

Kako bi se korisniku omogućilo vrijeme za postavljanje objekta i prilagodbu razine svjetlosti fotoaparata, potrebno je oko 5 sekundi za potpuno snimanje slike. Ove postavke možete promijeniti u kodu (retci 35 i 41), ali imajte na umu da Pi Foundation preporučuje najmanje 2 sekunde za podešavanje razine svjetlosti.

Rješavanje problema

Najveći izazov je osigurati da snimljena slika bude ono što očekujemo, stoga odvojite malo vremena da pregledate slike i usporedite očekivane rezultate s indikativnim LED izlazom. Ako je potrebno, slike možete proslijediti modelu Lobe ML radi izravnog otkrivanja i brže usporedbe.

Treba napomenuti nekoliko stvari:

  • Knjižnica TensorFlow vjerojatno će baciti neke poruke upozorenja - to je tipično za verziju koja se koristi u ovom uzorku koda.
  • Oznake predviđanja moraju biti točno onako kako je napisano u funkciji led_select (), uključujući velika slova, interpunkciju i razmak. Promijenite ih ako imate drugačiji model Lobe.
  • Pi zahtijeva stalno napajanje. Svjetlo napajanja Pi treba biti jarko, stalno crveno.
  • Ako se jedna ili više LED lampica ne uključuju prema očekivanjima, provjerite prisiljavajući ih naredbom:

red_led.on ()

Korak 6: (Izborno) Izgradite ga: dovršite svoj krug

(Izborno) Izgradite ga: dovršite svoj krug!
(Izborno) Izgradite ga: dovršite svoj krug!
(Izborno) Izgradite ga: dovršite svoj krug!
(Izborno) Izgradite ga: dovršite svoj krug!
(Izborno) Izgradite ga: dovršite svoj krug!
(Izborno) Izgradite ga: dovršite svoj krug!

Sada kada smo testirali i, ako je potrebno, otklonili pogreške, naš projekt kako bi radio kako se očekuje, spremni smo za lemljenje našeg kruga!

Napomena: Ako nemate lemilicu, ovaj korak možete preskočiti. Jedna je alternativa premazati žičane spojeve vrućim ljepilom (ova će vam opcija omogućiti da kasnije popravite/dodate/upotrijebite stvari, ali je vjerojatnije da će se slomiti) ili upotrijebiti epoksid ili slično trajno ljepilo (ova će opcija biti mnogo izdržljivija ali nakon toga nećete moći koristiti krug ili potencijalno Pi)

Brzi komentar o izboru dizajna (Fotografija 1):

  • Odlučio sam se za ženske žice kratkospojnika za LED diode i Pi GPIO jer mi omogućuju uklanjanje LED dioda i zamjenu boja ili njihovo pomicanje po potrebi. Možete ih preskočiti ako želite trajne veze.
  • Slično, odabrao sam JST konektor za tipku.

Naprijed do zgrade

1. Prerežite svaku žicu ženskog kratkospojnika na pola (da, sve!). Pomoću skidača žica uklonite oko 1/4 (1/2 cm) izolacije žice.

2. Za svaku od LED dioda lemite otpornik od 220Ω na negativnu (kraću) nogu. (Fotografija 2)

3. Izrežite mali komad toplinske skupljajuće cijevi (1 cm (2 cm)) i gurnite LED i spoj otpornika. Provjerite je li dostupna druga noga otpornika, a zatim zagrijte skupljajuću cijev dok ne učvrsti spoj. (Fotografija 3)

4. Umetnite svaku LED diodu u par ženskih kratkospojnika. (Fotografija 4)

5. Označite kratkospojne žice (npr. Trakom), a zatim lemite žice kratkospojnika na tiskanu ploču (PCB). (Fotografija 5)

6. Zatim upotrijebite (izrezanu) žensku kratkospojnu žicu za povezivanje svake LED diode na odgovarajući Pi GPIO pin. Lemite i označite kratkospojnu žicu tako da se goli metal spoji na pozitivnu LED nogu preko PCB -a. (Fotografija 5)

Napomena: Gdje ćete lemiti ovu žicu ovisit će o rasporedu vaše PCB -a. Ovu žicu također možete lemiti izravno na pozitivnu žicu kratkospojnika LED.

7. Lemite otpornik od 220Ω na negativni (crni) kraj JST konektora. (Fotografija 6)

8. Lemite JST konektor i otpornik na tipku. (Fotografija 6)

9. Spojite žice kratkospojnika M-to-F između konektora tipke i GPIO pinova (podsjetnik: crno je GND).

10. Spojite PCB spojeve vrućim ljepilom ili epoksidom za sigurnije spajanje.

Napomena: ako odlučite koristiti epoksid, u budućnosti možda nećete moći koristiti Pi -jeve GPIO igle za druge projekte. Ako ste zabrinuti zbog toga, dodajte GPIO vrpčni kabel i umjesto toga na njega spojite kratkospojnike.

Korak 7: (Izborno) Izgradite: Slučaj

(Izborno) Izgradite: Slučaj!
(Izborno) Izgradite: Slučaj!
(Izborno) Izgradite: Slučaj!
(Izborno) Izgradite: Slučaj!
(Izborno) Izgradite: Slučaj!
(Izborno) Izgradite: Slučaj!
(Izborno) Izgradite: Slučaj!
(Izborno) Izgradite: Slučaj!

Napravite kućište za svoj Pi koji će držati kameru, gumb i LED diode na mjestu, a istovremeno štititi Pi. Dizajnirajte vlastito kućište ili slijedite naše upute za izradu u nastavku za brzu izradu prototipa kartonskog kućišta!

  1. Na vrhu male kartonske kutije označite mjesta za gumb, svjetlo statusa, svjetla identifikatora i prozor pi kamere (Fotografija 1).

    Napomena: Prozor Pi kamere trebao bi biti oko 3/4 "x 1/2"

  2. Preciznim nožem izrežite tragove.

    Napomena: možda ćete htjeti testirati veličine dok fotografirate (Fotografija 1)

  3. Izborno: Obojite kućište! Odlučio sam se za sprej boju:)
  4. Izrežite pravokutni poklopac "prozora" za Pi kameru (fotografija 4) i zalijepite s unutarnje strane kutije
  5. Na kraju, izrežite utor za Pi napojni kabel.

    Preporučuje se da prvo instalirate svu elektroniku kako biste pronašli najbolje mjesto za priključak pi kabela za napajanje

Korak 8: Instalirajte i implementirajte

Instaliraj i implementiraj!
Instaliraj i implementiraj!

To je to! Spremni ste za instalaciju i implementaciju vašeg projekta! Postavite kućište iznad kanti za smeće, priključite Pi i pokrenite program kako biste dobili brži i pouzdaniji način smanjenja otpada. Da!

Ide naprijed

  • Podijelite svoje projekte i ideje s drugim ljudima putem zajednice Lobe Reddit!
  • Provjerite Lobe Python GitHub repo za opći pregled kako koristiti Python za implementaciju šireg broja projekata Lobe
  • Pitanja ili zahtjevi za projekt? Ostavite komentar na ovaj projekt ili nas kontaktirajte izravno: [email protected]

Preporučeni: