Spisu treści:

Recyklingowy robot sortujący: 15 kroków (ze zdjęciami)
Recyklingowy robot sortujący: 15 kroków (ze zdjęciami)

Wideo: Recyklingowy robot sortujący: 15 kroków (ze zdjęciami)

Wideo: Recyklingowy robot sortujący: 15 kroków (ze zdjęciami)
Wideo: NFOŚiGW: Stabilne finansowanie ekorozwoju Polski w niestabilnych czasach. 2024, Lipiec
Anonim
Image
Image
Uzyskiwanie danych
Uzyskiwanie danych

Czy wiesz, że średni poziom skażenia w społecznościach i firmach wynosi do 25%? Oznacza to, że co czwarty wyrzucany materiał do recyklingu nie podlega recyklingowi. Jest to spowodowane błędem ludzkim w centrach recyklingu. Tradycyjnie pracownicy sortują śmieci do różnych pojemników w zależności od materiału. Ludzie popełniają błędy i nie sortują właściwie śmieci, co prowadzi do skażenia. Ponieważ zanieczyszczenie i zmiana klimatu stają się jeszcze bardziej znaczące w dzisiejszym społeczeństwie, recykling odgrywa ogromną rolę w ochronie naszej planety. Dzięki wykorzystaniu robotów do sortowania śmieci, wskaźniki zanieczyszczeń drastycznie zmniejszą się, nie wspominając o dużo tańszych i bardziej zrównoważonych. Aby rozwiązać ten problem, stworzyłem robota sortującego recykling, który wykorzystuje uczenie maszynowe do sortowania różnych materiałów pochodzących z recyklingu.

Krok 1: Części

Upewnij się, że masz następujące części do naśladowania wraz z tym samouczkiem:

Części drukowane 3D (patrz krok poniżej)

Raspberry Pi RPI 4 4 GB

Akcelerator USB Google Coral

Arduino Uno R3

Moduł kamery Raspberry Pi V2

Zasilacz ścienny 5V 2A DC

Zasilanie DC 12 V

SG90 9g Mikro Serwa 4szt.

Nylonowa nakrętka zabezpieczająca sześciokątna M3 x 0.5mm ze stali nierdzewnej 100szt.

Śruby tytanowe z łbem kulistym M3x20 10szt.

MG996R Metal Gear Torque Analog Servo Motor 4szt.

Samsung 32 GB wybierz kartę pamięci

Kabel Adafruit Flex do kamery Raspberry Pi - 1 metr

M2 męski żeński mosiężny zestaw nakrętek dystansowych z nakrętką dystansową

Wentylator 60mm 12V

Pudełko projektowe 6,69 "x 5,12" x 2,95"

Krok 2: Części drukowane w 3D

Będziesz musiał wydrukować w 3D wszystkie części ramienia robota. Wszystkie pliki można znaleźć tutaj.

Krok 3: Kod

Sklonuj moje repozytorium GitHub, aby śledzić je wraz z tym samouczkiem.

Krok 4: Uzyskanie danych

Aby wyszkolić model wykrywania obiektów, który może wykrywać i rozpoznawać różne materiały do recyklingu, użyłem zestawu danych trashnet, który zawiera 2527 obrazów:

  • 501 szkła
  • 594 papier
  • 403 karton
  • 482 plastik
  • 410 metalu
  • 137 śmieci

Powyższy obrazek jest przykładem jednego na obrazach z zestawu danych.

Ten zestaw danych jest bardzo mały, aby wytrenować model wykrywania obiektów. Jest tylko około 100 zdjęć śmieci, które są za mało, aby wytrenować dokładny model, więc postanowiłem to pominąć.

Możesz użyć tego folderu na Dysku Google do pobrania zestawu danych. Pamiętaj, aby pobrać plik dataset-resize.zip. Zawiera zestaw obrazów, których rozmiar został już przeskalowany do mniejszego rozmiaru, aby umożliwić szybsze szkolenie. Jeśli chcesz zmienić rozmiar nieprzetworzonych obrazów zgodnie z własnymi upodobaniami, pobierz plik dataset-original.zip.

Krok 5: Etykietowanie obrazów

Etykietowanie obrazów
Etykietowanie obrazów

Następnie musimy oznaczyć kilka obrazów różnych materiałów recyklingowych, aby wytrenować model wykrywania obiektów. Aby to zrobić, użyłem labelImg, darmowego oprogramowania, które pozwala na etykietowanie ramek ograniczających obiekty na obrazach.

Oznacz każdy obraz odpowiednią etykietą. Ten samouczek pokazuje, jak to zrobić. Upewnij się, że każda ramka ograniczająca znajduje się jak najbliżej granicy każdego obiektu, aby zapewnić jak najdokładniejszy model wykrywania. Zapisz wszystkie pliki.xml w folderze.

Powyższe zdjęcie pokazuje, jak oznaczyć swoje obrazy.

To bardzo żmudne i paraliżujące umysł doświadczenie. Na szczęście dla Ciebie już oznaczyłem wszystkie obrazy! Znajdziesz go tutaj.

Krok 6: Trening

W zakresie szkoleń zdecydowałem się na transfer learning z wykorzystaniem Tensorflow. Pozwala nam to trenować przyzwoicie dokładny model bez dużej ilości danych.

Możemy to zrobić na kilka sposobów. Możemy to zrobić na naszym lokalnym komputerze stacjonarnym w chmurze. Trening na naszym lokalnym komputerze zajmie bardzo dużo czasu, w zależności od tego, jak potężny jest Twój komputer i czy masz potężny procesor graficzny. To chyba najłatwiejszy sposób moim zdaniem, ale znowu z minusem szybkości.

Należy zwrócić uwagę na kilka kluczowych kwestii związanych z transferem uczenia się. Musisz upewnić się, że wstępnie wytrenowany model, którego używasz do treningu, jest zgodny z Coral Edge TPU. Kompatybilne modele znajdziesz tutaj. Użyłem modelu MobileNet SSD v2 (COCO). Zapraszam do eksperymentowania z innymi.

Aby trenować na komputerze lokalnym, polecam skorzystanie z samouczka Google lub samouczka EdjeElectronics, jeśli działa w systemie Windows 10. Osobiście przetestowałem samouczek EdjeElectroncs i osiągnąłem sukces na moim komputerze. Nie mogę potwierdzić, czy samouczek Google zadziała, ale byłbym zaskoczony, gdyby tak nie było.

Aby trenować w chmurze, możesz użyć AWS lub GCP. Znalazłem ten samouczek, który możesz wypróbować. Wykorzystuje TPU w chmurze Google, które mogą bardzo szybko trenować model wykrywania obiektów. Zachęcamy również do korzystania z AWS.

Niezależnie od tego, czy trenujesz na komputerze lokalnym, czy w chmurze, powinieneś otrzymać wytrenowany model tensorflow.

Krok 7: Kompilacja wyszkolonego modelu

Kompilacja wyszkolonego modelu
Kompilacja wyszkolonego modelu

Aby wytrenowany model działał z TPU Coral Edge, musisz go skompilować.

Powyżej znajduje się schemat przepływu pracy.

Po przeszkoleniu należy go zapisać jako zamrożony wykres (plik.pb). Następnie należy go przekonwertować na model Tensorflow Lite. Zwróć uwagę, jak jest napisane "Kwantyzowanie po treningu". Jeśli podczas korzystania z uczenia transferu korzystałeś ze zgodnych wstępnie wytrenowanych modeli, nie musisz tego robić. Zapoznaj się z pełną dokumentacją dotyczącą kompatybilności tutaj.

W przypadku modelu Tensorflow Lite musisz go skompilować do modelu Edge TPU. Zobacz szczegóły, jak to zrobić tutaj.

Krok 8: Model wykrywania recyklingu

Jeśli nie chcesz przechodzić przez kłopoty z trenowaniem, konwertowaniem i kompilowaniem modelu wykrywania obiektów, zapoznaj się z moim modelem wykrywania recyklingu tutaj.

Krok 9: Wdróż model

Wdróż model
Wdróż model

Następnym krokiem jest skonfigurowanie Raspberry Pi (RPI) i Edge TPU do uruchomienia wytrenowanego modelu wykrywania obiektów.

Najpierw skonfiguruj RPI, korzystając z tego samouczka.

Następnie skonfiguruj Edge TPU zgodnie z tym samouczkiem.

Na koniec podłącz moduł kamery RPI do raspberry pi.

Jesteś teraz gotowy do przetestowania swojego modelu wykrywania obiektów!

Jeśli sklonowałeś już moje repozytorium, będziesz chciał przejść do katalogu RPI i uruchomić plik test_detection.py:

python test_detection.py --model recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/detect_edgetpu.tflite --labels recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/labels.txt

Powinno pojawić się małe okienko, a jeśli włożysz plastikową butelkę z wodą lub inny materiał z recyklingu, powinno to wykryć, jak na powyższym obrazku.

Naciśnij literę „q” na klawiaturze, aby zakończyć program.

Krok 10: Zbuduj ramię robota

Zbuduj ramię robota
Zbuduj ramię robota

Ramię robota to ramię wydrukowane w 3D, które tutaj znalazłem. Po prostu postępuj zgodnie z samouczkiem dotyczącym konfigurowania.

Powyższy obrazek pokazuje, jak wyszło moje ramię robota.

Upewnij się, że podłączasz piny serwa do pinów Arduino I/O w moim kodzie. Połącz serwa od dołu do góry ramienia w następującej kolejności: 3, 11, 10, 9, 6, 5. Niepodłączenie go w tej kolejności spowoduje, że ramię poruszy niewłaściwym serwo!

Sprawdź, czy działa, przechodząc do katalogu Arduino i uruchamiając plik basicMovement.ino. To po prostu chwyci przedmiot, który umieścisz przed ramieniem, i upuści go z tyłu.

Krok 11: Podłączanie RPI i ramienia robota

Podłączanie RPI i ramienia robota
Podłączanie RPI i ramienia robota

Najpierw musimy zamontować moduł kamery na spodzie pazura. Powyższy obrazek pokazuje, jak powinien wyglądać.

Staraj się ustawić kamerę tak prosto, jak to możliwe, aby zminimalizować błędy w chwytaniu rozpoznanego materiału z recyklingu. Będziesz musiał użyć długiego kabla taśmowego modułu kamery, jak pokazano na liście materiałów.

Następnie musisz wgrać plik roboticArm.ino na płytkę Arduino.

Na koniec musimy tylko podłączyć kabel USB między portem USB RPI a portem USB Arduino. To pozwoli im komunikować się przez port szeregowy. Postępuj zgodnie z tym samouczkiem, jak to skonfigurować.

Krok 12: Ostatnie poprawki

Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki

Ten krok jest całkowicie opcjonalny, ale lubię umieszczać wszystkie moje komponenty w ładnym, małym pudełku projektowym.

Powyższe zdjęcia pokazują, jak to wygląda.

Możesz znaleźć skrzynkę projektu na liście materiałów. Po prostu wywierciłem kilka otworów i użyłem mosiężnych wsporników do zamontowania elektroniki. Zamontowałem również 4 wentylatory chłodzące, aby utrzymać stały przepływ powietrza przez RPI i TPU, gdy są gorące.

Krok 13: Bieganie

Jesteś teraz gotowy do włączenia zarówno ramienia robota, jak i RPI! W RPI możesz po prostu uruchomić plik recycle_detection.py. Spowoduje to otwarcie okna, a ramię robota zacznie działać, tak jak w filmie demonstracyjnym! Naciśnij literę „q” na klawiaturze, aby zakończyć program.

Zapraszam do zabawy z kodem i baw się dobrze!

Krok 14: Przyszła praca

Mam nadzieję, że skorzystam z R. O. S. kontrolować ramię robota za pomocą bardziej precyzyjnych ruchów. Umożliwi to dokładniejsze podnoszenie przedmiotów.

Krok 15: Pytania?

Jeśli masz jakieś pytania, zostaw komentarz poniżej!

Zalecana: