Mikrodenetleyiciler ve Arduino için TensorFlow Lite ile AI Magic Wand

1. Giriş

Oluşturacaklarınız

Bu codelab'de, Arduino Nano 33 BLE üzerinde bir derin öğrenme modeli çalıştırmak için Mikrodenetleyiciler İçin TensorFlow Lite'ı kullanmayı öğreneceğiz. Mikrodenetleyici, dijital "sihirli değnek"e dönüştürülüyor kullanıcının el sallayıp çeşitli büyüler yapmasını sağlar. Kullanıcı çubuğu hareket ettirdikçe, insanların ayırt edemeyeceği bu karmaşık, çok boyutlu sensör verileri modele girdi olarak aktarılır. Bu da, birkaç hareketten biri gerçekleşirse bizi uyaran basit bir sınıflandırma sonucunu verir.

9208eb1207211349.gif

Mikrodenetleyicilerde Makine Öğrenimi

Makine öğrenimi, kullanıcıların işlerini kolaylaştıran akıllı araçlar Google Asistan gibi özelliklerle hayatınızı kolaylaştırır. Ancak çoğu zaman bu deneyimler, çok fazla hesaplama işlemi veya güçlü bir bulut sunucusu ya da masaüstü gibi kaynaklar gerektirir. Ancak artık mikrodenetleyiciler gibi küçük ve düşük güçlü donanımlarda makine öğrenimi çıkarımı yapmak mümkündür.

Mikrodenetleyiciler son derece yaygındır, ucuzdur, çok az enerji gerektirir ve son derece güvenilirdir. Bunlar her türlü ev cihazının bir parçasıdır: aletler, arabalar ve oyuncaklar. Öyle ki, her yıl mikrodenetleyiciyle çalışan yaklaşık 30 milyar cihaz üretiliyor.

1914a419dfacf0b5.jpeg

Makine öğrenimini küçük mikrodenetleyicilerin kullanımına sunarak pahalı donanımlara veya güvenilir internet bağlantılarına gerek kalmadan hayatımızda kullandığımız milyarlarca cihazın zekasını artırabiliriz. Günlük rutininize uyum sağlayabilen akıllı cihazlar, sorunlar ile normal işleyiş arasındaki farkı anlayan akıllı endüstriyel sensörler ve çocukların eğlenceli ve keyifli şekilde öğrenmesine yardımcı olabilecek sihirli oyuncaklar hayal edin.

Mikrodenetleyiciler İçin TensorFlow Lite (Yazılım)

864114d0c2b4c919.png

TensorFlow, Google'ın modelleri eğitmeye ve çalıştırmaya yönelik açık kaynak makine öğrenimi çerçevesidir. TensorFlow Lite, TensorFlow'un optimize edilmiş bir sürümü olan ve cep telefonları gibi küçük, nispeten düşük güçlü cihazlarda tensorflow modellerini çalıştırmayı hedefleyen bir yazılım çerçevesidir.

Mikrodenetleyiciler İçin TensorFlow Lite, TensorFlow'un optimize edilmiş bir sürümü olan bir yazılım çerçevesidir. Mikrodenetleyiciler gibi küçük, düşük güçlü donanımlarda tensorflow modelleri çalıştırmayı hedefler. Bu yerleşik ortamlarda gerekli olan kısıtlamalara uyar.Örneğin, küçük bir ikili program boyutuna sahiptir, işletim sistemi desteği, standart C veya C++ kitaplıkları ya da dinamik bellek ayırması gerektirmez.

Arduino Nano 33 BLE (Donanım)

bcd452d4d660efa9.jpeg

Arduino, elektronik projeler oluşturmak için kullanılan popüler bir açık kaynak platformudur. Şunlardan oluşur:

  1. Bu codelab'de kullanılan Arduino Nano 33 BLE gibi fiziksel bir programlanabilir devre kartı (genellikle bir mikrodenetleyici).
  2. Bilgisayar kodu yazıp fiziksel karta yüklemek için kullanılan Arduino IDE (Entegre Geliştirme Ortamı) yazılımı.

