İçeriğe geç
cd ../blog

1,1 KB'lık bir modeli STM32'ye sığdırmak

Rulman arızası tespitinde beş model neredeyse aynı başarıyı verdi. Seçimi doğruluk değil, mikrodenetleyicinin belleği belirledi: 289 parametre, float32'de ~1,1 KB.

2 dk okuma

Hedef

Bitirme projem Predictive-Edge, endüstriyel motorlarda rulman arızasını önceden tespit edip kalan kullanım ömrünü (RUL) kestirmeyi amaçlıyor — ve bunu bulutta değil, motorun yanındaki mikrodenetleyicide yapmayı.

Özellikler fizikten geliyor

Ham titreşimi doğrudan modele vermek yerine fiziğe dayalı özellikler çıkardım. 1 kHz titreşim sinyalinin FFT'si alınıyor; rulmanın dış bilezik arıza frekansı (BPFO, bu kurguda 100 Hz) ve harmonikleri üzerinden harmonik oran, spektral entropi, RMS ve tepe-tepe değer dahil 8 özellik hesaplanıyor. Sıcaklık ve akım da modele katılıyor.

İyi özellikler, küçük bir modelin işini kolaylaştırıyor — gömülü hedefte bu her şey demek.

Beş model, neredeyse aynı skor

Lojistik Regresyon, Random Forest, SVM, Gradient Boosting ve MLP'yi karşılaştırdım. Hepsi F1 ≈ 0,99 civarındaydı. Doğruluk ayırt edici olmayınca seçimi bellek ve çıkarım maliyeti belirledi.

Metodoloji

  • GridSearchCV ve 5 katlı çapraz doğrulama.
  • Ölçekleyici Pipeline içinde — böylece doğrulama katlarına eğitim verisinden bilgi sızmıyor.
  • MLP'de (32, 16) ile (16, 8) arasındaki fark standart sapmanın altında kaldı; 3 kat küçük olan (16, 8) seçildi.

Sayılar

ÖlçüDeğer
Parametre289
Model boyutu (float32)~1,1 KB
int8 nicemlemeyle289 B
HedefSTM32H7 (2 MB Flash)

Bir de izleme tarafı var: Flask REST API ve Chart.js ile 200 motorluk bir filonun sağlık durumu ve kalan ömrü tek panelde.

Dürüst sınırlılık

Veri seti, fiziksel arıza modeline dayalı sentetik veri. Modelin gerçek STM32 kartında çalıştırılması ve gerçek sensör verisiyle doğrulanması devam ediyor. 0,99'luk F1'i bu bağlamla birlikte okumak gerekiyor.