Spisu treści:

Stwórz klasyfikator Pi Trash z ML!: 8 kroków (ze zdjęciami)
Stwórz klasyfikator Pi Trash z ML!: 8 kroków (ze zdjęciami)

Wideo: Stwórz klasyfikator Pi Trash z ML!: 8 kroków (ze zdjęciami)

Wideo: Stwórz klasyfikator Pi Trash z ML!: 8 kroków (ze zdjęciami)
Wideo: Szokująca prawda o UFO niebędących ludźmi: John Greenewald ujawnia wszystko 2024, Listopad
Anonim
Stwórz klasyfikator Pi Trash z ML!
Stwórz klasyfikator Pi Trash z ML!
Stwórz klasyfikator Pi Trash z ML!
Stwórz klasyfikator Pi Trash z ML!

Projekt Trash Classifier, pieszczotliwie nazywany „Gdzie to idzie?!”, ma na celu szybsze i bardziej niezawodne wyrzucanie rzeczy.

Ten projekt wykorzystuje model uczenia maszynowego (ML) wyszkolony w Lobe, przyjaznym dla początkujących (bez kodu!) konstruktorze modeli ML, aby określić, czy obiekt trafia do śmieci, recyklingu, kompostu lub odpadów niebezpiecznych. Model jest następnie ładowany do komputera Raspberry Pi 4, aby można go było używać wszędzie tam, gdzie można znaleźć kosze na śmieci!

W tym samouczku dowiesz się, jak utworzyć własny projekt klasyfikatora śmieci na Raspberry Pi na podstawie modelu Lobe TensorFlow w Python3.

Poziom trudności: początkujący++ (przydaje się pewna wiedza z obwodami i kodowaniem)

Czas czytania: 5 minut

Czas budowy: 60 - 90 minut

Koszt: ~70 USD (w tym Pi 4)

Kieszonkowe dzieci:

Oprogramowanie (po stronie komputera)

  • Płat
  • WinSCP (lub inna metoda przesyłania plików SSH, może używać CyberDuck for Mac)
  • Terminal
  • Podłączanie pulpitu zdalnego lub RealVNC

Sprzęt komputerowy

  • Raspberry Pi, karta SD i zasilacz USB-C (5 V, 2,5 A)
  • Kamera Pi
  • Naciśnij przycisk
  • 5 diod LED (4 diody sygnalizacyjne i 1 dioda LED stanu)

    • Żółta dioda LED: śmieci
    • Niebieska dioda LED: recykling
    • Zielona dioda LED: kompost
    • Czerwona dioda LED: odpady niebezpieczne
    • Biała dioda LED: status
  • 6 rezystorów 220 Ohm
  • 10 przewodów połączeniowych M-do-M
  • Deska do krojenia chleba, półwymiarowa

Jeśli zdecydujesz się na lutowanie:

  • 1 złącze JST, tylko końcówka żeńska
  • 2 przewody połączeniowe M-do-F
  • 10 przewodów połączeniowych F-do-F
  • PCB

Załącznik

  • Przypadek projektu (np. pudełko kartonowe, drewniane lub plastikowe, ok. 6 "x 5" x 4")
  • 0,5" x 0,5" (2 cm x 2 cm) przezroczysty plastikowy kwadrat

    Np. z plastikowej pokrywy pojemnika na żywność

  • Rzep

Narzędzia

  • Nożyce do drutu
  • Nóż precyzyjny (np. precyzyjny nóż) i mata do cięcia
  • Lutownica (opcjonalnie)
  • Narzędzie topliwe (lub inny nieprzewodzący klej - żywica epoksydowa działa świetnie, ale jest trwała)

Krok 1: Zanim zaczniemy

Zanim zaczniemy
Zanim zaczniemy

Ten projekt zakłada, że zaczynasz od w pełni skonfigurowanego Raspberry Pi w konfiguracji bezgłowej. Oto przyjazny dla początkujących przewodnik, jak to zrobić.

Pomaga również mieć pewną wiedzę na temat:

  1. Znajomość Raspberry Pi

    • Oto przydatny przewodnik dla początkujących!
    • Pomocne również: Pierwsze kroki z kamerą Pi
  2. Czytanie i edycja kodu Pythona (nie musisz pisać programu, po prostu edytuj)

    Wprowadzenie do Pythona z Raspberry Pi

  3. Czytanie schematów połączeń Fritzing
  4. Korzystanie z płytki do krojenia chleba

    Jak korzystać z samouczka płytki prototypowej

Dowiedz się, gdzie trafiają Twoje śmieci

Każde miasto w Stanach Zjednoczonych (i zakładam, że na całym świecie) ma swoje własne śmieci/recykling/kompost/itp. system zbierania. Oznacza to, że aby stworzyć dokładny klasyfikator śmieci, musimy 1) zbudować niestandardowy model ML (omówimy to w następnym kroku – bez kodu!) i 2) wiedzieć, dokąd trafia każdy kawałek śmieci.