Arduino Nano 33 BLE, mikrodenetleyici tabanlı bir platformdur: tek bir devre kartı üzerinde küçük bir bilgisayar. Diğer cihazlara dijital sinyaller gönderip almasına olanak tanıyan bir işlemci, bellek ve G/Ç donanımına sahiptir. Bilgisayardan farklı olarak mikrodenetleyiciler güçlü değildir ve genellikle bir işletim sistemi çalıştırmaz. Bunun yerine küçük işlemcileri vardır, fazla belleğe sahip değildir ve yazdığınız programlar doğrudan donanımda çalışır. Ancak mümkün olduğunca basit olacak şekilde tasarlandıkları için mikrodenetleyici çok az enerji kullanabilir.

Yapacaklarınız

  • Arduino Nano 33 BLE mikrodenetleyiciyi kurup dijital "sihirli değnek"e dönüştürün
  • Arduino IDE'yi kurun ve gerekli kitaplıkları yükleyin
  • Programı cihaza dağıtın
  • Sihirli değneği sallayarak çeşitli büyüler yapın ve tahminleri görün

Gerekenler

  • Linux, MacOS veya Windows dizüstü bilgisayar
  • Arduino Nano BLE Sense 33 (başlıksız)
  • Mikro USB kablosu (USB-C dizüstü bilgisayar kullanıyorsanız bunun yerine USB-C - Mikro USB kablosu satın alın)
  • (isteğe bağlı) Çubuk, yaklaşık 30 cm (12 inç)
  • (isteğe bağlı) Yapışkan bant

2. Arduino Mikrodenetleyiciyi Kurma

Arduino'nuzu açın

Parçayı kutudan çıkarıp paketleme köpüğünden çıkarın. iletken olduğundan başka türlü sorunlara yol açabilir.

6ed84a651c871a58.jpeg

Dizüstü bilgisayarınıza takın

  • MicroUSB kablosunu çipteki yuvaya takın.
  • Kablonun diğer ucunu dizüstü bilgisayarınızdaki bir USB soketine takın.
  • Arduino'nun sol alttaki LED ışığı (aşağıdaki resimde sol üstte) yanar.

c6936696f9659104.jpeg

İş akışı hakkında bilgi edinme

99852afbed7e78b0.png

Yukarıdaki şemada gösterildiği gibi, Arduino'daki TFLite yorumlayıcısı düzenli olarak model üzerinde çıkarım çalıştırır. Model, işlenmiş ivme ölçer verilerini giriş olarak kullanır ve gerçekleşme olasılığı en yüksek olan hareketi öneren bir tahmin sunar. Ayrıca, istenen bir çıkış yazdırılır ve doğru LED'ler yanar.

3. Arduino IDE'yi kurun

1. Arduino IDE'yi indirin

Programı Arduino Mikrodenetleyiciye dağıtmak için Arduino IDE'yi kullanıyoruz.

İndirdikten sonra, simgesi şu şekilde görünen uygulamayı tıklayarak Arduino IDE'yi yükleyip açın: 75717f13527f36b9.png

İlk açılış sayfası şu şekilde açılır:

933c91e6e1997c61.png

2. Yönetim Kurulu Yöneticisi'ni ayarlama

  1. Arduino menüsünden Tools -> Board: "Arduino .." —> Boards Manager öğesini seçin
  2. "Arduino Nano 33 BLE" araması yapıp Arduino nRF528x Boards (Mbed OS) uygulamasını yükleyin. Bu sayede Arduino Nano 33 BLE Mikrodenetleyicimiz, Arduino IDE tarafından desteklenir. 817c63346152eda9.png.
  1. Arduino menüsünden Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE" öğesini seçin

9357691e1a1348eb.png

  1. Son olarak, seçtiğiniz panonun "Arduino Nano 33 BLE" olduğunu doğrulayın IDE'nin sağ alt tarafındadır.

aa08706bb84fa9b2.png

3. Bağlantı noktasını kurun

Arduino menüsünden Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) öğesini seçin. Şuna benzer bir kod görürsünüz:

8c25990d0c6fb6f8.png

4. Jamboard bağlantısını kontrol edin

Arduino menüsünden Tools -> Get Board Info öğesini seçin. Şuna benzer bir kod görürsünüz:

ccd8f5305be6cf59.png

4. Kitaplıkları yükleme

1. TensorFlow Arduino Kitaplığı

Kitaplıkta, bu codelab'de gerekli olan sihirli değnek kaynak kodu da dahil olmak üzere Mikrodenetleyici için tüm TensorFlow Lite örnekleri yer almaktadır.

  1. Arduino menüsünden Sketch -> Include Library -> Add .ZIP Library... öğesini seçin
  2. İndirdiğiniz TensorFlow Arduino Kitaplığı'nı .zip ekleyin.

2. LSM9DS1 Arduino Kütüphanesi

Bu kitaplık, Arduino Nano 33 BLE Sense cihazınızdaki LSM9DS1 IMU'daki ivme ölçer, manyetometre ve jiroskop değerlerini okumanıza olanak tanır.

  1. Arduino menüsünden Sketch -> Include -> Manage Libraries... öğesini seçin
  2. "Arduino_LSM9DS1" Uygulamasını Arayın ve Yükleyin. ac2f78a737c5f233.png

5. Örneği yükleyin ve derleyin

1. Örneği yükleyin

Arduino menüsünden File -> Examples -> Arduino_TensorFlowLite -> magic_wand öğesini seçerek örnek kodu yükleyin.

de349f2d3cb49b98.png

Bu işlem sihirli değnek kaynak kodunu yükler.

cda8c35a597b0798.png

2. Örneği oluşturun

Çizim penceresindeki Upload düğmesini tıklayın.

71cb1474d5e14669.png

Birkaç dakika sonra, yanıp sönmenin tamamlandığını belirten kırmızı bir metin görürsünüz. Yükleme sırasında sağ LED yanıp sönmeli ve sonunda sönmelidir.

3df1d0858c6e40a4.png

6. Demo

Sihirli değnek şu anda aşağıda gösterildiği gibi 3 hareketi algılayabilir: 99a607da66af9fc8.png

  1. Kanat: Sol üst köşeden başlayın ve "W" harfini dikkatle çizin iki saniyeliğine.
  2. Çaldırma: Dik başlayın, değneği saat yönünde bir saniye boyunca hareket ettirin.
  3. Eğim: Asayı yukarı doğru, LED'ler size bakacak şekilde yukarı doğru tutarak başlayın. Asayı sola doğru eğimli bir şekilde aşağı ve ardından bir saniye boyunca yatay olarak sağa doğru hareket ettirin.

Aşağıdaki resimde iki hareket gösterilmektedir. Önce bir Eğim, ardından bir Kanat (bunu demonuz için referans olarak kullanın).

9208eb1207211349.gif

Demoyu çalıştırmak için aşağıdaki talimatları uygulayın:

  1. USB takılıyken Arduino menüsünden Tools -> Serial Monitor öğesini seçin. Başlangıçta herhangi bir çıkış içermeyen boş bir ekran açılır.

38e8d53652eb28f2.png

  1. Yukarıdaki şekillerin her birini dikkatlice izlemek için Arduino mikrodenetleyiciyi hareket ettirin ve seri monitörün hareketi algılayıp algılamadığına bakın.

60b8a0017bcae419.png

  1. Seri monitördeki çıkışa baktığımızda sihirli değnekin tüm şekilleri algıladığını görüyoruz. Ayrıca sağ LED'in yandığını da görürsünüz.

7. Sonraki Adımlar

Tebrikler, hareketi tanımaya yarayan ilk "sihirli değnek"inizi başarıyla oluşturdunuz ilk adımı oldu.

Mikrodenetleyiciler için TensorFlow Lite ile uygulama geliştirme konusundaki bu kısa tanıtımdan memnun kaldığınızı umuyoruz. Mikrodenetleyicilerle ilgili derin öğrenme fikri yeni ve heyecan verici. Bu nedenle sizi deneyerek denemenizi öneririz.

Referans belgeler

647c3ef0dc103804.png

Teşekkürler, geliştirmenin keyfini çıkarın!