Sisällysluettelo:
- Vaihe 1: Ennen kuin aloitamme
- Vaihe 2: Luo mukautettu ML -malli Lobessa
- Vaihe 3: Rakenna se: Laitteisto
- Vaihe 4: Koodaa se: Ohjelmisto
- Vaihe 5: Testaa se: Suorita ohjelma
- Vaihe 6: (Valinnainen) Rakenna se: Viimeistele piiri
- Vaihe 7: (Valinnainen) Rakenna se: tapaus
- Vaihe 8: Asenna ja ota käyttöön
Video: Tee Pi -roskakoriluokka ML: llä!: 8 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Trash Classifier -projekti, joka tunnetaan lämpimästi nimellä "Mihin se menee ?!", on suunniteltu tekemään asioiden heittämisestä nopeammin ja luotettavammin.
Tässä projektissa käytetään koneoppimismallia (ML), joka on koulutettu Lobessa, aloittelijaystävällisessä (ei koodia!) ML-mallin rakentajassa, tunnistamaan, joutuuko esine roskiin, kierrätykseen, kompostiin vai vaaralliseen jätteeseen. Malli ladataan sitten Raspberry Pi 4 -tietokoneeseen, jotta sitä voidaan käyttää missä tahansa roska -astioissa!
Tämä opetusohjelma opastaa sinua luomaan oman roskakoriluokitusprojektin Raspberry Pi -laitteelle Lobe TensorFlow -mallista Python3: ssa.
Vaikeusaste: Aloittelija ++ (jonkin verran tietoa piireistä ja koodauksesta on hyödyllistä)
Lukuaika: 5 min
Rakennusaika: 60-90 min
Hinta: ~ 70 dollaria (sisältäen Pi 4)
Tarvikkeet:
Ohjelmisto (PC-puoli)
- Lobe
- WinSCP (tai muu SSH -tiedostonsiirtomenetelmä, voi käyttää CyberDuck for Mac -käyttöjärjestelmää)
- Terminaali
- Etätyöpöytäyhteys tai RealVNC
Laitteisto
- Raspberry Pi, SD-kortti ja USB-C-virtalähde (5V, 2.5A)
- Pi -kamera
- Paina nappia
-
5 LEDiä (4 merkkivaloa ja 1 tila -LED)
- Keltainen LED: roskat
- Sininen LED: kierrätä
- Vihreä LED: komposti
- Punainen LED: vaarallinen jäte
- Valkoinen LED: tila
- 6220 ohmin vastukset
- 10 M-M-hyppyjohdinta
- Leipälauta, puolikokoinen
Jos päätät juottaa:
- 1 JST -liitin, vain naaraspää
- 2 M-F-hyppyjohdinta
- 10 F-F-hyppyjohtoa
- PCB
Kotelo
- Projektikotelo (esim. Pahvi-, puu- tai muovilaatikko, noin 6 "x 5" x 4 ")
-
0,5 x 0,5 tuumaa (2 x 2 cm) kirkas muovinen neliö
Esim. muovisesta ruoka -astian kannesta
- Velcro
Työkalut
- Lankaleikkurit
- Tarkkuusveitsi (esim. Tarkkaveitsi) ja leikkuumatto
- Juotosrauta (valinnainen)
- Kuumasulatustyökalu (tai muu johtamaton liima-epoksi toimii hyvin, mutta on pysyvä)
Vaihe 1: Ennen kuin aloitamme
Tässä projektissa oletetaan, että aloitat täysin valmiilla Raspberry Pi -laitteella ilman päätä. Tässä on aloittelijaystävällinen opas tämän tekemiseen.
Se auttaa myös jonkin verran tietoa seuraavista asioista:
-
Tutustuminen Raspberry Pi: hen
- Tässä on kätevä aloitusopas!
- Myös hyödyllinen: Pi -kameran käytön aloittaminen
-
Python -koodin lukeminen ja muokkaaminen (sinun ei tarvitse kirjoittaa ohjelmaa, vain muokata)
Johdatus Pythoniin Raspberry Pi: n kanssa
- Fritzing -kytkentäkaavioiden lukeminen
-
Leipälaudan käyttäminen
Leipälaudan opetusohjelman käyttö
Ota selvää minne roskasi menee
Jokaisella USA: n kaupungissa (ja olettaisin, että maapallo) on oma roska/kierrätys/komposti/jne. keräysjärjestelmä. Tämä tarkoittaa sitä, että tarkan roskakoriluokituksen tekemiseksi meidän on 1) rakennettava mukautettu ML -malli (katamme tämän seuraavassa vaiheessa - ei koodia!) Ja 2) tiedämme, mihin kukin roskakori menee.
Koska en aina tiennyt oikeaa säiliötä jokaiselle tuotteelle, jota käytin mallini kouluttamiseen, käytin Seattle Utilities -lehtistä (Kuva 1) ja myös tätä kätevää "Mihin se menee?" hakutyökalu Seattlen kaupunkiin! Tarkista, mitä resursseja kaupungissasi on, etsimällä kaupunkisi jätehuoltotyökalua ja tutustumalla sen verkkosivustoon.
Vaihe 2: Luo mukautettu ML -malli Lobessa
Lobe on helppokäyttöinen työkalu, jossa on kaikki mitä tarvitset koneoppimisideoidesi toteuttamiseen. Näytä sille esimerkkejä siitä, mitä haluat sen tekevän, ja se kouluttaa automaattisesti mukautetun koneoppimismallin, joka voidaan viedä reunalaitteille ja -sovelluksille. Aloittaminen ei vaadi kokemusta. Voit harjoitella ilmaiseksi omalla tietokoneellasi!
Tässä on lyhyt katsaus Loben käyttöön:
1. Avaa Lobe -ohjelma ja luo uusi projekti.
2. Ota tai tuo valokuvia ja merkitse ne sopiviin luokkiin. (Kuva 1) Tarvitsemme näitä tarroja myöhemmin projektin ohjelmisto -osassa.
Valokuvia voi tuoda kahdella tavalla:
- Ota kuvia kohteista suoraan tietokoneen verkkokamerasta tai
-
Tuo valokuvia tietokoneen nykyisistä kansioista.
Muista, että valokuvakansion nimeä käytetään luokan tunnisteen nimenä, joten varmista, että se vastaa olemassa olevia tunnisteita
Sen lisäksi: päädyin käyttämään molempia menetelmiä, koska mitä enemmän valokuvia sinulla on, sitä tarkempi malli on.
3. Testaa mallin tarkkuus "Toista" -ominaisuuden avulla. Muuta etäisyyksiä, valaistusta, käden asentoja jne. Tunnistaaksesi, missä malli on ja ei ole tarkka. Lisää tarvittaessa kuvia. (Kuvat 3-4)
4. Kun olet valmis, vie Lobe ML -mallisi TensorFlow (TF) Lite -muodossa.
Vinkkejä:
-
Tee ennen valokuvien tuomista luettelo kaikista tarvitsemistasi luokista ja siitä, miten haluat merkitä ne (esim. "Roskat", "kierrättää", "kompostit" jne.)
Huomautus: Käytä samoja tarroja kuin yllä olevassa "Lobe Model Labels" -kuvassa, jotta muutettavan koodin määrää vähennetään
- Sisällytä "ei roskakoriin" -luokka, jossa on kuvia kaikesta muusta, mitä kuvassa saattaa olla (esim. Kädet ja käsivarret, tausta jne.)
- Jos mahdollista, ota kuvia Pi -kamerasta ja tuo se Lobeen. Tämä parantaa huomattavasti mallisi tarkkuutta!
- Tarvitsetko lisää valokuvia? Tutustu avoimen lähdekoodin tietojoukkoihin Kagglessa, mukaan lukien tämä roskien luokittelukuvasarja!
- Tarvitsetko lisää apua? Ota yhteys Lobe -yhteisöön Redditissä!
Vaihe 3: Rakenna se: Laitteisto
1. Liitä Pi -kamera varovasti Pi -laitteeseen (lisätietoja on Pi -säätiön aloitusoppaassa). (Kuva 1)
2. Liitä painike ja LEDit Pi GPIO -nastoihin kytkentäkaavion mukaisesti.
- Painike: Kytke painikkeen toinen jalka GPIO -nastaan 2. Liitä toinen vastuksen kautta GPIO GND -tappiin.
- Keltainen LED: Kytke positiivinen (pidempi) jalka GPIO -nastaan 17. Liitä toinen jalka vastuksen kautta GPIO GND -tappiin.
- Sininen LED: Liitä positiivinen jalka GPIO -nastaan 27. Liitä toinen jalka vastuksen kautta GPIO GND -tappiin.
- Vihreä LED: Liitä positiivinen jalka GPIO -nastaan 22. Liitä toinen jalka vastuksen kautta GPIO GND -tappiin.
- Punainen LED: Liitä positiivinen jalka GPIO -nastaan 23. Liitä toinen jalka vastuksen kautta GPIO GND -tappiin.
- Valkoinen LED: Kytke positiivinen jalka GPIO -nastaan 24. Liitä toinen jalka vastuksen kautta GPIO GND -tappiin.
3. On suositeltavaa testata piiri piirilevylle ja suorittaa ohjelma ennen juottamista tai minkä tahansa liitännän tekemistä pysyväksi. Tätä varten meidän on kirjoitettava ja ladattava ohjelmistomme, joten siirrymme seuraavaan vaiheeseen!
Vaihe 4: Koodaa se: Ohjelmisto
1. Avaa tietokoneellasi WinSCP ja muodosta yhteys Pi -laitteeseesi. Luo Lobe -kansio Pi: n kotihakemistoosi ja luo mallikansio kyseiseen hakemistoon.
2. Vedä tuloksena oleva Lobe TF -kansion sisältö Pi: lle. Merkitse tiedostopolku muistiin:/home/pi/Lobe/model
3. Avaa Pi: n päätelaite ja lataa lobe-python-kirjasto Python3: lle suorittamalla seuraavat bash-komennot:
pip3 install
pip3 asentaa lohko
4. Lataa roskakoriluokituskoodi (rpi_trash_classifier.py) tästä reposta Pi: lle (napsauta "Koodi" -painiketta kuvan 1 mukaisesti).
- Haluatko kopioida/liittää? Hanki raaka koodi täältä.
- Haluatko ladata tietokoneellesi? Lataa repo/koodi tietokoneellesi ja siirrä sitten Python -koodi Pi: lle WinSCP: n (tai haluamasi etätiedostonsiirto -ohjelman) kautta.
5. Kun olet liittänyt laitteiston Pi: n GPIO -nastoihin, lue esimerkkikoodi ja päivitä tarvittaessa tiedostopolut:
- Rivi 29: tiedoston reitti Lobe TF -malliin
- Rivit 47 ja 83: PiP -kameran kautta otettujen tiedostojen polku
6. Päivitä tarvittaessa koodin mallitarrat vastaamaan tarkasti Lobe -mallisi tarroja (mukaan lukien isot kirjaimet, välimerkit jne.):
- Rivi 57: "roskat"
- Rivi 60: "kierrätä"
- Rivi 63: "komposti"
- Rivi 66: "vaarallisen jätteen käsittelylaitos"
- Rivi 69: "ei roskaa!"
7. Suorita ohjelma pääteikkunan Python3: lla:
python3 rpi_trash_classifier.py
Vaihe 5: Testaa se: Suorita ohjelma
Ohjelman yleiskatsaus
Kun käynnistät ohjelman ensimmäisen kerran, TensorFlow -kirjaston ja Lobe ML -mallin lataaminen kestää jonkin aikaa. Kun ohjelma on valmis ottamaan kuvan, tilavalo (valkoinen LED) vilkkuu.
Kun olet ottanut kuvan, ohjelma vertaa kuvaa Lobe ML -malliin ja antaa tuloksena olevan ennusteen (rivi 83). Lähtö määrittää, mikä valo syttyy: keltainen (roska), sininen (kierrätä), vihreä (komposti) tai punainen (vaarallinen jäte).
Jos mikään merkkivaloista ei syty ja tilan merkkivalo palaa pulssitilaan, se tarkoittaa, että otettu kuva ei ollut "roskakori", toisin sanoen ota kuva uudelleen!
Kuvan ottaminen
Ota kuva painamalla painiketta. Huomaa, että sinun on ehkä pidettävä painiketta painettuna vähintään 1 sekunnin ajan, jotta ohjelma rekisteröi lehdistön. On suositeltavaa ottaa testikuvia ja avata ne työpöydällä, jotta kameranäkymä ja kehys ymmärretään paremmin.
Jotta käyttäjä saisi aikaa kohteen sijoittamiseen ja kameran valotason säätämiseen, kuvan ottaminen kestää noin 5 sekuntia. Voit muuttaa näitä asetuksia koodissa (rivit 35 ja 41), mutta muista, että Pi Foundation suosittelee vähintään 2 sekuntia valotason säätämiseen.
Ongelmien karttoittaminen
Suurin haaste on varmistaa, että otettu kuva on mitä odotamme, joten käytä jonkin aikaa kuvien tarkistamiseen ja odotettujen tulosten vertaamiseen LED -merkkivalolla. Tarvittaessa voit siirtää kuvia Lobe ML -malliin suoraa päätelmää ja nopeampaa vertailua varten.
Muutama huomioitava asia:
- TensorFlow -kirjasto lähettää todennäköisesti joitakin varoitusviestejä - tämä on tyypillistä tässä mallikoodissa käytetylle versiolle.
- Ennustetarrojen on oltava täsmälleen sellaisia kuin led_select () -funktiossa on kirjoitettu, mukaan lukien isot kirjaimet, välimerkit ja välit. Muuta nämä, jos sinulla on eri Lobe -malli.
- Pi vaatii tasaisen virtalähteen. Pi: n virran merkkivalon tulisi olla kirkas, kiinteä punainen.
- Jos yksi tai useampi LED ei syty odotetulla tavalla, tarkista pakottamalla ne päälle komennolla:
red_led.on ()
Vaihe 6: (Valinnainen) Rakenna se: Viimeistele piiri
Nyt kun olemme testanneet ja tarvittaessa vianetsinneet projektiamme niin, että se toimii odotetusti, olemme valmiita juottamaan piirimme!
Huomautus: Jos sinulla ei ole juotinta, voit ohittaa tämän vaiheen. Yksi vaihtoehto on päällystää johdinliitännät kuumaliimalla (tämän vaihtoehdon avulla voit korjata/lisätä/käyttää asioita myöhemmin, mutta se rikkoutuu todennäköisemmin) tai käyttää epoksia tai vastaavaa pysyvää liimaa (tämä vaihtoehto on paljon kestävämpi) mutta et voi käyttää piiriä tai mahdollisesti Pi: tä tämän jälkeen)
Nopea kommentti suunnitteluvalinnoistani (Kuva 1):
- Valitsin naarashyppyjohtimet LEDeille ja Pi GPIO: lle, koska niiden avulla voin poistaa LEDit ja vaihtaa värejä tai siirtää niitä tarvittaessa. Voit ohittaa nämä, jos haluat tehdä yhteyksistä pysyviä.
- Samoin valitsin JST -liittimen painikkeelle.
Edelleen rakentamiseen
1. Leikkaa jokainen naarashyppylanka puoliksi (kyllä, kaikki!). Poista langanerottimilla noin 1/2 cm langaneristeestä.
2. Juotetaan jokaiselle LED -valolle 220 Ω vastus negatiiviseen (lyhyempään) jalkaan. (Kuva 2)
3. Leikkaa pieni pala, noin 1 cm (2 cm) lämpökutistusputkea ja työnnä LED- ja vastusliitos. Varmista, että toinen vastusjalka on käytettävissä, ja lämmitä sitten kutistusputkea, kunnes se kiinnittää liitoksen. (Kuva 3)
4. Liitä jokainen LED pariliitäntäkaapelipariin. (Kuva 4)
5. Merkitse hyppyjohtimet (esim. Teipillä) ja juota sitten hyppyjohtimet piirilevyyn (PCB). (Kuva 5)
6. Käytä seuraavaksi (katkaistu) naarashyppyjohdinta liittääksesi jokaisen LEDin omaan Pi GPIO -tapaansa. Juotos ja merkitse hyppyjohdin niin, että paljas metalli yhdistyy positiiviseen LED -jalkaan piirilevyn kautta. (Kuva 5)
Huomautus: Missä juotat tämän langan, riippuu piirilevyn asettelusta. Voit myös juottaa tämän johdon suoraan positiiviseen LED -hyppyjohtoon.
7. Juotos 220Ω: n vastus JST -liittimen negatiiviseen (mustaan) päähän. (Kuva 6)
8. Juotos JST -liitin ja vastus painikkeeseen. (Kuva 6)
9. Liitä M-F-hyppyjohtimet painonappiliittimen ja GPIO-nastojen väliin (muistutus: musta on GND).
10. Päällystä liitännät PCB kuumaliimalla tai epoksilla, jotta liitos on turvallisempi.
Huomautus: jos päätät käyttää epoksia, et ehkä voi käyttää Pi: n GPIO -nastoja muihin projekteihin tulevaisuudessa. Jos olet huolissasi tästä, lisää GPIO -nauhakaapeli ja kytke hyppyjohtimet siihen.
Vaihe 7: (Valinnainen) Rakenna se: tapaus
Luo Pi: lle kotelo, joka pitää kameran, painikkeen ja LEDit paikallaan ja samalla suojaa Pi: tä. Suunnittele oma kotelosi tai noudata alla olevia rakennusohjeitamme, jotta voit nopeasti prototyypittää pahvilaatikon!
-
Pienen pahvilaatikon yläosassa voit seurata painikkeen, tilavalon, tunnistusvalojen ja pi -kameran ikkunan sijaintia (Kuva 1).
Huomautus: Pi -kameran ikkunan tulisi olla noin 3/4 "x 1/2"
-
Leikkaa jäljet tarkkuusveitselläsi.
Huomautus: haluat ehkä testata kokoja matkan varrella (Kuva 1)
- Valinnainen: maalaa kotelo! Valitsin ruiskumaalin:)
- Leikkaa Pi -kameralle suorakulmainen "ikkunakansi" (Kuva 4) ja liimaa laatikon sisäpuolelle
-
Leikkaa lopuksi aukko Pi -virtajohdolle.
On suositeltavaa asentaa ensin kaikki elektroniikka, jotta löydät parhaan paikan pi -virtakaapelin paikalle
Vaihe 8: Asenna ja ota käyttöön
Se siitä! Olet valmis asentamaan ja ottamaan projektisi käyttöön! Aseta kotelo roskakoriesi yläpuolelle, liitä Pi ja käynnistä ohjelma saadaksesi nopeamman ja luotettavamman tavan vähentää jätteitämme. Jee!
Eteenpäin
- Jaa projektisi ja ideasi muiden kanssa Lobe Reddit -yhteisön kautta!
- Katso Lobe Python GitHub reposta yleiskatsaus siitä, miten Pythonia voidaan käyttää laajemman valikoiman Lobe -projekteja
- Kysymyksiä tai projektipyyntöjä? Jätä kommentti tästä projektista tai ota meihin yhteyttä suoraan: [email protected]
Suositeltava:
Tee se itse - tee USB -minikaiutinjärjestelmä PAM8403: lla ja pahvilla - Kultainen ruuvi: 5 vaihetta
Tee se itse - tee USB -minikaiutinjärjestelmä PAM8403: lla ja pahvilla | Kultainen ruuvi: Tänään näytän sinulle, kuinka tehdä USB -minikaiutinjärjestelmä PAM8403 -vahvistinmoduulilla ja pahvilla. Se on erittäin helppoa halpoilla materiaaleilla
Tee oma Retro Nixie -kello RTC: llä!: 7 vaihetta (kuvilla)
Tee oma Retro Nixie -kello RTC: llä!: Tässä projektissa näytän sinulle, kuinka luoda retro -nixie -kello. Tämä tarkoittaa, että näytän sinulle, kuinka voit ohjata nixie -putkia korkeajännitteisellä DC -virtalähteellä, ja sitten yhdistän 4 nixie -putkea Arduinon, reaaliaikaisen kellon (RTC) ja
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: 6 vaihetta (kuvilla)
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: Hei! Nimeni on Armaan. Olen 13-vuotias Massachusettsin poika. Tämä opetusohjelma näyttää, kuten voit päätellä otsikosta, kuinka rakentaa Raspberry Pi Drone. Tämä prototyyppi osoittaa, kuinka dronit kehittyvät ja kuinka suuri rooli niillä voi olla
Tee oma oskilloskooppi (mini -DSO) helposti STC MCU: lla: 9 vaihetta (kuvilla)
Tee oma oskilloskooppi (Mini DSO) helposti STC MCU: lla: Tämä on yksinkertainen oskilloskooppi, joka on valmistettu STC MCU: lla. Tämän Mini DSO: n avulla voit tarkkailla aaltomuotoa. Aikaväli: 100us-500ms Jännitealue: 0-30V Piirrä tila: vektori tai piste
Tee radioteleskooppi Raspberry Pi: llä: 6 vaihetta (kuvilla)
Tee radioteleskooppi Raspberry Pi: llä: Optisen teleskoopin hankkiminen on todella helppoa. Voit vain ostaa sellaisen tällaisten kaukoputkien valmistajalta. Samaa ei kuitenkaan voida sanoa radioteleskoopeista. Yleensä ne on tehtävä itse. Tässä ohjeessa näytän, kuinka t