Innehållsförteckning:

Gör en Pi Trash Classifier med ML !: 8 steg (med bilder)
Gör en Pi Trash Classifier med ML !: 8 steg (med bilder)

Video: Gör en Pi Trash Classifier med ML !: 8 steg (med bilder)

Video: Gör en Pi Trash Classifier med ML !: 8 steg (med bilder)
Video: Пеноизол (установка Пеноизол-Б) 2024, December
Anonim
Gör en Pi Trash Classifier med ML!
Gör en Pi Trash Classifier med ML!
Gör en Pi Trash Classifier med ML!
Gör en Pi Trash Classifier med ML!

Trash Classifier -projektet, kärleksfullt känt som "Var tar det vägen ?!", är utformat för att göra det snabbare och mer pålitligt att slänga saker.

Detta projekt använder en Machine Learning (ML) -modell som är utbildad i Lobe, en nybörjarvänlig (ingen kod!) ML-modellbyggare, för att identifiera om ett föremål går i sopor, återvinning, kompost eller farligt avfall. Modellen laddas sedan på en Raspberry Pi 4 -dator för att göra den användbar var som helst du hittar soptunnor!

Denna handledning visar dig hur du skapar ditt eget Trash Classifier -projekt på en Raspberry Pi från en Lobe TensorFlow -modell i Python3.

Svårighet: Nybörjare ++ (viss kunskap med kretsar och kodning är till hjälp)

Lästid: 5 min

Byggtid: 60 - 90 min

Kostnad: ~ $ 70 (inklusive Pi 4)

Tillbehör:

Programvara (PC-sida)

  • Lob
  • WinSCP (eller annan SSH -filöverföringsmetod, kan använda CyberDuck för Mac)
  • Terminal
  • Remote Desktop Connection eller RealVNC

Hårdvara

  • Raspberry Pi, SD-kort och USB-C strömförsörjning (5V, 2,5A)
  • Pi -kamera
  • Tryckknapp
  • 5 lysdioder (4 indikatorlampor och 1 status -LED)

    • Gul LED: sopor
    • Blå lysdiod: återvinn
    • Grön LED: kompost
    • Röd lysdiod: farligt avfall
    • Vit lysdiod: status
  • 6 220 Ohm motstånd
  • 10 M-till-M-bygeltrådar
  • Brödbräda, halvstorlek

Om du väljer att lödda:

  • 1 JST -kontakt, endast hona
  • 2 M-till-F bygelkablar
  • 10 F-till-F bygelkablar
  • PCB

Inhägnad

  • Projektfodral (t.ex. kartong, trä eller plastlåda, ca 6 "x 5" x 4 ")
  • 0,5 cm x 0,5 tum (2 cm x 2 cm) klar plastkvadrat

    T.ex. från locket av matbehållare av plast

  • Kardborre

Verktyg

  • Avbitartång
  • Precisionskniv (t.ex. exacto -kniv) och skärmatta
  • Lödkolv (tillval)
  • Smältverktyg (eller annat icke-ledande lim-epoxi fungerar utmärkt men är permanent)

Steg 1: Innan vi börjar

Innan vi börjar
Innan vi börjar

Detta projekt förutsätter att du börjar med en fullständigt konfigurerad Raspberry Pi i en huvudlös konfiguration. Här är en nybörjarvänlig guide om hur du gör detta.

Det hjälper också att ha lite kunskap om följande:

  1. Bekantskap med Raspberry Pi

    • Här är en praktisk startguide!
    • Också bra: Komma igång med Pi -kameran
  2. Läsa och redigera Python -kod (du behöver inte skriva ett program, bara redigera)

    Introduktion till Python med Raspberry Pi

  3. Läser Fritzing -kopplingsscheman
  4. Med hjälp av en brödbräda

    Hur man använder en självstudiebräda

Ta reda på var din papperskorg hamnar

Varje stad i USA (och jag antar att världen) har sitt eget skräp/återvinning/kompost/etc. insamlingssystem. Det betyder att för att göra en korrekt sopklassificering måste vi 1) bygga en anpassad ML -modell (vi täcker detta i nästa steg - ingen kod!) Och 2) veta var varje papperskorg går.

Eftersom jag inte alltid visste rätt behållare för varje föremål som jag använde för att träna min modell, använde jag flygbladet i Seattle Utilities (foto 1), och även den här praktiska "Var går det?" sökverktyg för staden Seattle! Ta reda på vilka resurser som finns tillgängliga i din stad genom att leta upp din stads skräpsamlingsverktyg och läsa dess webbplats.

Steg 2: Skapa en anpassad ML -modell i Lobe

Skapa en anpassad ML -modell i Lobe
Skapa en anpassad ML -modell i Lobe
Skapa en anpassad ML -modell i Lobe
Skapa en anpassad ML -modell i Lobe
Skapa en anpassad ML -modell i Lobe
Skapa en anpassad ML -modell i Lobe
Skapa en anpassad ML -modell i Lobe
Skapa en anpassad ML -modell i Lobe

Lobe är ett lättanvänt verktyg som har allt du behöver för att väcka idéer om maskininlärning. Visa exempel på vad du vill att den ska göra, och den tränar automatiskt en anpassad maskininlärningsmodell som kan exporteras för edge -enheter och appar. Det kräver ingen erfarenhet för att komma igång. Du kan träna på din egen dator gratis!

Här är en snabb översikt över hur du använder Lobe:

1. Öppna Lobe -programmet och skapa ett nytt projekt.

2. Ta eller importera foton och märk dem i lämpliga kategorier. (Foto 1) Vi kommer att behöva dessa etiketter senare i programvarudelen av projektet.

Det finns två sätt att importera foton:

  1. Ta foton av objekt direkt från datorns webbkamera, eller
  2. Importera foton från befintliga mappar på din dator.

    Tänk på att fotomappens namn kommer att användas som kategoritikettnamn, så se till att det matchar befintliga etiketter

Bortsett: Jag slutade använda båda metoderna, eftersom ju fler foton du har, desto mer exakt är din modell.

3. Använd "Play" -funktionen för att testa modellens noggrannhet. Ändra avstånd, belysning, handpositioner etc. för att identifiera var modellen är och inte är korrekt. Lägg till fler foton efter behov. (Bilder 3-4)

4. När du är klar exporterar du din Lobe ML -modell i ett TensorFlow (TF) Lite -format.

Tips:

  • Innan du importerar foton, gör en lista över alla kategorier du behöver och hur du vill märka dem (t.ex. "skräp", "återvinna", "kompost" etc.)

    Obs! Använd samma etiketter som visas på bilden "Lobe Model Labels" ovan för att minska mängden kod du behöver ändra

  • Inkludera en kategori för "inte skräp" som har foton av allt annat som kan finnas på fotot (t.ex. dina händer och armar, bakgrunden, etc.)
  • Ta om möjligt foton från Pi -kameran och importera till Lobe. Detta kommer att förbättra noggrannheten i din modell!
  • Behöver du fler foton? Kolla in datauppsättningar med öppen källkod på Kaggle, inklusive denna bilduppsättning för sopklassificering!
  • Behöver du mer hjälp? Anslut till Lobe -samhället på Reddit!

Steg 3: Bygg det: Hårdvara

Bygg det: Hårdvara!
Bygg det: Hårdvara!
Bygg det: Hårdvara!
Bygg det: Hårdvara!
Bygg det: Hårdvara!
Bygg det: Hårdvara!

1. Anslut Pi -kameran försiktigt till Pi (besök Pi Foundation startguide för mer information). (Foto 1)

2. Följ kopplingsschemat för att ansluta tryckknappen och lysdioderna till Pi GPIO -stiften.

  • Tryckknapp: Anslut ett ben på tryckknappen till GPIO -stift 2. Anslut det andra, via ett motstånd, till ett GPIO GND -stift.
  • Gul lysdiod: Anslut det positiva (längre) benet till GPIO -stift 17. Anslut det andra benet, via ett motstånd, till ett GPIO GND -stift.
  • Blå lysdiod: Anslut det positiva benet till GPIO -stift 27. Anslut det andra benet, via ett motstånd, till ett GPIO GND -stift.
  • Grön lysdiod: Anslut det positiva benet till GPIO -stift 22. Anslut det andra benet, via ett motstånd, till ett GPIO GND -stift.
  • Röd LED: Anslut det positiva benet till GPIO -stift 23. Anslut det andra benet, via ett motstånd, till ett GPIO GND -stift.
  • Vit lysdiod: Anslut det positiva benet till GPIO -stift 24. Anslut det andra benet, via ett motstånd, till ett GPIO GND -stift.

3. Det rekommenderas att testa din krets på en brödbräda och köra programmet innan du lödar eller gör någon av anslutningarna permanenta. För att göra detta måste vi skriva och ladda upp vårt program, så låt oss gå till nästa steg!

Steg 4: Koda det: Programvara

Code It: Programvara!
Code It: Programvara!
Code It: Programvara!
Code It: Programvara!

1. Öppna WinSCP på din dator och anslut till din Pi. Skapa en Lobe -mapp i din Pi: s hemkatalog och skapa en modellmapp i den katalogen.

2. Dra det resulterande innehållet i Lobe TF -mappen till Pi. Anteckna filsökvägen:/home/pi/Lobe/model

3. På Pi, öppna en terminal och ladda ner lobe-python-biblioteket för Python3 genom att köra följande bash-kommandon:

pip3 installera

pip3 installera lobe

4. Ladda ner papperskorgen (rpi_trash_classifier.py) från denna repo till Pi (klicka på "kod" -knappen som visas på foto 1).

  • Föredrar du att kopiera/klistra in? Få råkoden här.
  • Vill du hellre ladda ner till din dator? Ladda ner repo/koden till din dator och överför sedan Python -koden till Pi via WinSCP (eller ditt föredragna fjärröverföringsprogram).

5. När du har anslutit hårdvaran till Pi: s GPIO -stift, läs igenom exempelkoden och uppdatera eventuella filvägar efter behov:

  • Linje 29: filepath till Lobe TF -modellen
  • Linjer 47 och 83: filväg till tagna bilder via Pi -kamera

6. Om det behövs uppdaterar du modelletiketterna i koden så att de exakt matchar etiketterna i din Lobe -modell (inklusive versaler, skiljetecken, etc.):

  • Rad 57: "skräp"
  • Rad 60: "återvinn"
  • Rad 63: "kompost"
  • Linje 66: "anläggning för farligt avfall"
  • Rad 69: "inte skräp!"

7. Kör programmet med Python3 i terminalfönstret:

python3 rpi_trash_classifier.py

Steg 5: Testa det: Kör programmet

Testa det: Kör programmet!
Testa det: Kör programmet!
Testa det: Kör programmet!
Testa det: Kör programmet!
Testa det: Kör programmet!
Testa det: Kör programmet!

Programöversikt

När du kör programmet första gången tar det lite tid att ladda TensorFlow -biblioteket och Lobe ML -modellen. När programmet är klart att ta en bild pulsar statuslampan (vit LED).

När du har tagit en bild kommer programmet att jämföra bilden med Lobe ML -modellen och mata ut den resulterande förutsägelsen (rad 83). Utgången avgör vilket ljus som tänds: gult (sopor), blått (återvinnings), grönt (kompost) eller rött (farligt avfall).

Om ingen av indikatorlamporna tänds och status -LED: n återgår till pulsläge, betyder det att den tagna bilden var "inte papperskorgen", med andra ord, ta om fotot!

Ta en bild

Tryck på tryckknappen för att ta en bild. Observera att du kan behöva hålla tryckknappen intryckt i minst 1 sekunder för att programmet ska kunna registrera pressen. Det rekommenderas att ta några testbilder och sedan öppna dem på skrivbordet för att bättre förstå kameravy och ram.

För att ge användaren tid att placera objektet och för kamerans ljusnivåer att justera, tar det cirka 5 sekunder att ta en bild helt. Du kan ändra dessa inställningar i koden (rad 35 och 41), men kom ihåg att Pi Foundation rekommenderar minst 2 sekunder för ljusnivåjustering.

Felsökning

Den största utmaningen är att se till att den tagna bilden är vad vi förväntar oss, så ta lite tid att granska bilderna och jämföra förväntade resultat med indikator -LED -utgång. Om det behövs kan du skicka in bilder till Lobe ML -modellen för direkta slutsatser och snabbare jämförelse.

Några saker att notera:

  • TensorFlow -biblioteket kommer troligen att kasta några varningsmeddelanden - det här är typiskt för den version som används i denna exempelkod.
  • Prognosetiketterna måste vara exakt som skrivna i led_select () -funktionen, inklusive versaler, skiljetecken och avstånd. Var noga med att ändra dessa om du har en annan Lobe -modell.
  • Pi kräver en stadig strömförsörjning. Pi: s strömlampa ska vara ljus, fast röd.
  • Om en eller flera lysdioder inte tänds vid förväntning, kontrollera genom att tvinga dem med kommandot:

red_led.on ()

Steg 6: (Valfritt) Bygg det: Slutför din krets

(Valfritt) Bygg det: Slutför din krets!
(Valfritt) Bygg det: Slutför din krets!
(Valfritt) Bygg det: Slutför din krets!
(Valfritt) Bygg det: Slutför din krets!
(Valfritt) Bygg det: Slutför din krets!
(Valfritt) Bygg det: Slutför din krets!

Nu när vi har testat och vid behov felsökt vårt projekt så att det fungerar som förväntat är vi redo att löda vår krets!

Obs! Om du inte har ett lödkolv kan du hoppa över det här steget. Ett alternativ är att belägga trådanslutningarna med varmt lim (det här alternativet gör att du kan fixa/lägga till/använda saker senare, men det är mer troligt att det går sönder), eller använda epoxi eller liknande permanent lim (det här alternativet blir mycket mer hållbart men du kommer inte att kunna använda kretsen eller eventuellt Pi efter att du gjort detta)

Snabb kommentar om mina designval (Foto 1):

  • Jag valde kvinnliga bygelkablar för lysdioderna och Pi GPIO eftersom de tillåter mig att ta bort lysdioder och byta färger eller flytta dem om det behövs. Du kan hoppa över dessa om du vill göra anslutningar permanenta.
  • På samma sätt valde jag en JST -kontakt för tryckknappen.

Till byggnaden

1. Klipp var och en av de kvinnliga bygelkablarna på mitten (ja, alla!). Använd trådavlägsnare för att ta bort ungefär 1/4 tum (1/2 cm) av trådisoleringen.

2. För var och en av lysdioderna, löd ett 220Ω motstånd mot det negativa (kortare) benet. (Foto 2)

3. Skär en liten bit, cirka 2 cm värmekrymprör och skjut över lysdioden och motståndskopplingen. Se till att det andra motståndsbenet är tillgängligt, värm sedan krympröret tills det fäster fogen. (Foto 3)

4. Sätt in varje lysdiod i ett par honkablar. (Foto 4)

5. Märk bygelkablarna (t.ex. med tejp) och sedan lödkabeln på ditt kretskort (PCB). (Foto 5)

6. Använd sedan en (klippt) honkabel för att ansluta varje lysdiod till dess respektive Pi GPIO -stift. Löd och märk en bygelkabel så att den nakna metallen ansluter till det positiva LED -benet via kretskortet. (Foto 5)

Obs: Var du löd denna tråd beror på din PCB -layout. Du kan också löda denna tråd direkt till den positiva LED -bygeln.

7. Löd ett 220Ω motstånd till den negativa (svarta) änden av JST -kontakten. (Foto 6)

8. Löd JST -kontakten och motståndet till tryckknappen. (Foto 6)

9. Anslut M-till-F-bygeltrådarna mellan tryckknappskontakten och GPIO-stiften (påminnelse: svart är GND).

10. Beläggningsanslutningar PCB i varmt lim eller epoxi för en säkrare anslutning.

Obs! Om du väljer att använda epoxi kanske du inte kan använda Pi: s GPIO -stift för andra projekt i framtiden. Om du är orolig över detta lägger du till en GPIO -bandkabel och ansluter bygelkablarna till den istället.

Steg 7: (Valfritt) Build It: Case

(Valfritt) Build It: Case!
(Valfritt) Build It: Case!
(Valfritt) Build It: Case!
(Valfritt) Build It: Case!
(Valfritt) Build It: Case!
(Valfritt) Build It: Case!
(Valfritt) Build It: Case!
(Valfritt) Build It: Case!

Skapa ett hölje för din Pi som håller kameran, tryckknappen och lysdioderna på plats samtidigt som den skyddar Pi. Designa ditt eget hölje eller följ våra bygginstruktioner nedan för att snabbt prototypa ett kartonghölje!

  1. Överst på den lilla kartongen spårar du platserna för tryckknappen, statuslampan, identifieringslamporna och pi -kamerans fönster (foto 1).

    Obs: Pi -kamerafönstret ska vara cirka 3/4 "x 1/2"

  2. Skär bort spåren med din precisionskniv.

    Obs: du kanske vill testa storlekarna när du går (Foto 1)

  3. Valfritt: Måla fodralet! Jag valde sprayfärg:)
  4. Klipp ut ett rektangulärt "fönster" lock till Pi -kameran (foto 4) och lim på insidan av lådan
  5. Slutligen klipp ut platsen för Pi -strömkabeln.

    Rekommenderas att först installera all elektronik för att hitta den bästa platsen för pi -strömkabelplatsen

Steg 8: Installera och distribuera

Installera och distribuera!
Installera och distribuera!

Det är allt! Du är redo att installera och distribuera ditt projekt! Placera höljet ovanför papperskorgen, anslut Pi och kör programmet för att få ett snabbare och mer pålitligt sätt att minska vårt avfall. Jippie!

Går framåt

  • Dela dina projekt och idéer med andra människor via Lobe Reddit -communityn!
  • Kolla in Lobe Python GitHub -repo för en allmän översikt över hur du använder Python för att distribuera ett större antal Lobe -projekt
  • Frågor eller projektförfrågningar? Lämna en kommentar om detta projekt eller kontakta oss direkt: [email protected]

Rekommenderad: