Innehållsförteckning:
- Steg 1: Innan vi börjar
- Steg 2: Skapa en anpassad ML -modell i Lobe
- Steg 3: Bygg det: Hårdvara
- Steg 4: Koda det: Programvara
- Steg 5: Testa det: Kör programmet
- Steg 6: (Valfritt) Bygg det: Slutför din krets
- Steg 7: (Valfritt) Build It: Case
- Steg 8: Installera och distribuera
Video: Gör en Pi Trash Classifier med ML !: 8 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:36
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
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:
-
Bekantskap med Raspberry Pi
- Här är en praktisk startguide!
- Också bra: Komma igång med Pi -kameran
-
Läsa och redigera Python -kod (du behöver inte skriva ett program, bara redigera)
Introduktion till Python med Raspberry Pi
- Läser Fritzing -kopplingsscheman
- 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
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:
- Ta foton av objekt direkt från datorns webbkamera, eller
-
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
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
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
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
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
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!
-
Ö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"
-
Skär bort spåren med din precisionskniv.
Obs: du kanske vill testa storlekarna när du går (Foto 1)
- Valfritt: Måla fodralet! Jag valde sprayfärg:)
- Klipp ut ett rektangulärt "fönster" lock till Pi -kameran (foto 4) och lim på insidan av lådan
-
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
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:
Hur man gör en drönare med Arduino UNO - Gör en quadcopter med mikrokontroller: 8 steg (med bilder)
Hur man gör en drönare med Arduino UNO | Gör en Quadcopter Med Microcontroller: Introduktion Besök min Youtube -kanal En Drone är en mycket dyr gadget (produkt) att köpa. I det här inlägget ska jag diskutera, hur gör jag det billigt ?? Och hur kan du göra din egen så här till billigt pris … Tja i Indien alla material (motorer, ESC
Trash Built BT Line Drawing Bot - My Bot: 13 steg (med bilder)
Trash Built BT Line Drawing Bot - My Bot: Hai vänner efter ett långt gap cirka 6 månader här kommer jag med ett nytt projekt. Fram till slutförandet av Cute Drawing Buddy V1, SCARA Robot - Arduino planerar jag för en annan ritbot, huvudsyftet är att täcka ett stort utrymme för teckning. Så fixade robotarmar
Hur man gör en delad skärmvideo med fyra steg: 4 steg (med bilder)
Hur man gör en delad skärmvideo med fyra steg: Vi ser ofta samma person visa i en scen två gånger i ett tv -spel. Och så vitt vi vet har skådespelaren ingen tvillingbror. Vi har också sett att två sångvideor läggs på en skärm för att jämföra deras sångkunskaper. Detta är kraften i spl
Trash-o-caster: 15 steg (med bilder)
Trash-o-caster: Under en storm nyligen hittades denna misshandlade elgitarr på trottoarkanten, begravd i snö. Minus alla elektriska förutom jacken, jag bestämde mig för att ta tillbaka den från randen. Jag har alltid velat ha en "Strat" eller något liknande. Den söta enkelspolen
Gör 3D-bilder av dina kretskort med Eagle3D och POV-Ray: 5 steg (med bilder)
Gör 3D-bilder av dina PCB med Eagle3D och POV-Ray: Med Eagle3D och POV-Ray kan du göra realistiska 3D-renderingar av dina PCB. Eagle3D är ett manus för EAGLE Layout Editor. Detta kommer att generera en strålspårningsfil som kommer att skickas till POV-Ray, som i sin tur kommer att dyka upp den färdiga bilden