STM32 ve ISPU Sensörler için Uçta Yapay Zekâ

Uçta yapay zeka, yapay zekanın gücünü, bulut tabanlı teknolojilere gerek kalmadan, doğrudan küçük cihazlara getirmeyi amaçlar. Verilerin merkezi sunucularda değil, verinin üretildiği ve kararların alınması gereken uç noktalarda işlenmesini ve gerçek zamanlı olarak aksiyon alınmasını hedefler. Bu yaklaşım, verilerin daha hızlı, daha güvenli ve hem maliyet hem de enerji açısından daha verimli şekilde işlenmesini sağlar.

Bulutta Yapay Zeka ve Uçta Yapay Zekanın Farklılıkları

NanoEdge AI Studio

Uçta yapay zeka uygulamaları geliştirmek, birçok kullanıcı için uzun ve zorlu bir süreç olabiliyor. Veri toplama, işleme, model eğitme, optimize etme ve uç cihazda koşturma gibi adımlar, yeterli tecrübesi olmayan kullanıcılar için göz korkutucu olduğundan dolayı, süreçten vazgeçen oldukça fazla kullanıcı mevcut. İşte tam bu noktada NanoEdge AI Studio devreye giriyor.

NanoEdge AI Studio

ST tarafından sunulan bu ücretsiz Auto-ML uygulaması, kullanıcıların, minimum yapay zeka bilgisiyle, ARM tabanlı MCU’larda (Mikrodenetleyici) ve ISPU’larda (Intelligent Sensor Processing Unit, Akıllı Sensör İşleme Birimi) koşturulabilecek makine öğrenmesi modellerinin otomatik olarak oluşturmasını sağlıyor.

NanoEdge AI Studio ile Uçta Yapay Zeka Uygulamaları Geliştirme Adımları

Veri Toplama

1. Sampling Rate (Örnekleme Aralığı)

Örnekleme aralığı, kullanılan sensörün ne kadar arayla okuma yapacağını belirler.

Çok büyük boşluklarla örneklenmiş bir sinyal, undersampling (yetersiz örnekleme) durumuna yol açarak sinyalin karakteristiğinin kaybolmasına, dolayısıyla da model tahmin doğruluğunun düşmesine neden oluyor.

Yetersiz Örneklenmiş (Undersampled) Sinyal Örneği

Öte yandan, örnekleme için çok kısa bir aralık seçilmesi (oversampling, aşırı örnekleme) ise modelin gereğinden fazla çarpma ve toplama işlemi yapmasından dolayı tahminleme süresinde artışa neden oluyor.

Aşırı Örneklenmiş (Oversampled) Sinyal Örneği

Çözüm: Sinyalin karakteristiğinin kaybolmayacağı kadar küçük bir örnekleme aralığı değeri seçilerek, optimum performans elde edilebilir.

Optimum Değer Kullanılarak Örneklenmiş Sinyal Örneği

2. Sampling Size (Örnekleme Uzunluğu)

Örnekleme uzunluğu, modelin girişinin ne kadar büyük bir veri kümesi kapsayacağını belirler.

Çok kısa bir örnekleme uzunluğu, modelin sınıflandırmasında kararsızlığa yol açabilir.

Çok Kısa Seçilmiş Bir Örnekleme Uzunluğunun Sinyal Üzerinde Gösterimi

Gereğinden daha büyük seçilmiş bir uzunluk ise, yine modelin gereğinden fazla çarpma ve toplama işlemi yapmasına neden olur ve bu da tahminleme süresini artırır.

Çok Uzun Seçilmiş Bir Örnekleme Uzunluğunun Sinyal Üzerinde Gösterimi

Çözüm: İdeal örnekleme uzunluğu, bir sinyalin tekrara döngüye girdiği aralığı kapsayacak şekilde seçilmelidir.

Uygun Seçilmiş Bir Örnekleme Uzunluğunun Sinyal Üzerinde Gösterimi

Peki, kullanıcılar bu değerleri nasıl belirlemeli?

NanoEdge AI Studio’nun Veri Araçları

NanoEdge AI Studio, kullanıcılara veri toplama ve işleme süreçlerinde yardımcı olan üç önemli araç sunuyor:

1. Sampling Finder (Örnekleme Değeri Bulucu):

Uygun örnekleme sıklığı ve uzunluğunu tespit etmeye yarayan bu araç, farklı Sampling Rate ve Sampling Size kombinasyonların ayrıştırılmasındaki başarı oranlarını hesaplayarak kullanıcıya en uygun seçenekleri önerir.

2. Data Logger (Veri Kaydedici):