Ponieważ nie zawsze znałem odpowiedni pojemnik na każdy przedmiot, którego używałem do trenowania mojej modelki, skorzystałem z ulotki Seattle Utilities (zdjęcie 1), a także poręcznego „Gdzie to idzie?” narzędzie wyszukiwania dla miasta Seattle! Sprawdź, jakie zasoby są dostępne w Twoim mieście, wyszukując narzędzie do zbierania śmieci w Twoim mieście i przeglądając jego stronę internetową.

Krok 2: Utwórz niestandardowy model ML w Lobe

Utwórz niestandardowy model ML w Lobe
Utwórz niestandardowy model ML w Lobe
Utwórz niestandardowy model ML w Lobe
Utwórz niestandardowy model ML w Lobe
Utwórz niestandardowy model ML w Lobe
Utwórz niestandardowy model ML w Lobe
Utwórz niestandardowy model ML w Lobe
Utwórz niestandardowy model ML w Lobe

Lobe to łatwe w użyciu narzędzie, które ma wszystko, czego potrzebujesz, aby urzeczywistnić swoje pomysły na uczenie maszynowe. Pokaż mu przykłady tego, co chcesz zrobić, a automatycznie wytrenuje niestandardowy model uczenia maszynowego, który można wyeksportować na urządzenia brzegowe i aplikacje. Nie wymaga żadnego doświadczenia, aby zacząć. Możesz trenować na własnym komputerze za darmo!

Oto krótki przegląd sposobu korzystania z Lobe:

1. Otwórz program Lobe i utwórz nowy projekt.

2. Zrób lub zaimportuj zdjęcia i oznacz je w odpowiednich kategoriach. (Zdjęcie 1) Etykiety te będą nam potrzebne później w części projektu dotyczącej oprogramowania.

Istnieją dwa sposoby importowania zdjęć:

  1. Rób zdjęcia przedmiotów bezpośrednio z kamery internetowej komputera lub
  2. Importuj zdjęcia z istniejących folderów na komputerze.

    Pamiętaj, że nazwa folderu ze zdjęciami będzie używana jako nazwa etykiety kategorii, więc upewnij się, że pasuje do istniejących etykiet

Na bok: Skończyło się na użyciu obu metod, ponieważ im więcej masz zdjęć, tym dokładniejszy jest twój model.

3. Użyj funkcji „Odtwórz”, aby przetestować dokładność modelu. Zmieniaj odległości, oświetlenie, pozycje rąk itp., aby określić, gdzie model jest, a gdzie nie jest dokładny. W razie potrzeby dodaj więcej zdjęć. (Zdjęcia 3 - 4)

4. Kiedy będziesz gotowy, wyeksportuj swój model Lobe ML w formacie TensorFlow (TF) Lite.

Porady:

  • Przed zaimportowaniem zdjęć sporządź listę wszystkich potrzebnych kategorii i sposobu ich oznaczania (np. „śmieci”, „recykling”, „kompost” itp.)

    Uwaga: Użyj tych samych etykiet, jak pokazano na zdjęciu „Etykiety modelu płatka” powyżej, aby zmniejszyć ilość kodu, który musisz zmienić

  • Uwzględnij kategorię „nie do śmieci”, która zawiera zdjęcia wszystkiego, co może znajdować się na zdjęciu (np. Twoich dłoni i ramion, tła itp.)
  • Jeśli to możliwe, zrób zdjęcia z kamery Pi i zaimportuj do Lobe. To znacznie poprawi dokładność Twojego modelu!
  • Potrzebujesz więcej zdjęć? Sprawdź zbiory danych o otwartym kodzie źródłowym na Kaggle, w tym ten zestaw obrazów klasyfikacji śmieci!
  • Potrzebujesz więcej pomocy? Połącz się ze społecznością Lobe na Reddit!

Krok 3: Zbuduj: sprzęt

Zbuduj to: sprzęt!
Zbuduj to: sprzęt!
Zbuduj to: sprzęt!
Zbuduj to: sprzęt!
Zbuduj to: sprzęt!
Zbuduj to: sprzęt!

1. Ostrożnie podłącz kamerę Pi do Pi (odwiedź przewodnik wprowadzający Pi Foundation, aby uzyskać więcej informacji). (Zdjęcie 1)

2. Postępuj zgodnie ze schematem okablowania, aby podłączyć przycisk i diody LED do pinów Pi GPIO.

  • Przycisk: Podłącz jedną nogę przycisku do pinu GPIO 2. Drugą, poprzez rezystor, podłącz do pinu GPIO GND.
  • Żółta dioda LED: podłącz dodatnią (dłuższą) nogę do pinu 17 GPIO. Podłącz drugą nogę, przez rezystor, do pinu GPIO GND.
  • Niebieska dioda LED: Podłącz dodatnią nogę do pinu 27 GPIO. Podłącz drugą nogę, poprzez rezystor, do pinu GPIO GND.
  • Zielona dioda LED: Podłącz dodatnią nogę do pinu 22 GPIO. Podłącz drugą nogę, poprzez rezystor, do pinu GPIO GND.
  • Czerwona dioda LED: Podłącz dodatnią nogę do pinu 23 GPIO. Podłącz drugą nogę, poprzez rezystor, do pinu GPIO GND.
  • Biała dioda LED: Podłącz dodatnią nogę do pinu 24 GPIO. Podłącz drugą nogę, poprzez rezystor, do pinu GPIO GND.

3. Zaleca się przetestowanie obwodu na płytce stykowej i uruchomienie programu przed lutowaniem lub trwałym połączeniem. Aby to zrobić, musimy napisać i wgrać nasz program, więc przejdźmy do następnego kroku!

Krok 4: Zakoduj to: Oprogramowanie

Code It: Oprogramowanie!
Code It: Oprogramowanie!
Code It: Oprogramowanie!
Code It: Oprogramowanie!

1. Na komputerze otwórz WinSCP i połącz się z Pi. Utwórz folder Lobe w katalogu domowym swojego Pi i utwórz folder modelu w tym katalogu.

2. Przeciągnij wynikową zawartość folderu Lobe TF na Pi. Zanotuj ścieżkę pliku: /home/pi/Lobe/model

3. Na Pi otwórz terminal i pobierz bibliotekę lobe-python dla Python3, uruchamiając następujące polecenia bash:

pip3 zainstaluj

krzywka instalacyjna pip3

4. Pobierz kod klasyfikatora śmieci (rpi_trash_classifier.py) z tego repozytorium na Pi (kliknij przycisk „Kod”, jak pokazano na zdjęciu 1).

  • Wolisz kopiować/wklejać? Pobierz surowy kod tutaj.
  • Wolisz pobrać na swój komputer? Pobierz repozytorium/kod na swój komputer, a następnie prześlij kod Pythona do Pi za pomocą WinSCP (lub preferowanego programu do zdalnego przesyłania plików).

5. Po podłączeniu sprzętu do pinów GPIO Pi, przeczytaj przykładowy kod i zaktualizuj dowolne ścieżki plików zgodnie z potrzebami:

  • Linia 29: ścieżka pliku do modelu Lobe TF
  • Linie 47 i 83: ścieżka pliku do przechwyconych obrazów za pomocą Pi Camera

6. W razie potrzeby zaktualizuj etykiety modelu w kodzie, aby dokładnie odpowiadały etykietom w modelu Lobe (w tym wielkość liter, interpunkcja itp.):

  • Linia 57: „śmieci”
  • Linia 60: „recykling”
  • Linia 63: „kompost”
  • Linia 66: „zakład odpadów niebezpiecznych”
  • Linia 69: „nie śmieci!”

7. Uruchom program za pomocą Python3 w oknie terminala:

python3 rpi_trash_classifier.py

Krok 5: Przetestuj: Uruchom program

Przetestuj: Uruchom program!
Przetestuj: Uruchom program!
Przetestuj: Uruchom program!
Przetestuj: Uruchom program!
Przetestuj: Uruchom program!
Przetestuj: Uruchom program!

Przegląd programu

Przy pierwszym uruchomieniu programu załadowanie biblioteki TensorFlow i modelu Lobe ML zajmie trochę czasu. Gdy program jest gotowy do przechwytywania obrazu, dioda stanu (biała dioda LED) zacznie pulsować.

Po zrobieniu obrazu program porówna obraz z modelem Lobe ML i wygeneruje wynikową prognozę (wiersz 83). Wyjście określa, które światło jest włączone: żółte (śmieci), niebieskie (recykling), zielone (kompost) lub czerwone (niebezpieczne odpady).

Jeśli żadna ze wskaźników LED nie zapali się, a dioda statusu powróci do trybu impulsowego, oznacza to, że przechwycony obraz „nie był śmieciem”, czyli zrób zdjęcie ponownie!

Przechwytywanie obrazu

Naciśnij przycisk, aby zrobić zdjęcie. Zwróć uwagę, że może być konieczne przytrzymanie przycisku przez co najmniej 1 s, aby program zarejestrował prasę. Zaleca się wykonanie kilku zdjęć testowych, a następnie otwarcie ich na pulpicie, aby lepiej zrozumieć widok kamery i kadr.

Aby dać użytkownikowi czas na ustawienie obiektu i dostosowanie poziomu światła kamery, pełne przechwycenie obrazu zajmuje około 5 sekund. Możesz zmienić te ustawienia w kodzie (linie 35 i 41), ale pamiętaj, że Pi Foundation zaleca minimum 2 sekundy na regulację poziomu światła.

Rozwiązywanie problemów

Największym wyzwaniem jest zapewnienie, że przechwycony obraz jest tym, czego oczekujemy, więc poświęć trochę czasu na przejrzenie obrazów i porównanie oczekiwanych wyników z wyjściem wskaźnika LED. W razie potrzeby obrazy można przekazać do modelu Lobe ML w celu bezpośredniego wnioskowania i szybszego porównania.

Kilka rzeczy do zapamiętania:

  • Biblioteka TensorFlow prawdopodobnie zwróci komunikaty ostrzegawcze - jest to typowe dla wersji użytej w tym przykładowym kodzie.
  • Etykiety przewidywania muszą być dokładnie takie, jak napisano w funkcji led_select(), w tym wielkość liter, interpunkcja i odstępy. Pamiętaj, aby je zmienić, jeśli masz inny model Lobe.
  • Pi wymaga stałego zasilania. Kontrolka zasilania Pi powinna być jasna, jednolicie czerwona.
  • Jeśli jedna lub więcej diod LED nie włącza się zgodnie z oczekiwaniami, sprawdź je wymuszając za pomocą polecenia:

red_led.on()

Krok 6: (Opcjonalnie) Zbuduj to: sfinalizuj swój obwód

(Opcjonalnie) Zbuduj to: sfinalizuj swój obwód!
(Opcjonalnie) Zbuduj to: sfinalizuj swój obwód!
(Opcjonalnie) Zbuduj to: sfinalizuj swój obwód!
(Opcjonalnie) Zbuduj to: sfinalizuj swój obwód!
(Opcjonalnie) Zbuduj to: sfinalizuj swój obwód!
(Opcjonalnie) Zbuduj to: sfinalizuj swój obwód!

Teraz, gdy przetestowaliśmy i, jeśli to konieczne, debugowaliśmy nasz projekt, aby działał zgodnie z oczekiwaniami, jesteśmy gotowi do lutowania naszego obwodu!

Uwaga: Jeśli nie masz lutownicy, możesz pominąć ten krok. Jedną z alternatyw jest pokrycie połączeń przewodów gorącym klejem (ta opcja pozwoli ci później naprawić/dodać/użyć rzeczy, ale jest bardziej podatne na zerwanie) lub użyć żywicy epoksydowej lub podobnego trwałego kleju (ta opcja będzie znacznie trwalsza ale po wykonaniu tej czynności nie będzie można użyć obwodu lub potencjalnie Pi)

Szybki komentarz na temat moich wyborów projektowych (zdjęcie 1):

  • Zdecydowałem się na żeńskie przewody połączeniowe dla diod LED i Pi GPIO, ponieważ pozwalają mi one usuwać diody LED i zamieniać kolory lub przesuwać je w razie potrzeby. Możesz je pominąć, jeśli chcesz, aby połączenia były trwałe.
  • Podobnie wybrałem złącze JST dla przycisku.

Naprzód do budowania

1. Przetnij każdy z żeńskich zworek na pół (tak, wszystkie!). Używając szczypiec do zdejmowania izolacji, usuń około 1/4 (1/2 cm) izolacji przewodu.

2. Do każdej z diod przylutuj rezystor 220Ω do ujemnej (krótszej) nogi. (Zdjęcie 2)

3. Wytnij mały kawałek, około 1 (2 cm) rurki termokurczliwej i popchnij złącze diody LED i rezystora. Upewnij się, że druga noga rezystora jest dostępna, a następnie podgrzej rurkę termokurczliwą, aż zabezpieczy połączenie. (Zdjęcie 3)

4. Włóż każdą diodę LED do pary żeńskich przewodów połączeniowych. (Zdjęcie 4)

5. Oznacz przewody połączeniowe (np. taśmą), a następnie przylutuj przewody połączeniowe do płytki drukowanej (PCB). (Zdjęcie 5)

6. Następnie użyj (przeciętego) żeńskiego przewodu połączeniowego, aby podłączyć każdą diodę LED do odpowiedniego pinu Pi GPIO. Przylutuj i oznacz przewód połączeniowy tak, aby goły metal łączył się z dodatnią nogą LED za pośrednictwem płytki drukowanej. (Zdjęcie 5)

Uwaga: Miejsce lutowania tego przewodu będzie zależeć od układu PCB. Możesz również przylutować ten przewód bezpośrednio do dodatniego przewodu połączeniowego LED.

7. Przylutuj rezystor 220Ω do ujemnego (czarnego) końca złącza JST. (Zdjęcie 6)

8. Przylutuj złącze JST i rezystor do przycisku.(Zdjęcie 6)

9. Podłączyć przewody połączeniowe M-do-F między złączem przycisku a pinami GPIO (przypomnienie: czarny to GND).

10. Pokryj PCB połączeń gorącym klejem lub żywicą epoksydową, aby zapewnić bezpieczniejsze połączenie.

Uwaga: jeśli zdecydujesz się na użycie żywicy epoksydowej, możesz nie być w stanie użyć pinów GPIO Pi do innych projektów w przyszłości. Jeśli martwisz się tym, dodaj kabel taśmowy GPIO i podłącz do niego przewody połączeniowe.

Krok 7: (Opcjonalnie) Zbuduj to: sprawa

(Opcjonalnie) Zbuduj to: sprawa!
(Opcjonalnie) Zbuduj to: sprawa!
(Opcjonalnie) Zbuduj to: sprawa!
(Opcjonalnie) Zbuduj to: sprawa!
(Opcjonalnie) Zbuduj to: sprawa!
(Opcjonalnie) Zbuduj to: sprawa!
(Opcjonalnie) Zbuduj to: sprawa!
(Opcjonalnie) Zbuduj to: sprawa!

Stwórz obudowę dla swojego Pi, która utrzyma kamerę, przycisk i diody LED na miejscu, jednocześnie chroniąc Pi. Zaprojektuj własną obudowę lub postępuj zgodnie z poniższymi instrukcjami budowania, aby szybko stworzyć prototyp obudowy kartonowej!

  1. Na górze małego kartonowego pudełka zaznacz położenie przycisku, lampki stanu, lampek identyfikacyjnych i okna kamery pi (zdjęcie 1).

    Uwaga: okno kamery Pi powinno mieć wymiary około 3/4" x 1/2"

  2. Za pomocą precyzyjnego noża wytnij ślady.

    Uwaga: możesz chcieć przetestować rozmiary na bieżąco (zdjęcie 1)

  3. Opcjonalnie: pomaluj obudowę! Zdecydowałem się na farbę w sprayu:)
  4. Wytnij prostokątną osłonę „okna” na kamerę Pi (zdjęcie 4) i przyklej po wewnętrznej stronie pudełka
  5. Na koniec wytnij gniazdo na kabel zasilający Pi.

    Zaleca się, aby najpierw zainstalować całą elektronikę, aby zlokalizować najlepsze miejsce na gniazdo kabla zasilającego pi

Krok 8: Zainstaluj i wdróż

Zainstaluj i wdróż!
Zainstaluj i wdróż!

Otóż to! Jesteś gotowy do zainstalowania i wdrożenia swojego projektu! Umieść obudowę nad koszami na śmieci, podłącz Pi i uruchom program, aby uzyskać szybszy i bardziej niezawodny sposób na zmniejszenie ilości odpadów. Tak!

Iść naprzód

  • Podziel się swoimi projektami i pomysłami z innymi ludźmi za pośrednictwem społeczności Lobe Reddit!
  • Zapoznaj się z repozytorium Lobe Python na GitHub, aby uzyskać ogólne informacje o tym, jak używać Pythona do wdrażania szerszej gamy projektów Lobe
  • Pytania lub prośby o projekt? Zostaw komentarz do tego projektu lub skontaktuj się z nami bezpośrednio: [email protected]

Zalecana: