Satura rādītājs:

Izveidojiet Pi atkritumu klasifikatoru ar ML!: 8 soļi (ar attēliem)
Izveidojiet Pi atkritumu klasifikatoru ar ML!: 8 soļi (ar attēliem)

Video: Izveidojiet Pi atkritumu klasifikatoru ar ML!: 8 soļi (ar attēliem)

Video: Izveidojiet Pi atkritumu klasifikatoru ar ML!: 8 soļi (ar attēliem)
Video: Если бы сладости были людьми! 2024, Novembris
Anonim
Izveidojiet Pi atkritumu klasifikatoru ar ML!
Izveidojiet Pi atkritumu klasifikatoru ar ML!
Izveidojiet Pi atkritumu klasifikatoru ar ML!
Izveidojiet Pi atkritumu klasifikatoru ar ML!

Atkritumu klasifikatora projekts, kas mīļi pazīstams kā "Kur tas pazūd ?!", ir paredzēts, lai padarītu lietu ātrāku un uzticamāku.

Šajā projektā tiek izmantots mašīnmācīšanās (ML) modelis, kas apmācīts Lobē, iesācējiem draudzīgā (bez koda!) ML modeļu veidotājā, lai noteiktu, vai objekts nonāk atkritumos, otrreizējā pārstrādē, kompostā vai bīstamos atkritumos. Pēc tam modelis tiek ielādēts Raspberry Pi 4 datorā, lai to varētu izmantot visur, kur var atrast atkritumu urnas!

Šajā apmācībā ir aprakstīts, kā izveidot savu atkritumu klasificētāja projektu Raspberry Pi no Lobe TensorFlow modeļa programmā Python3.

Grūtības: iesācējs ++ (dažas zināšanas ar shēmām un kodēšanu ir noderīgas)

Lasīšanas laiks: 5 min

Uzbūves laiks: 60-90 min

Izmaksas: ~ 70 USD (ieskaitot Pi 4)

Piegādes:

Programmatūra (datora pusē)

  • Lobe
  • WinSCP (vai cita SSH failu pārsūtīšanas metode, var izmantot CyberDuck operētājsistēmai Mac)
  • Terminālis
  • Savienojums ar attālo darbvirsmu vai RealVNC

Aparatūra

  • Raspberry Pi, SD karte un USB-C barošanas avots (5V, 2.5A)
  • Pi kamera
  • Uzspied pogu
  • 5 gaismas diodes (4 indikatora gaismas diodes un 1 statusa gaismas diode)

    • Dzeltena gaismas diode: atkritumi
    • Zils LED: pārstrādājiet
    • Zaļā gaismas diode: komposts
    • Sarkana gaismas diode: bīstami atkritumi
    • Balta gaismas diode: statuss
  • 6 220 omi rezistori
  • 10 pārejas vadi no M līdz M
  • Maizes dēlis, pusizmērs

Ja izvēlaties lodēt:

  • 1 JST savienotājs, tikai sieviešu gals
  • 2 pārejas vadi no M līdz F
  • 10 pārejas vadi no F līdz F
  • PCB

Korpuss

  • Projekta futrālis (piemēram, kartona, koka vai plastmasas kaste, aptuveni 6 x 5 collas x 4 collas)
  • 0,5 x 0,5 collu (2 x 2 cm) caurspīdīgs plastmasas kvadrāts

    Piem. no pārtikas trauka plastmasas vāka

  • Velcro

Rīki

  • Stiepļu griezēji
  • Precīzs nazis (piemēram, precīzs nazis) un griešanas paklājs
  • Lodāmurs (pēc izvēles)
  • Karstās kausēšanas rīks (vai cita nevadoša līme-epoksīdsveiksme darbojas lieliski, bet ir pastāvīga)

1. solis: pirms mēs sākam

Pirms Mēs Sākam
Pirms Mēs Sākam

