Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Motywacja
- Krok 2: NVIDIA JetBot i przegląd projektu
- Krok 3: Zbuduj JetBota i prześlij notatniki Jupyter
- Krok 4: Zbieranie danych treningowych na JetBot
- Krok 5: Trenuj sieć neuronową na maszynie GPU
- Krok 6: Uruchom demo na żywo na JetBot
Wideo: Transfer nauki za pomocą NVIDIA JetBot - zabawa ze stożkami ruchu: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
By dvillevaldMy GithubFollow About: Lubię aplikacje wykorzystujące sztuczną inteligencję i uczenie maszynowe, szczególnie w robotyce Więcej o dvillevald »
Naucz swojego robota, aby znaleźć ścieżkę w labiryncie pachołków drogowych, korzystając z kamery i najnowocześniejszego modelu uczenia głębokiego.
Kieszonkowe dzieci
-
NVIDIA JetBot
Strona z listą materiałów na stronie NVIDIA JetBot Wiki zawiera wszystko, czego potrzebujesz do zbudowania JetBota, wraz z zakupami linków od popularnych dostawców
- Komputer z procesorem graficznym NVIDIA
Potrzebny do trenowania modelu
- BlueDot Trading 4” RC Racing Agility Cones, Pomarańczowe – Zestaw 20
Krok 1: Motywacja
Za każdym razem, gdy jadę w strefie skurczów, zastanawiam się, jak trudne byłoby poruszanie się samojezdnego samochodu przez pachołki drogowe. Okazuje się, że nie jest to takie trudne z nowym JetBot firmy NVIDIA - mając zaledwie kilkaset obrazów, możesz wytrenować najnowocześniejszy model głębokiego uczenia się, aby nauczyć swojego robota, jak znaleźć ścieżkę w labiryncie stożków ruchu zabawek używając tylko wbudowanej kamery i żadnych innych czujników.
Krok 2: NVIDIA JetBot i przegląd projektu
JetBot to robot typu open source oparty na zestawie NVIDIA Jetson Nano. Tutaj znajdziesz szczegółowe instrukcje, jak je zbudować i skonfigurować.
Ten projekt jest zmodyfikowanym przykładem unikania kolizji z NVIDIA JetBot Wiki. Składa się z trzech głównych kroków, z których każdy jest opisany w osobnym notatniku Jupytera:
- Zbieraj dane na JetBot - notebook data_collection_cones.ipynb
- Trenuj model na innej maszynie GPU - notebook train_model_cones.ipynb
- Uruchom demo na żywo na JetBot - notebook live_demo_cones.ipynb
Te trzy zeszyty Jupyter znajdziesz tutaj
Krok 3: Zbuduj JetBota i prześlij notatniki Jupyter
- Zbuduj i skonfiguruj JetBota, jak wyjaśniono tutaj
- Połącz się z robotem, przechodząc do https://:8888Zaloguj się przy użyciu domyślnego hasła jetbot
- Zamknij wszystkie inne uruchomione notebooki, wybierając Kernel -> Shutdown All Kernels…
- Przejdź do ~/Notatniki/
- Utwórz nowy podfolder ~/Notebooks/traffic_cones_driving/
- Prześlij data_collection_cones.ipynb i live_demo_cones.ipynb do ~/Notebooks/traffic_cones_driving/
WAŻNE: notebooki Jupyter data_collection_cones.ipynb i live_demo_cones.ipynb, o których mowa w tej instrukcji, powinny być uruchamiane na JetBot, a train_model_cones.ipynb - na komputerze z GPU.
Dlatego musimy wgrać data_collection_cones.ipynb i live_demo_cones.ipynb do JetBota i umieścić je w ~/Notebooks/traffic_cones_driving/
Krok 4: Zbieranie danych treningowych na JetBot
Zbierzemy zestaw danych klasyfikacji obrazów, który zostanie wykorzystany, aby pomóc JetBotowi działać w labiryncie stożków ruchu. JetBot nauczy się szacować prawdopodobieństwa czterech scenariuszy (klas):
- Za darmo – kiedy można bezpiecznie iść do przodu
- Zablokowany - gdy przed robotem znajduje się przeszkoda
- W lewo - kiedy robot powinien kręcić się w lewo
- W prawo – kiedy robot powinien kręcić się w prawo
Aby zebrać dane treningowe na JetBot, użyjemy notatnika Jupyter data_collection_cones.ipynb, który zawiera szczegółowe instrukcje, jak to zrobić. Aby uruchomić ten notatnik na JetBot, wykonaj następujące kroki:
- Połącz się z robotem, przechodząc do
- Zaloguj się przy użyciu domyślnego hasła jetbot
- Zamknij wszystkie inne uruchomione notebooki, wybierając Kernel -> Shutdown All Kernels…
- Przejdź do ~/Notebooks/traffic_cones_driving/
- Otwórz i postępuj zgodnie z notatnikiem data_collection_cones.ipynb
Krok 5: Trenuj sieć neuronową na maszynie GPU
Następnie użyjemy zebranych danych do ponownego uczenia modelu głębokiego uczenia AlexNet na maszynie GPU (host), uruchamiając train_model_cones.ipynb.
Zauważ, że train_model_cones.ipynb jest jedynym notatnikiem Jupyter w tym samouczku, który NIE jest uruchamiany na JetBot
- Połącz się z maszyną GPU z zainstalowanym PyTorch i uruchomionym serwerem Jupyter Lab
- Prześlij notatnik train_model_cones.ipynb i do tej maszyny
- Prześlij plik dataset_cones.zip utworzony w notatniku data_collection_cones.ipynb i wyodrębnij ten zestaw danych. (Po wykonaniu tego kroku w przeglądarce plików powinien pojawić się folder o nazwie dataset_cones).
- Otwórz i postępuj zgodnie z notatnikiem train_model_cones.ipynb. Na końcu tego kroku utworzysz model - plik best_model_cones.pth, który następnie należy przesłać do JetBota, aby uruchomić demo na żywo.
Krok 6: Uruchom demo na żywo na JetBot
Ostatnim krokiem jest przesłanie modelu best_model_cones.pth do JetBota i uruchomienie go.
- Zasil robota z akumulatora USB
- Połącz się z robotem, przechodząc do
- Zaloguj się przy użyciu domyślnego hasła jetbot
- Zamknij wszystkie inne uruchomione notebooki, wybierając Kernel -> Shutdown All Kernels…
- Przejdź do ~/Notebooks/traffic_cones_driving
- Otwórz i śledź notatnik live_demo_cones.ipynb
Zacznij ostrożnie i daj JetBotowi wystarczająco dużo miejsca do poruszania się. Wypróbuj różne konfiguracje stożków i zobacz, jak dobrze robot radzi sobie w różnych środowiskach, oświetleniu itp. Podczas gdy notebook live_demo_cones.ipynb szczegółowo wyjaśnia wszystkie kroki, poniższa tabela przedstawia logikę ruchów robota z uwzględnieniem prawdopodobieństw przewidywanych przez modele.
Notatnik wyjaśnia również, jak przechowywać historię ruchów robota z prawdopodobieństwami swobodnymi/lewo/prawo/zablokowanymi przewidzianymi przez model oraz jak zrobić dwa filmy FPV (widok z pierwszej osoby) (z szybkością 1 kl./s i 15 kl./s) z nałożoną telemetrią i Dane akcji JetBota. Są one przydatne do debugowania, strojenia regulatora PID i ulepszania modelu.
Miłej zabawy i daj mi znać, jeśli masz pytania!:-)
Kod jest dostępny na Github
Zalecana:
Kran z czujnikiem ruchu za pomocą Arduino i zaworu elektromagnetycznego - DIY: 6 kroków
Motion Sensor Water Tap za pomocą Arduino i zaworu elektromagnetycznego - DIY: W tym projekcie pokażę, jak zbudować Motion Sensor Water Tap za pomocą zaworu elektromagnetycznego. Ten projekt może pomóc w przekształceniu istniejącego ręcznego kranu w kran, którym można sterować w oparciu o wykrywanie ruchu. Korzystając z interfejsu czujnika podczerwieni
Jak zbudować system wykrywania ruchu za pomocą Arduino: 7 kroków
Jak zbudować system wykrywania ruchu za pomocą Arduino: Zbuduj licznik produkcji ruchu i obecności za pomocą Feather HUZZAH zaprogramowanego za pomocą Arduino i zasilanego przez Ubidots. Skuteczne fizyczne wykrywanie ruchu i obecności w inteligentnych domach i inteligentnej produkcji może być bardzo przydatne w aplikacjach od
Monitorowanie terrarium jaszczurki za pomocą kontrolera Adosia IoT WiFi + wykrywanie ruchu: 17 kroków (ze zdjęciami)
Monitorowanie terrarium jaszczurek za pomocą kontrolera Adosia IoT WiFi + wykrywanie ruchu: W tym samouczku pokażemy, jak zbudować proste terrarium dla jaszczurek dla garstki jaj scynków, które przypadkowo znaleźliśmy i naruszyliśmy podczas pracy w ogrodzie. Chcemy, aby jaja wykluwały się bezpiecznie, więc wszystko, co zrobimy, to stworzyć bezpieczną przestrzeń za pomocą plastiku
Detektor ruchu za pomocą NodeMCU: 5 kroków
Detektor ruchu za pomocą NodeMCU: W tym projekcie za pomocą czujnika ruchu można wykryć obecność dowolnego człowieka lub zwierzęcia. A dzięki platformie o nazwie thingsio możesz monitorować datę i godzinę wykrycia obecności
Transfer energii za pomocą dwóch cewek Tesli: 7 kroków (ze zdjęciami)
Przenoszenie energii za pomocą dwóch cewek Tesli: Za pomocą tych cewek Tesli można zapalić diodę LED podłączoną do jednego przewodu. Energia jest przesyłana w prawo z lewej anteny. Generator sygnału jest podłączony do czarnej prawej cewki (prawa antena). Na 2 antenach energia jest przekazywana przez indukcję