TinyML Sınıflandırma: Wine Veri Kümesi

TinyML Sınıflandırma: Wine Veri Kümesi

Bu gönderi, sınıflandırma görevi için Arduino uyumlu bir mikrodenetleyici üzerinde TensorFlow tabanlı bir sinir ağının nasıl eğitileceğini, dışa aktarılacağını ve çalıştırılacağını adım adım anlatır. Örnek uygulamada Wine veri setini sınıflandırıyoruz.

TinyML Sınıflandırma: Wine Veri Kümesi tinyml,wine veri kümesi,tensorflow,arduino,makine öğrenimi

TinyML ve mikrodenetleyiciler için TensorFlow tarafına yeni giren birçok kişi, sınıflandırma görevlerinde sinir ağı kurma ve bunu gömülü ortama taşıma aşamasında zorlanabiliyor. Bu yazı, o boşluğu doldurmak için pratik bir başlangıç rehberi olarak hazırlanmıştır.

İçerikte şu adımları ele alıyoruz:

  1. Python tarafında Wine veri kümesi için TensorFlow sinir ağı eğitimi
  2. Eğitilen modeli Arduino uyumlu C++ koduna aktarma
  3. Modeli mikrodenetleyici üzerinde çalıştırma

Bu akış, yalnızca Wine veri seti için değil, benzer yapıdaki pek çok sınıflandırma problemi için de örnek alınabilir. Veri kümesi ve model mimarisi değişse bile genel çalışma mantığı büyük ölçüde aynı kalır.

Yazı İçeriği

Python’da Sinir Ağı Eğitmek

İlk aşamada TensorFlow kullanarak Python tarafında bir sinir ağı oluşturup eğitmemiz gerekir. Bu örnekte, kullanımı yaygın ve öğrenmesi daha kolay olduğu için Keras API tercih ediliyor.

Bu yapılandırmada yaklaşık %89 doğruluk elde edilmiştir. Elbette sonuçlar veri kümesinin temizliğine, katman sayısına, aktivasyon fonksiyonlarına ve eğitim parametrelerine göre değişebilir.

C++’a Aktarım

Eğitilen modeli C veri dizisine dönüştürmek için tinymlgen paketini kullanıyoruz.

Bu işlem sonucunda aşağıdakine benzer bir çıktı elde edilir:

Bu metni kopyalayarak Arduino projenizde wine_model.h adlı bir başlık dosyasına ekleyebilirsiniz.

Sinir Ağını Mikrodenetleyicide Çalıştırmak

Mikrodenetleyici tarafında modeli kolayca kullanmak için EloquentTinyML kütüphanesi kullanılabilir. Bu kütüphane Arduino IDE’nin kütüphane yöneticisinden kolayca yüklenebilir.

Kodu derleyip karta yükledikten sonra seri monitörde tahmin edilen sınıfları gözlemleyebilirsiniz. Böylece eğitim aşamasında elde ettiğiniz modelin gömülü tarafta gerçekten çalışıp çalışmadığını kolayca kontrol etmiş olursunuz.

Makine Öğrenimi Projelerinde Hangi Noktalara Dikkat Edilmeli?

Bir modeli masaüstünde eğitmek ile mikrodenetleyicide kararlı şekilde çalıştırmak aynı şey değildir. Özellikle bellek kısıtı, kayan nokta işlemleri ve giriş verisinin ölçeklendirilmesi makine öğrenimi projelerinde doğrudan sonucu etkiler. Masaüstünde iyi çalışan bir model, veri ön işleme adımları eksik bırakılırsa gömülü tarafta beklenenden daha düşük doğruluk verebilir.

  • Ön işleme tutarlılığı: Eğitimde kullanılan normalizasyon veya standardizasyon, kart tarafında da aynı biçimde uygulanmalıdır.
  • Model boyutu: Katman sayısı ve nöron miktarı arttıkça RAM ve flash kullanımı hızla yükselir.
  • Test verisiyle doğrulama: Seri monitörde yalnızca birkaç örnek değil, farklı sınıflardan çok sayıda veri denenmelidir.
  • Kütüphane sürümleri: TensorFlow, Arduino tarafındaki kütüphaneler arasındaki sürüm farkları bazen çıktı formatını etkileyebilir.

Daha verimli modeller üretmek için daha küçük ağ yapıları, kuantizasyon veya klasik makine öğrenmesi tabanlı alternatifler de değerlendirilebilir. TensorFlow iş akışının genel mantığını görmek için TensorFlow Lite for Microcontrollers belgeleri iyi bir teknik kaynaktır.

Diğer makine öğrenimi içeriklerimize buradan erişebilirsiniz.

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.