Šajā projektā tiek pieņemts, ka jūs sākat ar pilnībā iestatītu Raspberry Pi bezgalvainā konfigurācijā. Šeit ir iesācējiem draudzīgs ceļvedis, kā to izdarīt.

Tas palīdz arī iegūt zināmas zināšanas par sekojošo:

  1. Iepazīšanās ar Raspberry Pi

    • Šeit ir ērts darba sākšanas ceļvedis!
    • Noderīgi arī: Darba sākšana ar Pi kameru
  2. Python koda lasīšana un rediģēšana (jums nebūs jāraksta programma, vienkārši rediģējiet)

    Ievads Python ar Raspberry Pi

  3. Fritzing elektroinstalācijas shēmu lasīšana
  4. Izmantojot maizes dēli

    Kā izmantot maizes dēļa pamācību

Uzziniet, kur nonāk jūsu atkritumi

Katrai pilsētai visā ASV (un es pieņemtu, ka pasaulē) ir savi atkritumi/pārstrāde/komposts/utt. savākšanas sistēma. Tas nozīmē, ka, lai izveidotu precīzu atkritumu klasifikatoru, mums būs 1) jāizveido pielāgots ML modelis (mēs to aplūkosim nākamajā darbībā - bez koda!) Un 2) jāzina, kur nonāk katrs miskastes gabals.

Tā kā es ne vienmēr zināju pareizo tvertni katram priekšmetam, ko izmantoju sava modeļa apmācībai, es izmantoju Sietlas Utilities skrejlapu (1. foto), kā arī šo parocīgo "Kur tas iet?" uzmeklēšanas rīks Sietlas pilsētai! Pārbaudiet, kādi resursi ir pieejami jūsu pilsētā, meklējot pilsētas atkritumu savākšanas utilītu un iepazīstoties ar tās vietni.

2. darbība: izveidojiet pielāgotu ML modeli Lobe

Izveidojiet pielāgotu ML modeli Lobe
Izveidojiet pielāgotu ML modeli Lobe
Izveidojiet pielāgotu ML modeli Lobe
Izveidojiet pielāgotu ML modeli Lobe
Izveidojiet pielāgotu ML modeli Lobe
Izveidojiet pielāgotu ML modeli Lobe
Izveidojiet pielāgotu ML modeli Lobe
Izveidojiet pielāgotu ML modeli Lobe

Lobe ir viegli lietojams rīks, kurā ir viss nepieciešamais, lai jūsu mašīnmācīšanās idejas iedzīvinātu. Parādiet tam piemērus, ko vēlaties, lai tas tiktu darīts, un tas automātiski apmāca pielāgotu mašīnmācīšanās modeli, ko var eksportēt uz malām paredzētajām ierīcēm un lietotnēm. Lai sāktu, nav nepieciešama nekāda pieredze. Jūs varat trenēties savā datorā bez maksas!

Šeit ir īss pārskats par Lobe lietošanu:

1. Atveriet programmu Lobe un izveidojiet jaunu projektu.

2. Uzņemiet vai importējiet fotoattēlus un iezīmējiet tos atbilstošās kategorijās. (1. foto) Šīs etiķetes mums būs vajadzīgas vēlāk projekta programmatūras daļā.

Ir divi veidi, kā importēt fotoattēlus:

  1. Fotografējiet vienumus tieši no datora tīmekļa kameras vai
  2. Importējiet fotoattēlus no esošajām datora mapēm.

    Ņemiet vērā, ka fotoattēlu mapes nosaukums tiks izmantots kā kategorijas etiķetes nosaukums, tāpēc pārliecinieties, vai tas atbilst esošajām etiķetēm

Papildus: es izmantoju abas metodes, jo, jo vairāk fotoattēlu jums ir, jo precīzāks ir jūsu modelis.

3. Izmantojiet funkciju "Atskaņot", lai pārbaudītu modeļa precizitāti. Mainiet attālumus, apgaismojumu, roku stāvokli utt., Lai noteiktu, kur modelis atrodas un nav precīzs. Ja nepieciešams, pievienojiet vairāk fotoattēlu. (3. – 4. Fotoattēls)

4. Kad esat gatavs, eksportējiet savu Lobe ML modeli TensorFlow (TF) Lite formātā.

Padomi:

  • Pirms fotoattēlu importēšanas izveidojiet sarakstu ar visām nepieciešamajām kategorijām un to marķēšanas veidu (piemēram, “atkritumi”, “pārstrāde”, “komposts” utt.)

    Piezīme. Lai samazinātu maināmā koda daudzumu, izmantojiet tās pašas etiķetes, kas parādītas fotoattēlā "Lobe modeļa etiķetes"

  • Iekļaujiet kategoriju “ne miskasti”, kurā ir fotoattēli ar visu citu, kas varētu būt fotoattēlā (piemēram, jūsu rokas un rokas, fons utt.)
  • Ja iespējams, uzņemiet fotoattēlus no Pi kameras un importējiet Lobe. Tas ievērojami uzlabos jūsu modeļa precizitāti!
  • Nepieciešams vairāk fotoattēlu? Pārbaudiet atvērtā pirmkoda datu kopas vietnē Kaggle, ieskaitot šo atkritumu klasifikācijas attēlu kopu!
  • Vai nepieciešama papildu palīdzība? Sazinieties ar Lobe kopienu vietnē Reddit!

3. darbība: izveidojiet to: aparatūra

Izveidojiet to: aparatūra!
Izveidojiet to: aparatūra!
Izveidojiet to: aparatūra!
Izveidojiet to: aparatūra!
Izveidojiet to: aparatūra!
Izveidojiet to: aparatūra!

1. Uzmanīgi savienojiet Pi kameru ar Pi (lai iegūtu vairāk informācijas, apmeklējiet Pi Foundation darba sākšanas rokasgrāmatu). (1. foto)

2. Izpildiet elektroinstalācijas shēmu, lai spiedpogu un gaismas diodes savienotu ar Pi GPIO tapām.

  • Spiedpoga: vienu spiedpogas kāju pievienojiet GPIO tapai 2. Pievienojiet otru, izmantojot rezistoru, GPIO GND tapai.
  • Dzeltena gaismas diode: pievienojiet pozitīvo (garāko) kāju GPIO tapai 17. Pievienojiet otru kāju, izmantojot rezistoru, GPIO GND tapai.
  • Zila gaismas diode: pievienojiet pozitīvo kāju GPIO tapai 27. Pievienojiet otru kāju, izmantojot rezistoru, GPIO GND tapai.
  • Zaļā gaismas diode: pievienojiet pozitīvo kāju GPIO tapai 22. Pievienojiet otru kāju, izmantojot rezistoru, GPIO GND tapai.
  • Sarkana gaismas diode: pievienojiet pozitīvo kāju GPIO tapai 23. Pievienojiet otru kāju, izmantojot rezistoru, GPIO GND tapai.
  • Balta gaismas diode: pievienojiet pozitīvo kāju GPIO tapai 24. Pievienojiet otru kāju, izmantojot rezistoru, GPIO GND tapai.

3. Ieteicams pārbaudīt ķēdi uz maizes dēļa un palaist programmu, pirms lodēt vai padarīt jebkuru savienojumu pastāvīgu. Lai to izdarītu, mums būs jāraksta un jāaugšupielādē mūsu programmatūra, tāpēc pāriesim pie nākamās darbības!

4. solis: kodējiet to: programmatūra

Kodējiet to: programmatūra!
Kodējiet to: programmatūra!
Kodējiet to: programmatūra!
Kodējiet to: programmatūra!

1. Datorā atveriet WinSCP un izveidojiet savienojumu ar savu Pi. Izveidojiet mapi Lobe savā Pi mājas direktorijā un izveidojiet modeļa mapi šajā direktorijā.

2. Velciet iegūto Lobe TF mapes saturu uz Pi. Pierakstiet faila ceļu:/home/pi/Lobe/model

3. Uz Pi atveriet termināli un lejupielādējiet lobe-python bibliotēku Python3, izpildot šādas bash komandas:

pip3 instalēt

pip3 instalēt daivu

4. Lejupielādējiet miskastes klasifikatora kodu (rpi_trash_classifier.py) no šī repo uz Pi (noklikšķiniet uz pogas "Kods", kā parādīts 1. fotoattēlā).

  • Vai vēlaties kopēt/ielīmēt? Iegūstiet neapstrādātu kodu šeit.
  • Vai vēlaties lejupielādēt savā datorā? Lejupielādējiet repo/kodu savā datorā, pēc tam pārsūtiet Python kodu uz Pi, izmantojot WinSCP (vai vēlamo attālo failu pārsūtīšanas programmu).

5. Kad esat pievienojis aparatūru Pi GPIO tapām, izlasiet piemēra kodu un pēc vajadzības atjauniniet visus failu ceļus:

  • 29. rinda: failu ceļš uz Lobe TF modeli
  • 47. un 83. rindiņa: failu ceļš uzņemtajiem attēliem, izmantojot Pi kameru

6. Ja nepieciešams, atjauniniet modeļa etiķetes kodā, lai tās precīzi atbilstu jūsu Lobe modeļa etiķetēm (ieskaitot lielo burtu lietojumu, pieturzīmes utt.):

  • 57. rinda: "atkritumi"
  • 60. rinda: "pārstrādāt"
  • 63. rinda: "komposts"
  • 66. rinda: "bīstamo atkritumu apsaimniekošanas objekts"
  • 69. rinda: "nevis miskasti!"

7. Palaidiet programmu, izmantojot termināļa logā Python3:

python3 rpi_trash_classifier.py

5. darbība: pārbaudiet to: palaidiet programmu

Pārbaudiet to: palaidiet programmu!
Pārbaudiet to: palaidiet programmu!
Pārbaudiet to: palaidiet programmu!
Pārbaudiet to: palaidiet programmu!
Pārbaudiet to: palaidiet programmu!
Pārbaudiet to: palaidiet programmu!

Programmas pārskats

Pirmoreiz palaižot programmu, TensorFlow bibliotēkas un Lobe ML modeļa ielāde prasīs zināmu laiku. Kad programma ir gatava uzņemt attēlu, mirgo statusa indikators (balta gaismas diode).

Kad esat uzņēmis attēlu, programma salīdzinās attēlu ar Lobe ML modeli un izvadīs iegūto prognozi (83. rinda). Rezultāts nosaka, kura gaisma ir ieslēgta: dzeltena (atkritumi), zila (pārstrādāta), zaļa (komposts) vai sarkana (bīstami atkritumi).

Ja neviena no indikatora gaismas diodēm neiedegas un statusa gaismas diode atgriežas impulsa režīmā, tas nozīmē, ka uzņemtais attēls bija "nav miskasti", citiem vārdiem sakot, uzņemiet fotoattēlu vēlreiz!

Attēla uzņemšana

Nospiediet pogu, lai uzņemtu attēlu. Ņemiet vērā: lai programma reģistrētu presi, jums, iespējams, vajadzēs vismaz 1 sekundes turēt nospiestu pogu. Lai labāk izprastu kameras skatu un rāmi, ieteicams uzņemt dažus testa attēlus un pēc tam tos atvērt darbvirsmā.

Lai dotu lietotājam laiku objekta novietošanai un kameras gaismas līmeņa pielāgošanai, attēla pilnīgai uzņemšanai nepieciešamas aptuveni 5 sekundes. Jūs varat mainīt šos iestatījumus kodā (35. un 41. rindiņa), taču paturiet prātā, ka Pi Foundation iesaka vismaz 2 sekundes gaismas līmeņa regulēšanai.

Traucējummeklēšana

Lielākais izaicinājums ir nodrošināt, lai uzņemtais attēls būtu tas, ko mēs sagaidām, tāpēc veltiet laiku, lai pārskatītu attēlus un salīdzinātu gaidītos rezultātus ar indikatora LED izvadi. Vajadzības gadījumā attēlus varat nodot Lobe ML modelim tiešai secināšanai un ātrākai salīdzināšanai.

Jāņem vērā dažas lietas:

  • TensorFlow bibliotēka, iespējams, parādīs dažus brīdinājuma ziņojumus - tas ir raksturīgi šajā parauga kodā izmantotajai versijai.
  • Prognozēšanas etiķetēm jābūt tieši tādām, kā rakstīts funkcijā led_select (), ieskaitot lielo burtu lietojumu, pieturzīmes un atstarpes. Noteikti mainiet tos, ja jums ir cits Lobe modelis.
  • Pi ir nepieciešama pastāvīga barošana. Pi strāvas indikatoram jābūt spilgti sarkanam.
  • Ja viena vai vairākas gaismas diodes neieslēdzas gaidītajā laikā, pārbaudiet, piespiežot tās ar komandu:

red_led.on ()

6. solis: (pēc izvēles) Izveidojiet to: pabeidziet ķēdi

(Pēc izvēles) Izveidojiet to: pabeidziet ķēdi!
(Pēc izvēles) Izveidojiet to: pabeidziet ķēdi!
(Pēc izvēles) Izveidojiet to: pabeidziet ķēdi!
(Pēc izvēles) Izveidojiet to: pabeidziet ķēdi!
(Pēc izvēles) Izveidojiet to: pabeidziet ķēdi!
(Pēc izvēles) Izveidojiet to: pabeidziet ķēdi!

Tagad, kad esam pārbaudījuši un, ja nepieciešams, atkļūdojuši savu projektu, lai tas darbotos, kā paredzēts, mēs esam gatavi lodēt savu ķēdi!

Piezīme: ja jums nav lodāmura, varat izlaist šo darbību. Viena alternatīva ir pārklāt vadu savienojumus ar karstu līmi (šī opcija ļaus jums vēlāk salabot/pievienot/izmantot lietas, bet, visticamāk, salūzīs), vai izmantot epoksīdu vai līdzīgu pastāvīgu līmi (šī opcija būs daudz izturīgāka) bet pēc tam jūs nevarēsit izmantot ķēdi vai potenciāli Pi)

Īss komentārs par manu dizaina izvēli (1. foto):

  • Gaismas diodēm un Pi GPIO es izvēlējos sieviešu džemperu vadus, jo tie ļauj noņemt gaismas diodes un nomainīt krāsas vai vajadzības gadījumā tās pārvietot. Jūs varat tos izlaist, ja vēlaties padarīt savienojumus pastāvīgus.
  • Līdzīgi spiedpogai izvēlējos JST savienotāju.

Uz priekšu celtniecībā

1. Pārgrieziet katru no sieviešu džempera vadiem uz pusēm (jā, visus!). Izmantojot stieples noņēmējus, noņemiet apmēram 1/4 collas (1/2 cm) stieples izolācijas.

2. Katrai no gaismas diodēm pie negatīvās (īsākās) kājas pielodējiet 220Ω rezistoru. (2. foto)

3. Izgrieziet nelielu gabalu, apmēram 1 cm (2 cm) termiski saraušanās caurules, un spiediet virs gaismas diodes un rezistora savienojuma vietas. Pārliecinieties, vai otra pretestības kāja ir pieejama, un pēc tam sasildiet saraušanās cauruli, līdz tā nostiprina savienojumu. (3. foto)

4. Ievietojiet katru gaismas diodi sieviešu vadu pārī. (4. foto)

5. Iezīmējiet džemperu vadus (piemēram, ar lenti), pēc tam pielodējiet džemperu vadus uz iespiedshēmas plates (PCB). (5. foto)

6. Pēc tam izmantojiet (pārgrieztu) sieviešu džemperu vadu, lai katru LED savienotu ar savu Pi GPIO tapu. Lodējiet un uzlīmējiet džempera vadu tā, lai tukšais metāls caur PCB savienotos ar pozitīvo LED kāju. (5. foto)

Piezīme. Kur jūs lodēsiet šo vadu, tas būs atkarīgs no jūsu PCB izkārtojuma. Jūs varat arī pielodēt šo vadu tieši pie pozitīvā LED džempera stieples.

7. Lodējiet 220Ω rezistoru pie JST savienotāja negatīvā (melnā) gala. (6. foto)

8. Lodējiet JST savienotāju un rezistoru pie spiedpogas. (6. foto)

9. Savienojiet M-F pārejas vadus starp spiedpogas savienotāju un GPIO tapām (atgādinājums: melns ir GND).

10. Pārklājuma savienojumi PCB ar karstu līmi vai epoksīdu, lai nodrošinātu drošāku savienojumu.

Piezīme: ja izvēlēsities izmantot epoksīdu, iespējams, turpmāk nevarēsit izmantot Pi GPIO tapas citiem projektiem. Ja jūs tas uztrauc, pievienojiet GPIO lentes kabeli un pievienojiet tam savienojuma vadus.

7. solis: (pēc izvēles) Izveidojiet to: lietu

(Neobligāti) Izveidojiet to: lietu!
(Neobligāti) Izveidojiet to: lietu!
(Neobligāti) Izveidojiet to: lietu!
(Neobligāti) Izveidojiet to: lietu!
(Neobligāti) Izveidojiet to: lietu!
(Neobligāti) Izveidojiet to: lietu!
(Neobligāti) Izveidojiet to: lietu!
(Neobligāti) Izveidojiet to: lietu!

Izveidojiet savam Pi korpusu, kas turēs kameru, spiedpogu un gaismas diodes, vienlaikus aizsargājot Pi. Izveidojiet savu korpusu vai izpildiet tālāk sniegtos mūsu būvniecības norādījumus, lai ātri izgatavotu kartona korpusa prototipu!

  1. Nelielas kartona kastes augšpusē izsekojiet spiedpogas, statusa gaismas, identifikatora gaismas un pi kameras loga atrašanās vietas (1. fotoattēls).

    Piezīme: Pi kameras logam jābūt apmēram 3/4 "x 1/2"

  2. Izmantojot precīzo nazi, izgrieziet pēdas.

    Piezīme: iespējams, vēlēsities pārbaudīt izmērus (1. fotoattēls)

  3. Pēc izvēles: krāsojiet korpusu! Es izvēlējos aerosola krāsu:)
  4. Izgrieziet taisnstūrveida "loga" vāku Pi kamerai (4. foto) un pielīmējiet kastes iekšpusi
  5. Visbeidzot, izgrieziet Pi barošanas kabeļa slotu.

    Ieteicams vispirms instalēt visu elektroniku, lai atrastu labāko vietu pi strāvas kabeļa slotā

8. darbība: instalējiet un izvietojiet

Instalējiet un izvietojiet!
Instalējiet un izvietojiet!

Tieši tā! Jūs esat gatavs instalēt un izvietot savu projektu! Novietojiet korpusu virs atkritumu tvertnēm, pievienojiet Pi un palaidiet programmu, lai iegūtu ātrāku un uzticamāku veidu, kā samazināt mūsu atkritumus. Yay!

Iet uz priekšu

  • Kopīgojiet savus projektus un idejas ar citiem cilvēkiem, izmantojot Lobe Reddit kopienu!
  • Apskatiet Lobe Python GitHub repo, lai iegūtu vispārīgu pārskatu par to, kā izmantot Python, lai izvietotu plašāku Lobe projektu klāstu
  • Jautājumi vai projektu pieprasījumi? Atstājiet komentāru par šo projektu vai sazinieties ar mums tieši: [email protected]

Ieteicams: