Bu içeriğimizde mikroişlemciler için makine öğrenimini inceliyoruz. Birçok yabancı forumda ve geliştirici platformunda Arduino ve makine öğrenimi hakkında yüzlerce başlık bulunuyor. Bir kesim, Arduino’nun kaynaklarının makine öğrenimi için yetersiz olduğunu savunuyor. Başka bir kesim ise Multi Layer Perceptron gibi yaklaşımların uygun ölçekle Arduino kartlarında kullanılabileceğini belirtiyor. Ayrıca mikroişlemciler için geliştirilen TensorFlow Lite Micro hakkında da güçlü görüşler mevcut.

Öncelikle yaygın bir karışıklığı gidermek için önemli bir noktayı netleştirelim:
Yapay zeka ≠ Makine öğrenimi ≠ Sinir ağları
Bu üç kavramı aynı şey zanneden kullanıcılar, mikroişlemcilerdeki ML kapasitesini yanlış yorumlayabiliyor. Arduino kartlarında, daha düşük kaynaklı modellerde bile (ör. ATmega128, ATtiny serisi, ATmega8) sınıflandırma ve regresyon görevleri çalıştırılabilir; kritik nokta, her durumda sinir ağına mecbur olmadığını bilmektir.
MicroML Oluşturucu Nedir?
Donanım olarak kısıtlı, eski veya düşük kaynaklı sistemlerde makine öğrenimi mi çalıştırmak istiyorsunuz? MicroML bu noktada pratik bir çözüm sunuyor.
MicroML, makine öğrenimi algoritmalarını mikrodenetleyicilere taşımayı hedefleyen bir projedir. Mikrodenetleyiciler için TensorFlow yaklaşımına alternatif bir yol sunar; burada 8 bitlik mikrodenetleyicilerde bile çalışabilecek daha yalın modeller üretmek mümkündür.
Mevcut durumda, Destek Vektör Makinelerini, seçtiğiniz herhangi bir MCU’da kullanabileceğiniz optimize edilmiş C koduna dönüştürebilir: Arduino (Uno, Nano, Micro…), ESP8266, ESP32 ve gerçekten C destekli herhangi bir MCU.
Neden Destek Vektör Makineleri? Çünkü çok boyutlu özellikleri sınıflandırmada gerçekten iyiler ve RAM kısıtlı ortamlar için optimize edilmeleri oldukça kolaydır. Buradan Arduino ile Makine Öğrenimi ile Hareket Tanımlama yazımıza bakabilirsiniz.
Sınıflandırıcı(Classifier) Oluşturmak
Her şeyden önce, bir sınıflandırıcı eğitmeniz gerekir. Python’un scikit-learn kütüphanesini kullanmalısınız – ki bu, yaygın olarak benimsendiğini göz önünde bulundurarak muhtemelen zaten kullanmaktasınız. Ardından MicroML paketini yüklemeniz gerekir.
Son olarak, optimize edilmiş C koduna, eğitilmiş sınıflandırıcı eklemiş olduk.
Gamma değerini belirli bir değere ayarlamanız gerekir. Aksi halde varsayılan olarak gelen auto bir hataya sebep olacaktır.
Hazırlığımız bu kadar, Arduino projelerinizde sınıflandırma yapmak için ihtiyacınız olan her şeye sahipsiniz.
MicroML Alternatifleri
- sklearn-porter (diğerleri arasında) C kodu verebilir, ancak mikrodenetleyiciler için optimize edilmemiştir. Bellekteki tüm destek vektörlerini bildirmesi gerektiğinden RAM’de bir duvara toslayacaksınız (bir fikir sahibi olmak için, meme kanseri veri kümesi 57×30’luk bir çift matris üretir, yalnızca destek vektörleri için toplam 6840 bayt).
- emlearn mikrodenetleyiciler için optimize edilmiştir, Karar Ağacı(Decision Tree), Random Forest, Naive Gaussian Bayes, Tam Bağlantılı Sinir Ağları yapabilir. Yine de SVM yoktur.
Mikroişlemciler için Makine Öğrenimi – Arduino Uygulaması
Projenizde tahminleri çalıştırmak için çağırmanız gereken iki yöntem vardır:
- : gerçek tahmini çalıştırır ve tahmin edilen sınıfı temsil eden bir sayı döndürür
- : dosyalarınızdan oluşturulan sınıf haritasına dayalı olarak sınıf dizinini okunabilir bir dizeye dönüştürür
Mikroişlemcilerde makine öğrenimini kullanıma sokmak için uygulamalı projeler hakkında bir seriye başlıyoruz, devamlılık ve yazı takibi bu konuda oldukça önemli, bir sonraki yazıları ve projeleri okumayı unutmayın.
Hangi Modeli Ne Zaman Seçmeli?
- RAM/flash çok kısıtlıysa önce doğrusal modeller veya küçük SVM denemeleriyle başlayın.
- Veri boyutu büyüdükçe, çıkarım süresini ve bellek kullanımını birlikte ölçün.
- Model seçimini sadece doğruluğa göre değil, güç tüketimi ve gecikme kriterlerine göre de yapın.
Gömülü ML tasarımında performans/karmaşıklık dengesi için scikit-learn supervised learning karşılaştırmaları yararlı bir referanstır.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.

