İçindekiler:

NVIDIA JetBot ile Transfer Öğrenimi - Trafik Konileriyle Eğlence: 6 Adım
NVIDIA JetBot ile Transfer Öğrenimi - Trafik Konileriyle Eğlence: 6 Adım

Video: NVIDIA JetBot ile Transfer Öğrenimi - Trafik Konileriyle Eğlence: 6 Adım

Video: NVIDIA JetBot ile Transfer Öğrenimi - Trafik Konileriyle Eğlence: 6 Adım
Video: #HITBCyberWeek #CommSec D1 WORKSHOP - How To Train Your Self-Driving (Dragon) Car 2024, Aralık
Anonim

dvillevald tarafından Github'ımTakip edin Hakkında: Özellikle robotikte yapay zeka ve makine öğrenimi uygulamalarını seviyorum dvillevald Hakkında Daha Fazla »

Kamerayı ve son teknoloji derin öğrenme modelini kullanarak robotunuza trafik konilerinden oluşan bir labirentte bir yol bulmayı öğretin.

Gereçler

  • NVIDIA JetBot

    NVIDIA JetBot Wiki'nin Malzeme Listesi sayfası, popüler satıcılardan satın alma bağlantıları ile birlikte JetBot oluşturmak için ihtiyacınız olan her şeyi listeler

  • NVIDIA GPU'lu bilgisayar

    Modeli eğitmek için gerekli

  • BlueDot Trading 4” RC Yarış Çeviklik Konileri, Turuncu – 20'li Set

Adım 1: Motivasyon

Image
Image

Ne zaman daralan bölgede araba kullansam, sürücüsüz bir arabanın trafik konilerinden geçmesinin ne kadar zor olacağını düşünüyorum. Görünüşe göre yeni NVIDIA'nın JetBot'u ile o kadar da zor değil - sadece birkaç yüz görüntüyle, robotunuza oyuncak trafik konilerinden oluşan bir labirentte nasıl bir yol bulacağını öğretmek için son teknoloji ürünü bir derin öğrenme modelini eğitebilirsiniz. yalnızca yerleşik kamerayı kullanarak ve başka hiçbir sensör kullanmadan.

2. Adım: NVIDIA JetBot ve Projeye Genel Bakış

NVIDIA JetBot ve Projeye Genel Bakış
NVIDIA JetBot ve Projeye Genel Bakış

JetBot, NVIDIA Jetson Nano kitine dayalı açık kaynaklı bir robottur. Nasıl oluşturulacağına ve kurulacağına dair ayrıntılı talimatları burada bulabilirsiniz.

Bu proje, NVIDIA JetBot Wiki'den değiştirilmiş bir Çarpışmadan kaçınma örneğidir. Her biri ayrı bir Jupyter not defterinde açıklanan üç ana adımdan oluşur:

  • JetBot'ta veri toplayın - notebook data_collection_cones.ipynb
  • Modeli diğer GPU makinesinde eğitin - notebook train_model_cones.ipynb
  • JetBot'ta canlı demo çalıştırın - notebook live_demo_cones.ipynb

Bu üç Jupyter not defterini burada bulabilirsiniz

3. Adım: JetBot Oluşturun ve Jupyter Not Defterlerini Yükleyin

  1. Burada açıklandığı gibi JetBot'u oluşturun ve kurun
  2. https://:8888Varsayılan parola jetbot ile oturum açarak robotunuza bağlanın
  3. Çekirdek -> Tüm Çekirdekleri Kapat'ı seçerek çalışan diğer tüm not defterlerini kapatın.
  4. ~/Notebooks/ konumuna gidin
  5. Yeni alt klasör oluştur ~/Notebooks/traffic_cones_driving/
  6. data_collection_cones.ipynb ve live_demo_cones.ipynb dosyasını ~/Notebooks/traffic_cones_driving/ klasörüne yükleyin

ÖNEMLİ: Bu talimatta atıfta bulunulan Jupyter notebook data_collection_cones.ipynb ve live_demo_cones.ipynb, GPU'lu bir bilgisayarda train_model_cones.ipynb iken JetBot üzerinde çalıştırılmalıdır.

Bu nedenle data_collection_cones.ipynb ve live_demo_cones.ipynb'yi JetBot'a yüklememiz ve bunları ~/Notebooks/traffic_cones_driving/ içine yerleştirmemiz gerekiyor.

Adım 4: JetBot'ta Eğitim Verilerinin Toplanması

JetBot'un trafik konilerinden oluşan bir labirentte çalışmasına yardımcı olmak için kullanılacak bir görüntü sınıflandırma veri seti toplayacağız. JetBot, dört senaryonun (sınıflar) olasılıklarını nasıl tahmin edeceğini öğrenecektir:

  • Ücretsiz - ilerlemek güvenli olduğunda
  • Engellendi - robotun önünde bir engel olduğunda
  • Sol - robotun sola dönmesi gerektiğinde
  • Sağ - robotun sağa dönmesi gerektiğinde

JetBot'ta eğitim verilerini toplamak için, nasıl yapılacağına ilişkin ayrıntılı talimatlar içeren Jupyter notebook data_collection_cones.ipynb'yi kullanacağız. Bu not defterini JetBot'ta çalıştırmak için sonraki adımları izleyin:

  1. https://:jetbot-ip-address::8888 adresine giderek robotunuza bağlanın
  2. Varsayılan şifre jetbotuyla oturum açın
  3. Çekirdek -> Tüm Çekirdekleri Kapat'ı seçerek çalışan diğer tüm not defterlerini kapatın.
  4. ~/Notebooks/traffic_cones_driving/ konumuna gidin
  5. data_collection_cones.ipynb not defterini açın ve izleyin

Adım 5: Sinir Ağını GPU Makinesinde Eğitin

Ardından, train_model_cones.ipynb çalıştırarak GPU makinesinde (ana bilgisayar) derin öğrenme modeli AlexNet'i yeniden eğitmek için toplanan verileri kullanacağız.

Train_model_cones.ipynb'nin bu öğreticide JetBot'ta NOT çalıştırılan tek Jupyter not defteri olduğunu unutmayın

  1. PyTorch kurulu ve çalışan bir Jupyter Lab sunucusu ile bir GPU makinesine bağlanın
  2. train_model_cones.ipynb not defterini ve bu makineye yükleyin
  3. data_collection_cones.ipynb not defterinde oluşturduğunuz dataset_cones.zip dosyasını yükleyin ve bu veri kümesini çıkarın. (Bu adımdan sonra dosya tarayıcısında dataset_cones adlı bir klasörün göründüğünü görmelisiniz.)
  4. train_model_cones.ipynb not defterini açın ve izleyin. Bu adımın sonunda, bir model oluşturacaksınız - best_model_cones.pth dosyası daha sonra canlı demoyu çalıştırmak için JetBot'a yüklenmesi gerekir.

6. Adım: JetBot'ta Canlı Demo Çalıştırın

JetBot'ta Canlı Demo Çalıştırın
JetBot'ta Canlı Demo Çalıştırın

Bu son adım, best_model_cones.pth modelini JetBot'a yüklemek ve çalıştırmaktır.

  1. Robotunuzu USB pil paketinden çalıştırın
  2. https://:jetbot-ip-address::8888 adresine giderek robotunuza tekrar bağlanın
  3. Varsayılan şifre jetbotuyla oturum açın
  4. Çekirdek -> Tüm Çekirdekleri Kapat'ı seçerek çalışan diğer tüm not defterlerini kapatın.
  5. ~/Notebooks/traffic_cones_driving konumuna gidin
  6. live_demo_cones.ipynb not defterini açın ve izleyin

Tedbirli başlayın ve JetBot'a hareket etmesi için yeterli alan verin. Farklı koni konfigürasyonlarını deneyin ve robotun farklı ortamlarda, aydınlatmada vb. ne kadar iyi performans gösterdiğini görün. notebook live_demo_cones.ipynb tüm adımları ayrıntılı olarak açıklarken, aşağıdaki çizelge, modellerin öngördüğü olasılıklar göz önüne alındığında robot hareketlerinin mantığını göstermektedir.

Not defteri ayrıca, modelin öngördüğü serbest/sol/sağ/engellenmiş olasılıklarla robot hareketlerinin geçmişinin nasıl saklanacağını ve üst üste bindirilmiş telemetri ve JetBot eylemleri verileri. Bunlar hata ayıklama, PID kontrolör ayarı ve model geliştirme için kullanışlıdır.

Eğlenin ve sorularınız varsa bana bildirin!:-)

Kod Github'da mevcuttur

Önerilen: