ATtiny Makine Öğrenimi

Diğer mikroişlemcilerde makine öğrenimi yapabileceğimiz gördük, bu konu hakkındaki yazımıza buradan bakabilirsiniz. Şimdi boyutları biraz daha küçültüyoruz ve ATtiny85 mikroişlemcisinde makine öğrenimi yapıyoruz!

attiny85
ATtiny85

Kullanıma hazır çok sayıda mikrodenetleyici göz önüne alındığında, yeni bir ölçekte gömülü bir makine öğrenimine giden yolu zaten microML açtı. Ama bu bizim için yeterli değildi: sonuçta MicroML oluşturucu, yalnızca Arduino kartlarında değil, herhangi bir gömülü sistemde çalışması gereken düz C’yi dışa aktarır.

Bu yüzden mikroişlemcimizi daha da küçülüp 1 numaralı küçük yonga üzerinde çalıştırıp çalıştıramayacağımı test etmek için Attiny85 için kurulum yaptık.

ATtiny85 kütüphanelerini ve derleyicisini, daha önce Arduino IDE’ye kurmuştuk, tekrar kurulum için bu bağlantıyı takip edebilirsiniz. Bu kurulumu yaptıktan sonra her hangi bir makine öğrenimi uygulamasını doğrudan ATtiny85 ile yapamayız. Bu yüzden farklı bir yol izlememiz gerekiyor. Bu içerik aslında Arduino Nano ile yaptığımız renk algılama projesinin ATtiny85’e uyarlanmış bir halidir, bu yüzden öncelikle o içeriği okumanızı öneriyoruz.

Özelliklerin Tanımı

Hangi nesneye işaret ettiğimizi anlamak için bir renk sensörünün(TCS3200) RGB bileşenlerini kullanacağız. Bu, özelliklerimizin 3 boyutlu olacağı anlamına gelir ve bu da çok yüksek doğrulukla gerçekten basit bir modele yol açar.

Hatırlatma

Attiny85, 8 Kb flash ve 512 bayt RAM’e sahiptir, bu nedenle birkaç özellikten fazlasını (muhtemelen 10’dan az) kullanan herhangi bir modeli yükleyemezsiniz.

Örnek Verileri Kaydetmek

Bu adımı Arduino Uno / Nano / Pro Mini gibi seri arayüze sahip bir geliştirme kartında ya da mikroişlemcide yapmalısınız. Bu adımın kodu için bu öğreticiye bakın.

SVM Sınıflandırıcısını Eğitip, Dışa Aktarmak

Bu bölüm, tek bir parametre dışında orijinaliyle tamamen aynıdır: platform=attiny’yi port işlevine geçireceksiniz.

from sklearn.svm import SVC
from micromlgen import port

# örneklerinizi veri kümesi klasörüne yerleştirin
# dosya başına bir sınıf
# CSV formatında satır başına bir özellik vektörü

features, classmap = load_features('dataset/')
X, y = features[:, :-1], features[:, -1]
classifier = SVC(kernel='linear').fit(X, y)
c_code = port(classifier, classmap=classmap, platform='attiny')
print(c_code)

ATtiny kodları, micromlgen’in 0.8 sürümünde uygulanmıştır: daha önceki bir sürümü yüklediyseniz, öncelikle güncelleme yapın.

Bu noktada, yazdırılan kodu kopyalamanız ve projenize model.h adlı bir dosyaya aktarmanız gerekir.

Çıkarımı Çalıştırmak

Bir seri bağlatısı olmadığından, tahmin sonucuna bağlı olarak bir LED’i birkaç kez yanıp söndüreceğiz.

Sensörün önüne renkli bir nesne koyun ve LED’in yanıp söndüğünü görün.

ATtiny programı 3434 bayt (% 41) program alanı ve 21 bayt (% 4) RAM gerektirir. Bu, makine öğrenimini Attiny85’in sağladığından daha az alanda çalıştırabileceğiniz anlamına gelir.

Özellikle bu model o kadar küçük ki, sadece 4 Kb flash ve 256 bayt RAM’e sahip bir Attiny45’te bile çalışabilirsiniz.

Bir an için RAM rakamına bakmın: 21 bayt. 21 bayt, bir mikrodenetleyicide bir Makine öğrenme algoritması çalıştırmak için ihtiyacınız olan tüm bellektir. Bu, seçtiğimiz uygulamanın sonucudur: mümkün olan en az RAM yükü.

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.