Turinys:
- 1 žingsnis: Prieš pradėdami
- 2 veiksmas: sukurkite pasirinktinį ML modelį „Lobe“
- 3 žingsnis: sukurkite: aparatinė įranga
- 4 žingsnis: koduokite: programinė įranga
- 5 žingsnis: išbandykite: paleiskite programą
- 6 veiksmas: (neprivaloma) Sukurkite: užbaigkite grandinę
- 7 žingsnis: (neprivaloma) Sukurkite: dėklą
- 8 veiksmas: įdiekite ir įdiekite
Video: Padarykite „Pi“šiukšlių klasifikatorių naudodami ML!: 8 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Projektas „Šiukšlių klasifikatorius“, meiliai žinomas kaip „Kur tai dingsta ?!“, sukurtas tam, kad daiktų išmetimas būtų greitesnis ir patikimesnis.
Šiame projekte naudojamas mašininio mokymosi (ML) modelis, išmokytas „Lobe“, pradedantiesiems pritaikyto (be kodo!) ML modelio kūrėjo, siekiant nustatyti, ar objektas patenka į šiukšles, perdirbimą, kompostą ar pavojingas atliekas. Tada modelis įkeliamas į „Raspberry Pi 4“kompiuterį, kad jį būtų galima naudoti visur, kur rasite šiukšlių dėžių!
Šioje pamokoje aprašoma, kaip sukurti „Trash Classifier“projektą „Raspberry Pi“naudojant „Lobe TensorFlow“modelį „Python3“.
Sunkumas: pradedantiesiems ++ (kai kurios žinios su grandinėmis ir kodavimu yra naudingos)
Skaitymo laikas: 5 min
Sukūrimo laikas: 60-90 min
Kaina: ~ 70 USD (įskaitant Pi 4)
Priedai:
Programinė įranga (kompiuterio pusėje)
- Lobė
- „WinSCP“(arba kitas SSH failų perdavimo būdas, gali naudoti „CyberDuck“, skirtą „Mac“)
- Terminalas
- Ryšys su nuotoliniu darbalaukiu arba „RealVNC“
Techninė įranga
- „Raspberry Pi“, SD kortelė ir USB-C maitinimo šaltinis (5V, 2.5A)
- Pi kamera
- Mygtukas
-
5 šviesos diodai (4 indikatoriai ir 1 būsenos šviesos diodas)
- Geltonas šviesos diodas: šiukšlės
- Mėlynas šviesos diodas: perdirbti
- Žalia lemputė: kompostas
- Raudonas šviesos diodas: pavojingos atliekos
- Baltas šviesos diodas: būsena
- 6 220 omų rezistoriai
- 10 M-M jungiamųjų laidų
- Duonos lenta, pusiau dydžio
Jei pasirinksite lituoti:
- 1 JST jungtis, tik moteriškas galas
- 2 jungiamieji laidai nuo M iki F
- 10 jungiamųjų laidų nuo F iki F
- PCB
Korpusas
- Projekto dėklas (pvz., Kartoninė, medinė ar plastikinė dėžutė, maždaug 6 x 5 colių x 4 colių)
-
0,5 x 0,5 colio (2 x 2 cm) skaidrus plastikinis kvadratas
Pvz. nuo plastikinio maisto indo dangtelio
- Velcro
Įrankiai
- Vielos pjaustytuvai
- Tikslus peilis (pvz., Peilis peilis) ir pjovimo kilimėlis
- Lituoklis (neprivaloma)
- Karšto lydymo įrankis (arba kiti nelaidūs klijai-epoksidinė medžiaga puikiai veikia, bet yra nuolatinė)
1 žingsnis: Prieš pradėdami
Šiame projekte daroma prielaida, kad pradedate nuo visiškai paruošto „Raspberry Pi“be konfigūracijos. Štai pradedantiesiems skirtas vadovas, kaip tai padaryti.
Tai taip pat padeda turėti tam tikrų žinių apie šiuos dalykus:
-
Susipažinimas su „Raspberry Pi“
- Štai patogus pradžios vadovas!
- Taip pat naudinga: Darbo su „Pi“fotoaparatu pradžia
-
„Python“kodo skaitymas ir redagavimas (jums nereikės rašyti programos, tiesiog redaguokite)
Įvadas į „Python“su „Raspberry Pi“
- „Fritzing“laidų schemų skaitymas
-
Duonos lentos naudojimas
Kaip naudotis duonos lentos pamoka
Sužinokite, kur dings jūsų šiukšlės
Kiekvienas miestas visoje JAV (ir aš manyčiau, kad Žemės rutulys) turi savo šiukšles/perdirbimą/kompostą/ir tt. surinkimo sistema. Tai reiškia, kad norėdami sukurti tikslią šiukšlių klasifikatorių, turėsime 1) sukurti pasirinktinį ML modelį (tai aptarsime kitame žingsnyje - jokio kodo!) Ir 2) žinoti, kur eina kiekvienas šiukšlių gabalas.
Kadangi ne visada žinojau tinkamą dėžę kiekvienam daiktui, kurį naudoju mokydamas savo modelį, naudoju „Sietlo komunalinių paslaugų“skrajutę (1 nuotrauka), taip pat šį patogų „Kur tai dingsta?“paieškos įrankis Sietlo miestui! Patikrinkite, kokie ištekliai yra jūsų mieste, ieškodami miesto šiukšlių surinkimo priemonės ir peržiūrėdami jos svetainę.
2 veiksmas: sukurkite pasirinktinį ML modelį „Lobe“
„Lobe“yra lengvai naudojamas įrankis, turintis viską, ko reikia, kad jūsų mašininio mokymosi idėjos būtų įgyvendintos. Parodykite jam to, ką norite, pavyzdžius, ir jis automatiškai moko pasirinktinį mašininio mokymosi modelį, kurį galima eksportuoti į krašto įrenginius ir programas. Norėdami pradėti, tam nereikia jokios patirties. Galite mokytis savo kompiuteryje nemokamai!
Štai trumpa „Lobe“naudojimo apžvalga:
1. Atidarykite „Lobe“programą ir sukurkite naują projektą.
2. Fotografuokite arba importuokite nuotraukas ir pažymėkite jas atitinkamose kategorijose. (1 nuotrauka) Šių etikečių mums prireiks vėliau projekto programinės įrangos dalyje.
Yra du nuotraukų importavimo būdai:
- Fotografuokite daiktus tiesiai iš kompiuterio žiniatinklio kameros arba
-
Importuokite nuotraukas iš esamų savo kompiuterio aplankų.
Atminkite, kad nuotraukų aplanko pavadinimas bus naudojamas kaip kategorijos etiketės pavadinimas, todėl įsitikinkite, kad jis atitinka esamas etiketes
Be to: aš galiausiai naudoju abu metodus, nes kuo daugiau nuotraukų turite, tuo tikslesnis jūsų modelis.
3. Norėdami patikrinti modelio tikslumą, naudokite funkciją „Play“. Pakeiskite atstumus, apšvietimą, rankų padėtį ir pan., Kad nustatytumėte, kur modelis yra ir nėra tikslus. Prireikus pridėkite daugiau nuotraukų. (3–4 nuotraukos)
4. Kai būsite pasiruošę, eksportuokite „Lobe ML“modelį „TensorFlow“(TF) Lite formatu.
Patarimai:
-
Prieš importuodami nuotraukas, sudarykite visų jums reikalingų kategorijų sąrašą ir tai, kaip norite jas pažymėti (pvz., „Šiukšlės“, „perdirbti“, „kompostas“ir kt.)
Pastaba: naudokite tas pačias etiketes, kaip parodyta aukščiau esančioje „Lobe Model Labels“nuotraukoje, kad sumažintumėte reikiamo kodo kiekį
- Įtraukite kategoriją „ne šiukšliadėžė“, kurioje yra nuotraukų, kas gali būti nuotraukoje (pvz., Jūsų rankos ir rankos, fonas ir pan.)
- Jei įmanoma, fotografuokite iš „Pi“kameros ir importuokite į „Lobe“. Tai labai pagerins jūsų modelio tikslumą!
- Reikia daugiau nuotraukų? Peržiūrėkite atvirojo kodo duomenų rinkinius „Kaggle“, įskaitant šį šiukšlių klasifikacijos vaizdų rinkinį!
- Reikia daugiau pagalbos? Prisijunkite prie „Lobe“bendruomenės „Reddit“!
3 žingsnis: sukurkite: aparatinė įranga
1. Atsargiai prijunkite „Pi“kamerą prie „Pi“(daugiau informacijos rasite „Pi Foundation“darbo pradžios vadove). (1 nuotrauka)
2. Norėdami prijungti mygtuką ir šviesos diodus prie „Pi GPIO“kaiščių, vadovaukitės prijungimo schema.
- Mygtukas: vieną mygtuko kojelę prijunkite prie GPIO kaiščio 2. Kitą per rezistorių prijunkite prie GPIO GND kaiščio.
- Geltonas šviesos diodas: prijunkite teigiamą (ilgesnę) koją prie GPIO kaiščio 17. Prijunkite kitą koją per rezistorių prie GPIO GND kaiščio.
- Mėlynas šviesos diodas: prijunkite teigiamą kojelę prie GPIO kaiščio 27. Prijunkite kitą koją per rezistorių prie GPIO GND kaiščio.
- Žalias šviesos diodas: prijunkite teigiamą kojelę prie GPIO kaiščio 22. Kitą koją per rezistorių prijunkite prie GPIO GND kaiščio.
- Raudonas šviesos diodas: prijunkite teigiamą kojelę prie GPIO kaiščio 23. Prijunkite kitą koją per rezistorių prie GPIO GND kaiščio.
- Baltas šviesos diodas: prijunkite teigiamą kojelę prie GPIO kaiščio 24. Prijunkite kitą koją per rezistorių prie GPIO GND kaiščio.
3. Rekomenduojama prieš litavimą arba bet kokių jungčių pastovumą išbandyti grandinę ant duonos lentos ir paleisti programą. Norėdami tai padaryti, turime parašyti ir įkelti savo programinę įrangą, todėl pereikime prie kito žingsnio!
4 žingsnis: koduokite: programinė įranga
1. Kompiuteryje atidarykite „WinSCP“ir prisijunkite prie „Pi“. Sukurkite „Lobe“aplanką „Pi“namų kataloge ir sukurkite modelio aplanką tame kataloge.
2. Vilkite gautą „Lobe TF“aplanko turinį ant „Pi“. Pažymėkite failo kelią:/home/pi/Lobe/model
3. „Pi“įrenginyje atidarykite terminalą ir atsisiųskite „Python3“lobe-python biblioteką, vykdydami šias „bash“komandas:
pip3 įdiegti
pip3 įdiegti skiltį
4. Atsisiųskite šiukšlių klasifikatoriaus kodą (rpi_trash_classifier.py) iš šios repos į „Pi“(spustelėkite mygtuką „Kodas“, kaip parodyta 1 nuotraukoje).
- Norite kopijuoti/įklijuoti? Gaukite neapdorotą kodą čia.
- Ar norite atsisiųsti į savo kompiuterį? Atsisiųskite repo/kodą į savo kompiuterį, tada perkelkite „Python“kodą į „Pi“naudodami „WinSCP“(arba pageidaujamą nuotolinę failų perkėlimo programą).
5. Kai prijungsite aparatūrą prie „Pi“GPIO kaiščių, perskaitykite pavyzdinį kodą ir, jei reikia, atnaujinkite visus failų kelius:
- 29 eilutė: failo kelias į „Lobe TF“modelį
- 47 ir 83 eilutės: failų kelias, skirtas fotografuoti naudojant „Pi“kamerą
6. Jei reikia, atnaujinkite kodo modelio etiketes, kad jos tiksliai atitiktų jūsų „Lobe“modelio etiketes (įskaitant didžiąsias raides, skyrybos ženklus ir kt.):
- 57 eilutė: „šiukšlės“
- 60 eilutė: „perdirbti“
- 63 eilutė: „kompostas“
- 66 eilutė: „pavojingų atliekų įrenginys“
- 69 eilutė: "ne šiukšlės!"
7. Paleiskite programą naudodami „Python3“terminalo lange:
python3 rpi_trash_classifier.py
5 žingsnis: išbandykite: paleiskite programą
Programos apžvalga
Pirmą kartą paleidus programą, užtruks šiek tiek laiko, kol bus įkelta „TensorFlow“biblioteka ir „Lobe ML“modelis. Kai programa bus paruošta fotografuoti, pradės mirksėti būsenos lemputė (baltas šviesos diodas).
Kai padarysite vaizdą, programa palygins vaizdą su „Lobe ML“modeliu ir parodys gautą prognozę (83 eilutė). Išvestis nustato, kuri lemputė įjungiama: geltona (šiukšlės), mėlyna (perdirbti), žalia (kompostas) arba raudona (pavojingos atliekos).
Jei nė vienas indikatoriaus šviesos diodas neįsijungia ir būsenos šviesos diodas grįžta į pulso režimą, tai reiškia, kad užfiksuotas vaizdas buvo „ne šiukšliadėžė“, kitaip tariant, padarykite nuotrauką iš naujo!
Vaizdo fiksavimas
Norėdami užfiksuoti vaizdą, paspauskite mygtuką. Atminkite, kad jums gali tekti nuspausti mygtuką bent 1 sekundę, kad programa užregistruotų spaudą. Rekomenduojama padaryti keletą bandomųjų vaizdų, tada atidaryti juos darbalaukyje, kad geriau suprastumėte fotoaparato vaizdą ir kadrą.
Kad vartotojui būtų suteikta laiko pastatyti objektą ir kad fotoaparato apšvietimo lygis būtų sureguliuotas, visiškai užfiksuoti reikia maždaug 5 s. Galite pakeisti šiuos kodo nustatymus (35 ir 41 eilutės), tačiau atminkite, kad „Pi Foundation“rekomenduoja mažiausiai 2 sekundes reguliuoti šviesos lygį.
Problemų sprendimas
Didžiausias iššūkis yra užtikrinti, kad užfiksuotas vaizdas būtų toks, kokio tikimės, todėl skirkite šiek tiek laiko vaizdams peržiūrėti ir palyginti tikėtinus rezultatus su indikatoriaus LED išvestimi. Jei reikia, galite perduoti vaizdus į „Lobe ML“modelį, kad būtų galima padaryti tiesioginį išvadą ir greičiau palyginti.
Keletas dalykų, į kuriuos reikia atkreipti dėmesį:
- „TensorFlow“biblioteka greičiausiai pateiks įspėjamuosius pranešimus - tai būdinga šiame pavyzdiniame kode naudojamai versijai.
- Numatymo etiketės turi būti tiksliai tokios, kaip parašyta funkcijoje led_select (), įskaitant didžiąsias raides, skyrybos ženklus ir tarpus. Būtinai pakeiskite juos, jei turite kitokį „Lobe“modelį.
- „Pi“reikia pastovaus maitinimo šaltinio. „Pi“maitinimo lemputė turėtų būti ryški, vientisai raudona.
- Jei vienas ar keli šviesos diodai neįsijungia, kai tikimasi, patikrinkite, priversdami juos įjungti naudodami komandą:
red_led.on ()
6 veiksmas: (neprivaloma) Sukurkite: užbaigkite grandinę
Dabar, kai išbandėme ir prireikus derinome savo projektą, kad jis veiktų taip, kaip tikėtasi, esame pasiruošę lituoti savo grandinę!
Pastaba: jei neturite lituoklio, šį veiksmą galite praleisti. Viena alternatyva yra vielos jungtis padengti karštais klijais (ši parinktis leis jums pataisyti/pridėti/naudoti daiktus vėliau, tačiau yra didesnė tikimybė sulūžti), arba naudoti epoksidą ar panašius nuolatinius klijus (ši parinktis bus daug patvaresnė) bet tai atlikę negalėsite naudoti grandinės ar potencialiai Pi)
Greitas komentaras apie mano dizaino pasirinkimus (1 nuotrauka):
- Šviesos diodams ir „Pi GPIO“pasirinkau moteriškus trumpiklius, nes jie leidžia pašalinti šviesos diodus ir pakeisti spalvas arba prireikus jas perkelti. Galite praleisti šiuos veiksmus, jei norite, kad ryšiai būtų nuolatiniai.
- Panašiai aš mygtukui pasirinkau JST jungtį.
Pirmyn į statybas
1. Perpjaukite kiekvieną moterišką trumpiklio laidą per pusę (taip, visus!). Naudodami vielos nuėmiklius, pašalinkite maždaug 1/4 colio (1/2 cm) laido izoliacijos.
2. Kiekvienam šviesos diodui prijunkite 220Ω rezistorių prie neigiamos (trumpesnės) kojelės. (2 nuotrauka)
3. Iškirpkite nedidelį gabalėlį, apie 1 cm (2 cm) termiškai susitraukiančio vamzdžio ir stumkite virš šviesos diodo ir rezistoriaus jungties. Įsitikinkite, kad prieinama kita rezistoriaus kojelė, tada kaitinkite susitraukimo vamzdelį, kol jis pritvirtins jungtį. (3 nuotrauka)
4. Įdėkite kiekvieną šviesos diodą į jungiamųjų laidų porą. (4 nuotrauka)
5. Pažymėkite trumpiklius (pvz., Juostele), tada lituokite jungiamuosius laidus ant spausdintinės plokštės (PCB). (5 nuotrauka)
6. Tada naudokite (perpjautą) jungiamąjį laidą, kad prijungtumėte kiekvieną šviesos diodą prie atitinkamo Pi GPIO kaiščio. Lituokite ir pažymėkite jungiamąjį laidą taip, kad plikas metalas per PCB prisijungtų prie teigiamos LED kojos. (5 nuotrauka)
Pastaba: kur lituosite šį laidą, priklausys nuo jūsų PCB išdėstymo. Taip pat galite lituoti šį laidą tiesiai prie teigiamo LED jungiamojo laido.
7. Lituokite 220Ω rezistorių prie neigiamo (juodo) JST jungties galo. (6 nuotrauka)
8. Lituokite JST jungtį ir rezistorių prie mygtuko. (6 nuotrauka)
9. Prijunkite trumpojo jungimo laidus M-F tarp mygtuko jungties ir GPIO kaiščių (priminimas: juoda yra GND).
10. Uždenkite jungtis PCB karštais klijais arba epoksidu, kad jungtis būtų saugesnė.
Pastaba: jei pasirinksite naudoti epoksidą, ateityje galbūt negalėsite naudoti „Pi“GPIO kaiščių kitiems projektams. Jei nerimaujate dėl to, pridėkite GPIO juostinį kabelį ir prie jo prijunkite trumpiklius.
7 žingsnis: (neprivaloma) Sukurkite: dėklą
Sukurkite savo „Pi“gaubtą, kuriame būtų laikoma fotoaparatas, mygtukas ir šviesos diodai, taip pat apsaugant „Pi“. Sukurkite savo korpusą arba vadovaukitės toliau pateiktomis mūsų instrukcijomis, kad greitai sukurtumėte kartoninio korpuso prototipą!
-
Mažos kartoninės dėžutės viršuje raskite mygtuko, būsenos lemputės, identifikatoriaus lempučių ir pi kameros lango vietas (1 nuotrauka).
Pastaba: „Pi“kameros langas turėtų būti maždaug 3/4 colio x 1/2 colio
-
Naudodami tikslų peilį, iškirpkite pėdsakus.
Pastaba: galbūt norėsite išbandyti dydžius eidami (1 nuotrauka)
- Neprivaloma: dažykite dėklą! Aš pasirinkau purškiamus dažus:)
- Iškirpkite stačiakampį „lango“dangtelį „Pi“fotoaparatui (4 nuotrauka) ir priklijuokite dėžutės vidų
-
Galiausiai iškirpkite „Pi“maitinimo kabelio angą.
Rekomenduojama pirmiausia įdiegti visą elektroniką, kad surastumėte geriausią vietą pi maitinimo kabelio lizdui
8 veiksmas: įdiekite ir įdiekite
Viskas! Esate pasiruošę įdiegti ir įdiegti savo projektą! Padėkite korpusą virš šiukšlių dėžių, prijunkite „Pi“ir paleiskite programą, kad greičiau ir patikimiau sumažintumėte atliekų kiekį. Valio!
Eiti į priekį
- Pasidalykite savo projektais ir idėjomis su kitais žmonėmis per „Lobe Reddit“bendruomenę!
- Peržiūrėkite „Lobe Python GitHub“repą, kad gautumėte bendrą apžvalgą, kaip naudoti „Python“, kad būtų galima įdiegti įvairesnius „Lobe“projektus
- Klausimai ar projekto prašymai? Palikite komentarą apie šį projektą arba tiesiogiai susisiekite su mumis: [email protected]
Rekomenduojamas:
Padarykite GPS RIBŲ RIBAS naudodami „Arduino“: 8 žingsniai
Padarykite GPS RIBŲ RIBAS naudodami „Arduino“: Šioje pamokoje mes išmoksime, kaip naudojant „Arduino“sukurti GPS RIBŲ RIBAS, tai naudinga, kai turite robotą ir nenorite, kad jis išeitų už nurodytos zonos. Kai robotas yra už zonos ribų , ekrane bus rodoma „Išorė“
Kokybiškų žaislų gamyba iš plastiko šiukšlių: pradedančiųjų vadovas: 8 žingsniai (su nuotraukomis)
Kokybiškų žaislų gamyba iš plastiko šiukšlių: pradedančiųjų vadovas: Sveiki. Mano vardas Mario ir aš gaminu meninius žaislus iš plastiko šiukšlių. Nuo mažų vibrobotų iki didelių kiborgų šarvų aš sudaužytus žaislus, butelių kamštelius, negyvus kompiuterius ir sugadintus prietaisus paverčiu kūryba, įkvėpta mano mėgstamiausių komiksų, filmų, žaidimų
RoboBin -- Šiukšlių surinkimo dėžė: 6 žingsniai (su nuotraukomis)
„RoboBin“|| Šiukšlių surinkimo šiukšliadėžė: „RoboBin“yra šiukšliadėžė, kuri išmeta šiukšles, kai jas išmetate. Tai reiškia, kad galite išmesti šiukšles, nesikeldami, kad kažką išmestumėte. Pradėkime Kaip tai veikia Robo šiukšliadėžė veikia solenoidu, stumdama šiukšliadėžės dangtį, kai kas nors
Padarykite karštą peilį naudodami lituoklį: 4 žingsniai (su nuotraukomis)
Pasigaminkite karštą peilį naudodami lituoklį: Ar jums sunku pjaustyti plastiką paprastu „x-acto“peiliu? Tada čia yra paprastas įrankių modas, kurį galite padaryti, paversti seną lituoklį ir „x-acto“ašmenis į karštą peilį! Ši karšto peilio idėja tikrai nėra mano, radau šią idėją, kurią sukūrė kažkas
Padarykite mažą „Dinamo“žibintuvėlį iš šiukšlių dviem veiksmais
Padarykite mažą „Dinamo“žibintuvėlį iš šiukšlių dviem veiksmais: šiukšlių galia! Čia yra kažkas tikrai šaunaus iš magnetofono/ CD grotuvo ir šviesos diodo. Bet koks senas šviesos diodas veiks, tačiau jis bus daug ryškesnis, jei rasite kokių 5 mm baltų. Beveik visi šviesos diodai veiks laimingai (ir amžinai)