Spisu treści:

Transfer nauki za pomocą NVIDIA JetBot - zabawa ze stożkami ruchu: 6 kroków
Transfer nauki za pomocą NVIDIA JetBot - zabawa ze stożkami ruchu: 6 kroków

Wideo: Transfer nauki za pomocą NVIDIA JetBot - zabawa ze stożkami ruchu: 6 kroków

Wideo: Transfer nauki za pomocą NVIDIA JetBot - zabawa ze stożkami ruchu: 6 kroków
Wideo: NVIDIA Tesla K20x - czy odpali gry? 2024, Lipiec
Anonim

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

Image
Image

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

NVIDIA JetBot i przegląd projektów
NVIDIA JetBot i przegląd projektów

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

  1. Zbuduj i skonfiguruj JetBota, jak wyjaśniono tutaj
  2. Połącz się z robotem, przechodząc do https://:8888Zaloguj się przy użyciu domyślnego hasła jetbot
  3. Zamknij wszystkie inne uruchomione notebooki, wybierając Kernel -> Shutdown All Kernels…
  4. Przejdź do ~/Notatniki/
  5. Utwórz nowy podfolder ~/Notebooks/traffic_cones_driving/
  6. 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:

  1. Połącz się z robotem, przechodząc do
  2. Zaloguj się przy użyciu domyślnego hasła jetbot
  3. Zamknij wszystkie inne uruchomione notebooki, wybierając Kernel -> Shutdown All Kernels…
  4. Przejdź do ~/Notebooks/traffic_cones_driving/
  5. 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

  1. Połącz się z maszyną GPU z zainstalowanym PyTorch i uruchomionym serwerem Jupyter Lab
  2. Prześlij notatnik train_model_cones.ipynb i do tej maszyny
  3. 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).
  4. 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

Uruchom demo na żywo na JetBot
Uruchom demo na żywo na JetBot

Ostatnim krokiem jest przesłanie modelu best_model_cones.pth do JetBota i uruchomienie go.

  1. Zasil robota z akumulatora USB
  2. Połącz się z robotem, przechodząc do
  3. Zaloguj się przy użyciu domyślnego hasła jetbot
  4. Zamknij wszystkie inne uruchomione notebooki, wybierając Kernel -> Shutdown All Kernels…
  5. Przejdź do ~/Notebooks/traffic_cones_driving
  6. 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: