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

1. Giriş

Ne oluşturacaksınız?

Bu codelab'de, Arduino Nano 33 BLE üzerinde derin öğrenme modeli çalıştırmak için TensorFlow Lite For Microcontrollers'ı kullanmayı öğreneceğiz. Mikro denetleyici, kullanıcı tarafından çeşitli büyüler yapmak için kullanılan dijital bir "sihirli değneğe" dönüştürülür. Kullanıcı çubuğu hareket ettirdikçe, insan için anlaşılmaz olan bu karmaşık, çok boyutlu sensör verileri modele giriş olarak iletilir. Model, çeşitli hareketlerden biri gerçekleştiyse bizi uyaran basit bir sınıflandırma çıkarır.

9208eb1207211349.gif

Mikrodenetleyicilerde Makine Öğrenimi

Makine öğrenimi, kullanıcıların hayatını kolaylaştıran akıllı araçlar (ör. Google Asistan) oluşturmak için kullanılabilir. Ancak bu deneyimler genellikle güçlü bir bulut sunucusu veya masaüstü bilgisayar gibi çok fazla işlem ya da kaynak gerektirir. Ancak artık mikro denetleyiciler gibi küçük ve düşük güçlü donanımlarda makine öğrenimi çıkarımı çalıştırmak mümkün.

Mikro denetleyiciler son derece yaygın, ucuz, çok az enerji gerektirir ve çok güvenilirdir. Cihazlar, arabalar ve oyuncaklar gibi her türlü ev aletinde yer alırlar. Her yıl yaklaşık 30 milyar mikro denetleyici destekli cihaz üretiliyor.

1914a419dfacf0b5.jpeg

Makine öğrenimini küçük mikro denetleyicilere taşıyarak, pahalı donanımlara veya güvenilir internet bağlantılarına ihtiyaç duymadan 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 çalışma arasındaki farkı anlayabilen akıllı endüstriyel sensörler ve çocukların eğlenceli ve keyifli bir şekilde öğrenmesine yardımcı olabilecek sihirli oyuncaklar hayal edin.

TensorFlow Lite For Microcontrollers (Yazılım)

864114d0c2b4c919.png

TensorFlow, modelleri eğitmek ve çalıştırmak için Google'ın açık kaynaklı makine öğrenimi çerçevesidir. TensorFlow Lite, TensorFlow'un optimize edilmiş bir sürümü olan bir yazılım çerçevesidir. TensorFlow modellerini cep telefonları gibi küçük ve nispeten düşük güçlü cihazlarda çalıştırmak için tasarlanmıştır.

TensorFlow Lite For Microcontrollers, TensorFlow'un optimize edilmiş bir sürümü olan bir yazılım çerçevesidir. TensorFlow modellerini mikro denetleyiciler gibi küçük ve düşük güçlü donanımlarda çalıştırmayı hedefler. Bu yerleştirilmiş ortamlarda gerekli olan kısıtlamalara uyar.Örneğin, küçük bir ikili boyuta sahiptir, işletim sistemi desteği, herhangi bir standart C veya C++ kitaplığı ya da dinamik bellek ayırma 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 kod laboratuvarında kullanılan Arduino Nano 33 BLE gibi fiziksel bir programlanabilir devre kartı (genellikle bir mikro denetleyici).
  2. Arduino IDE (Entegre Geliştirme Ortamı), bilgisayar kodunu fiziksel karta yazmak ve yüklemek için kullanılan yazılım.

Arduino Nano 33 BLE, tek bir devre kartı üzerinde küçük bir bilgisayar olan mikro denetleyici tabanlı bir platformdur. Diğer cihazlara dijital sinyaller gönderip almasını sağlayan bir işlemci, bellek ve G/Ç donanımı vardır. Mikro denetleyiciler, bilgisayarların aksine güçlü değildir ve genellikle işletim sistemi çalıştırmaz. Bunun yerine, küçük işlemcileri, fazla belleği yoktur ve yazdığınız programlar doğrudan donanım üzerinde çalışır. Ancak mümkün olduğunca basit olacak şekilde tasarlandıkları için mikrodenetleyiciler çok az enerji kullanabilir.

Yapacaklarınız

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

Gerekenler

  • Linux, MacOS veya Windows dizüstü bilgisayar
  • Arduino Nano BLE Sense 33 (başlıklar olmadan)
  • Mikro USB kablosu (USB-C bağlantı noktalı bir dizüstü bilgisayar kullanıyorsanız bunun yerine USB-C - mikro USB kablosu edinin.)
  • (isteğe bağlı) Yaklaşık 30 cm uzunluğunda çubuk
  • (isteğe bağlı) Yapışkan bant

2. Arduino mikro denetleyicisini kurma

Arduino'nuzu kutusundan çıkarma

Kutudan çıkarın ve ambalaj köpüğünden çekerek alın. İletkendir ve aksi takdirde sorunlara neden olabilir.

6ed84a651c871a58.jpeg

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

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

c6936696f9659104.jpeg

İş akışını tanıyın

99852afbed7e78b0.png

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

3. Arduino IDE'yi kurma

1. Arduino IDE'yi indirme

Programı Arduino mikro denetleyicisine dağıtmak için Arduino IDE'yi kullanırız.

İndirdikten sonra, simgesi 75717f13527f36b9.png olan uygulamayı tıklayarak Arduino IDE'yi yükleyin ve açın.

İlk açılış sayfası aşağıdaki gibi açılır:

933c91e6e1997c61.png

2. Board Yöneticisi'ni kurma

  1. Arduino menüsünden Tools -> Board: "Arduino .." —> Boards Manager seçeneğini belirleyin.
  2. "Arduino Nano 33 BLE" eklentisini arayın ve Arduino nRF528x Boards (Mbed OS) eklentisini yükleyin. Bu işlem, Arduino Nano 33 BLE mikro denetleyicimizin Arduino IDE tarafından desteklenmesini sağlar. 817c63346152eda9.png
  1. Arduino menüsünden Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE" seçeneğini belirleyin.

9357691e1a1348eb.png

  1. Son olarak, IDE'nin sağ alt kısmında seçtiğiniz kartın "Arduino Nano 33 BLE" olduğunu doğrulayın.

aa08706bb84fa9b2.png

3. Bağlantı noktasını ayarlama

Arduino menüsünden Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) simgesini seçin. Aşağıdakine benzer bir ifade görürsünüz:

8c25990d0c6fb6f8.png

4. Kart Bağlantısını Kontrol Etme

Arduino menüsünden Tools -> Get Board Info simgesini seçin. Aşağıdakine benzer bir ifade görürsünüz:

ccd8f5305be6cf59.png

4. Kitaplıkları yükleme

1. TensorFlow Arduino Kitaplığı

Bu kitaplıkta, bu codelab için gerekli olan sihirli değnek kaynak kodu da dahil olmak üzere tüm TensorFlow Lite for Microcontrollers örnekleri yer alır.

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

2. LSM9DS1 Arduino Kitaplığı

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

  1. Arduino menüsünden Sketch -> Include -> Manage Libraries... seçeneğini belirleyin.
  2. "Arduino_LSM9DS1" uygulamasını arayıp yükleyin. ac2f78a737c5f233.png

5. Örneği yükleme ve oluşturma

1. Örneği yükleyin

Örnek kodu yüklemek için Arduino menüsünden File -> Examples -> Arduino_TensorFlowLite -> magic_wand simgesini seçin.

de349f2d3cb49b98.png

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

cda8c35a597b0798.png

2. Örneği oluşturma

Taslak penceresinde Upload düğmesini tıklayın.

71cb1474d5e14669.png

Birkaç dakika sonra, yükleme işleminin tamamlandığını belirten kırmızı bir metin görürsünüz. Yükleme sırasında sağ LED parlayıp söner ve sonunda kararır.

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şlayarak "W" harfini iki saniye boyunca dikkatlice çizin.
  2. Halka: Dikey olarak başlayın, asayı bir saniye boyunca saat yönünde daire şeklinde hareket ettirin.
  3. Eğim: Değneği LED'leri size bakacak şekilde yukarı doğru tutarak başlayın. Çubuğu eğimli bir şekilde sola doğru, 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 demoda 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 simgesini seçin. Başlangıçta çıktı içermeyen boş bir ekran açılır.

38e8d53652eb28f2.png

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

60b8a0017bcae419.png

  1. Seri monitördeki çıkıştan, sihirli değneğin gerçekten de tüm şekilleri algıladığını görüyoruz. Ayrıca sağdaki LED'in yandığını da fark edeceksiniz.

7. Sonraki Adımlar

Tebrikler, Arduino mikrodenetleyicisinde ilk hareket tanıma özellikli "sihirli değneğinizi" başarıyla oluşturdunuz.

Mikro denetleyiciler için TensorFlow Lite ile geliştirme konusundaki bu kısa girişten keyif aldığınızı umuyoruz. Mikro denetleyicilerde derin öğrenme fikri yeni ve heyecan verici. Bu nedenle, denemeler yapmanızı öneririz.

Referans belgeler

647c3ef0dc103804.png

Teşekkürler, keyifli bir şekilde içerik üretmeye devam etmeniz dileğiyle.