Önceden tanımlanmış sensör kartlarından, istenilen sensör kombinasyonları ve sensör parametreleri ile veri toplanmasını sağlayan bu araç, kullanıcılara doğrudan karta gömülebilir bir binary dosyası sunarak, veri toplama sürecini kolaylaştırır.

3. Data Manipulation (Veri Düzenleyici):

Satır silme, sütun silme, satır karıştırma ve örnekleme uzunluğu değiştirme gibi temel veri işleme fonksiyonlarını ile verilerin NanoEdge AI Studio’ya uygun hale getirilmesini kolaylaştıran bir araçtır.

NanoEdge AI Studio’nun Uygulama Tipleri

NanoEdge AI Studio, çeşitli görevlerde kullanılabilecek yapay zeka uygulamaları geliştirmeye olanak tanır:

1. 1-Class Classification (Tek Sınıflı Sınıflandırma)

Bu model tipi, verilen sinyal örneğinin, eğitimde kullanılmış “normal” değerlere ne kadar benzediğini tahmin ederek anomali tespiti yapar.

Tek Sınıflı Sınıflandırma Algoritmasının Temsili Görseli

2. Anomaly Detection (Anomali Tespiti)

1-Class Classification’daki gibi, verilen sinyal örneğinin, eğitim verilerine benzerliğini skorlayarak anomali tespiti yapar.

Anomali Tespiti Algoritmasının Temsili Görseli [4]

3. n-Class Classification (n Sınıflı Sınıflandırma)

Giriş sinyalini önceden tanımlanmış “n” adet sınıftan birine yerleştirir.

n Sınıflı Sınıflandırma Algoritmasının Temsili Görseli

4. Extrapolation (Ekstrapolasyon)

Sınıflandırma modellerinden farklı olarak, giriş sinyaline bakarak regresyon yöntemiyle bir değer tahminini yapar.

Ekstrapolasyon Algoritmasının Temsili Görseli

Örnek Bir Problem İçin Çözüm Geliştirme Adımları

Veriyi nasıl toplayacağımızı, toplarken nelere dikkat etmemiz gerektiğini ve model tiplerini teorik olarak öğrendiğimize göre, örnek bir problem üzerinden NanoEdge AI Studio ile bir uçta yapay zeka çözümü geliştirebiliriz.

1. Problemin Tanımı

“Bir akıllı saatin ya da bilekliğin içerisindeki sensörleri kullanarak, kullanıcıların el hareketlerini 5 adet sınıftan birine yerleştirmek istiyorum.”

Dairesel, Yatay, Durgun, Üçgensel ve Dikey Hareket Sınıflarının Temsili Görseli

2. Veri Toplama Parametrelerinin Seçilmesi

Kullanıcıların, görseldeki veri sınıflarındaki bir harekete başlayıp hareketi bitirene kadar ortalama 1 saniye geçtiğini tahmin ediyoruz. Dolayısıyla, modele girecek her bir sinyalin 1 saniyelik bir zaman aralığını kapsamasını istiyoruz.

Sampling Rate: Tahmin edilecek hareketlerin frekanslarının çok yüksek olmadığını biliyoruz, bundan dolayı örnekleme aralığının çok kısa seçilmesine gerek olmadığını öngörebiliriz. Örnekleme aralığını 8 ms seçersek, ya da bir diğer deyişle, saniyede 125 sensör okuması yaparsak, 125 Hz’lik bir Sampling Rate seçmiş oluruz. Bu uygulama için sinyallerin örneklenmesinde bir veri kaybı yaratmayacağını düşünebiliriz. Eğer model hassasiyetinde bir sorun olduğunu görürsek, geriye dönüp bu değeri yükselterek yeni bir deneme yapılabiliriz.

Sampling Size: Modele girecek her bir sinyalin 1 saniyelik bir zaman aralığını kapsamasını istemiştik. Sampling Rate değerini de 125 Hz (her sensör okuması arasında 8 ms) şeklinde seçtiğimize göre, 128* adet sensör okumasını grupladığımızda, 128 x 8 = 1024 ms’lik bir değer elde etmiş oluruz. Yani, modele giren her bir sinyal, 1024 ms’lik (yaklaşık 1 saniyelik) bir zamanı kapsamış olur.

*Seçtiğimiz 128 değeri, NanoEdge AI Studio’nun veri analizi sayfasındaki öneriden dolayı 2’nin bir tam sayı üssü olarak seçilmiştir.

Not: Eğer uygun Sampling Rate ve Sampling Size değerlerini öngöremeyeceğimiz bir uygulama üzerinde çalışıyorsak, NanoEdge AI Studio’nun “Sampling Finder” aracını kullanabiliriz. Toplanmış “Continuous” (Sürekli, Sampling Rate maksimum değer seçilerek toplanmış) sinyalleri bu araca yüklediğimizde, uygulama bize en uygun Sampling Rate ve Sampling Size değerleriyle modellerin hangi kolaylıkta işlem yapacağını gösteren bir tablo çıktısı verir.

3. Veri Toplama Kartının Oluşturulması

Uygun Sampling Rate ve Sampling Size değerlerini seçtiğimize göre, veri toplama adımına geçebiliriz. Uygun parametrelerle oluşturulmuş bir veri toplama kartı ile verileri toplamak için, NanoEdge AI Studio’nun Data Logger aracını kullanarak süreci hızlandırmamız mümkün.

Data Logger Aracındaki Veri Toplama Kartı Örneği

Örnek Veri Toplama Parametreleri

Bu adımları başarıyla tamamladıysak, bilgisayarın COM port’una istediğimiz konfigürasyonlarla veri basan bir veri toplama kartını elde etmiş oluyoruz.

Not: Biz bu uygulamada 3 eksenli Accelerometer (ivmeölçer) ve 3 eksenli Gyroscope (jiroskop) ile her veri okumasında 6 eksenlik bir veri kaydeden bir Data Logger kodunu karta gömdük.

4. Veri Toplama

Veri toplama kartını da oluşturduğumuza göre, tahmin etmek istediğimiz 5 sınıfın her biri için ayrı dosyalar içinde veri toplamaya başlayabiliriz. Fakat veri toplama kısmında düşünmemiz gereken birkaç şey var:

Bunları göz önünde bulundurarak, farklı kişilerden, sağ ve sol elde, farklı açılarda, saat yönüne ve saat yönünün tersine hareket şeklinde her sınıf için çeşitli kombinasyonlarda veriler topladık. Her bir sınıf için topladığımız verileri de ayrı CSV dosyası içinde sakladık. Tüm bu işlemler sonunda elimizde her sınıfa ait 1 adet CSV dosyası elde etmiş olduk.

5. Modelin Eğitilmesi

NanoEdge AI Studio’nun sunduğu 4 model tipinden, geliştirdiğimiz uygulamada istediğimiz işlemi yapmaya uygun olan model tipini, n-Class Classification’ı seçelim.

NanoEdge AI Studio Model Tipleri

Açılan ekranda:

seçeneklerini uygulamamızın ihtiyaçlarına göre seçelim.

Not: Eğer veri toplama kartında kullanılan sensör konfigürasyonu seneçekler arasında yoksa, ya da birden fazla sensörün aynı anda veri topladığı bir konfigürasyon yapıldıysa, “Sensor” kısmında “Generic” seçeneği seçilmelidir. Axes (eksen) sayısı ise her bir sensör okumasının kaç eksenli olduğunun sayısını ifade etmektedir.

Uygulama Konfigürasyon Ekranı

Uygun konfigürasyon yapıldıktan sonra, sonraki “Signals” adımına geçebiliriz. Bu adımda halihazırda toplanmış veriler “From File” seçeneği ile içeri aktarılabilir, ya da “From Serial (USB)” seçeneği ile toplanmaya başlanabilir.

Eğer içeri aktarılmış ya da toplanmış verilerde, modelin işleyemeyeceği satır veya sütunlar var ise, bu pencerede kırmızı renkle işaretlenir. Kullanıcılar işaretli satır veya sütunları silmeden verileri yükleyemezler. Kırmızı ile işaretlenen satır veya sütunlar aşağıdaki hatalardan birini barındırıyor olabilir:

Veri İçeri Aktarma Penceresi

Veri içeri aktarma penceresinde 768 adet sütun olduğunu görebiliriz. Bu şu anlama geliyor:

Import (içeri aktar) tuşu ile veri içeri aktarma işlemini başarıyla tamamladıktan sonra, ekranın sağ kısmında çeşitli veri analizlerini ve verinin yanlış toplanmış olup olmadığını belirten ve veri toplama önerileri gösteren kısımları görebiliriz. Bu kısımlarda da bir problem görmüyorsak Benchmark (Model Eğitimi) adımına geçebiliriz.

6. Model Eğitimi

Benchmark sekmesinde, “Run New Benchmark” seçeneğine tıkladığımızda, hangi sinyal dosyalarını model eğitiminde kullanmak istediğimizi ve model eğitimi için kaç CPU çekirdeğinin kullanılacağını seçebiliriz. Bu kısımda seçilen her bir sinyal dosyası, model eğitiminde farklı bir sınıf olarak değerlendirilir. Start butonuna tıkladığımızda model eğitimi başlar.

Model Eğitim Ekranı

Model eğitim ekranında, modelin tahmin doğrulunu ile RAM ve Flash boyutlarını gösteren 3 bölme, ve bu değerleri kullanarak oluşturulmuş Score değeri görülebilir.

NanoEdge AI Studio’nun yaklaşık 5 dakikalık bir eğitim sonucunda 1001 adet ön işleme — model — parametre kombinasyonunu deneyerek %92.45’lik bir model skoru elde ettiğini görebiliriz. Amacımız basit bir demo yapmak olduğu için, burada eğitimi duraklatarak Validation (doğrulama) adımına geçebiliriz. Model performansını yeterli bulmadığımızda geri dönerek eğitimi kaldığı yerden devam ettirebiliriz.

7. Doğrulama ve Model Simülasyonu

Bu sekmede, eğitilen modeller arasından en iyi skora sahip olan modellerin bir listesini görebiliriz. Bu listede:

Listeden, tercih ettiğimiz modeli seçerek model kütüphanesi derleme adımına geçebiliriz. Fakat bunun öncesinde, model performansının bir simülasyonunu yapabileceğimiz “Serial Emulator” seçeneğini seçelim ve NanoEdge AI Studio’nun ürettiği modeli deneyelim.

Emülatör Penceresi

Soldaki kısımdan konfigürasyonu tamamladıktan sonra Start butonuna bastığımızda, NanoEdge AI Studio bilgisayarımızın COM port’una veri toplama kartı ile gönderilen sinyalleri okur, bu sinyalleri modelden geçirir ve sınıflandırma işlemini canlı olarak gösterir. Bu pencerede istenen performansın alındığını düşünüyorsak model seçimini onaylayarak Deployment (modelin karta atılması) sekmesine geçebiliriz.

8. Model Kütüphane Dosyalarının Oluşturulması

Deployment sekmesinde, ekranın solunda derleme seçeneklerinin yapılandırılmasını ve modelin derlenmiş kütüphanesinin indirilmesini sağlayan butonlar bulunur. Ekranın sağında ise seçilen uygulama tipi için oluşturulmuş örnek bir C kodu bulunur. Uygulamamızda kullanılacak modeli belirlediğimize göre, modelin kütüphane dosyalarını derleyerek bilgisayarımıza kaydedebiliriz.

9. Makine Öğrenmesi Modelinin Uç Birimde Koşturulması

Uçta Yapay Zekanın Temsili Görseli

NanoEdge AI Studio ile modeli oluşturduktan sonra, sıra geldi bu modeli uç birimde koşturmaya. Bu adımı detaylı olarak ele alacağımız bir sonraki yazıda:

Sonuç

NanoEdge AI Studio, uçta yapay zeka uygulamalarında veri toplama ve uçta çalıştırma adımlarını kolaylaştırarak hızlandırırken, model eğitim adımını tamamen otonom bir şekilde tamamlayarak kullanıcının zamandan kar etmesini sağlıyor. Veri toplama aşamasından model eğitimine, doğrulamadan dağıtıma kadar tüm adımları kapsayan bu güçlü araç, minimum yapay zeka bilgisiyle bile oldukça etkili makine öğrenmesi modelleri oluşturmamıza olanak tanıyor. Özellikle sensör tabanlı uygulamalarda hızlı ve başarılı sonuçlar elde etmemizi sağlayan NanoEdge AI Studio, uçta yapay zeka dünyasının kapılarını aralamak isteyen tüm geliştiriciler için mükemmel bir başlangıç noktası sunuyor.

Bir sonraki yazımızda, oluşturduğumuz modeli uç birimde nasıl hayata geçireceğimizi adım adım inceleyeceğiz. Bu sayede, NanoEdge AI Studio ile geliştirdiğiniz makine öğrenmesi modellerini gerçek dünya uygulamalarında kullanmaya bir adım daha yaklaşmış olacaksınız.

Kaynaklar

[1] IBM. What is Edge AI? https://www.ibm.com/topics/edge-ai

[2] STMicroelectronics. NanoEdge AI Studio Documentation. https://wiki.st.com/stm32mcu/wiki/AI:NanoEdge_AI_Studio

[3] CSEM. Edge AI and Vision. https://www.csem.ch/en/technical-focus/iot-and-vision/edge-ai-and-vision/

[4] Anodot. What is anomaly detection? https://www.anodot.com/blog/what-is-anomaly-detection/

[5] MIMIT, (2023, Temmuz). MIMIT, Urso autorizza accordo per l’innovazione con STMicroelectronics. https://www.mimit.gov.it/it/notizie-stampa/mimit-urso-autorizza-accordo-per-linnovazione-con-stmicroelectronics

YAZAR:

  Berkay Şık