← Tüm projeler

NABIZ

Makinenin sesinden arıza yakalayan, kalan ömrü SQL ile üretilmiş özniteliklerden tahmin eden ve tespiti merkeze yazan bir hat. Ölçüm gerçek MIMII ve NASA C-MAPSS üzerinde. Havuzlanmış model görülmemiş ünitede çöktü; etiketsiz ünite uyarlaması bunu kapattı.

Dönem
Eylül 2026
Alan
Yapay Zekâ / ML, Savunma & Sistem
Rol
Tek kişilik proje: tasarım, kod, test, değerlendirme
Teknoloji
Python, PyTorch, scikit-learn, PostgreSQL, ONNX, ONNX Runtime C++, MQTT, Protobuf, FastAPI
Kod
github.com/l4NGEL/nabiz
0,65görülmemiş ünitede dosya recall, 0 yanlış olay
11,37C-MAPSS RMSE; taban 41,94
4,5·10⁻⁶C++ ile Python arasındaki maks. fark (FP32)

Veri

Akustik taraf gerçek MIMII: fan ve pompa, 6 dB ve 0 dB, 19.510 dosya, 175.590 pencere. Ham ses 2 saniyelik pencerelere bölünüyor; her pencereden 168 öznitelik ve bir log-mel tensörü çıkıyor. Üç bölme var: eğitim, görülmemiş ünite, görülmemiş SNR. Her çalıştırmada sızıntı kontrolü ve bir parmak izi.

Kalan ömür NASA C-MAPSS FD001. PostgreSQL’de 265.256 ölçüm satırı, sekiz kaynak dosya. 14 sensörden SQL pencere fonksiyonlarıyla 85 öznitelik: 10 ve 30 çevrimlik ortalama, eğim, varyans, sapma. SQL ile bağımsız pandas arasındaki en büyük göreli fark 4,0e-08. Bölme motor bazında: 79 eğitim, 21 doğrulama, resmi testte 100 motor.

Ne bulundu

Yedi model ailesi aynı çerçevede koştu. Görülmemiş ünite, görülmemiş SNR’den sistematik olarak zordu. Havuzlanmış modelin birim dışı AUC’si yaklaşık 0,40’a düştü. Bunun eğitim eksikliği olmadığını 8 epoch ile 120 epoch’un aynı yere inmesi gösterdi.

Yol üstünde sentetik telemetri etiket sızıntısı çıktı: FusionAE’nin AUC’si 1,000 görünüyordu. Sızıntı kapatılınca sayı düştü. Telemetri kanalı AUC yaklaşık 0,50; sinyal taşımıyor, füzyona katılmıyor.

Etiketsiz ünite uyarlaması (medyan ve MAD) akustik makro AUC’yi görülmemiş ünitede 0,913’e, SNR kaymasında 0,920’ye taşıdı. Pencere eşiği, günde en fazla bir yanlış alarm bütçesini tutmadı. Karar dosya düzeyine alındı. Ürün skoru tip başına PCA artığı, 70 bileşen. Seçim yalnız doğrulamada yapıldı.

Kabul Dosya recall Yanlış olay Dosya AUC
Görülmemiş ünite 0,654 0 / 11,4 saat 0,927
SNR kayması 0,787 0 / 21,7 saat 0,933

70 bileşen, iki testte de 0 yanlış olay bırakan en yüksek tespitti. 72 ve 80 doğrulamada biraz daha yüksek recall verdi; SNR testinde 21,7 saatte bir yanlış olay üretti, elendi.

Kalibrasyon her yerde işe yaramadı. Rejim kaymasında ECE 0,060’dan 0,094’e çıktı: kalibratör kaynak doğrulamasına uydurulmuştu, test başka domaindi.

Kalan ömür

Model seçimi yalnız doğrulama motorlarında. Resmi FD001 testine bir kez bakıldı; sonuca göre ayar değişmedi.

RMSE C-MAPSS skoru
Train ortalaması 41,94 33.354
Seçilen model, SQL öznitelikleri 11,37 196

Etiketler karıştırılınca test RMSE 41,21’e düşüyor, yani tabana. Yalnız çevrim numarasıyla 31,22. Kazanç sensör özniteliklerinden geliyor.

Risk sırası ile gerçek kalan ömür arasındaki Spearman 0,907. Gerçek kalan ömrü 30 çevrim ve altı olan 25 motorun hepsi kritik veya yüksek işaretlendi. En riskli 10 tahminin 10’u da gerçekten kritikti. C-MAPSS simüle motordur, filo verisi değil. Yalnız FD001 modellendi; çoklu çalışma koşulu olan FD002 ve FD004 yapılmadı.

Uç ve merkez

DenseAE ONNX’e aktarıldı ve C++ ile ONNX Runtime üzerinden çalışıyor. Aynı dosya, aynı girdi:

Hassasiyet Maks. fark Korelasyon
FP32 4,5·10⁻⁶ 1,000000
INT8 ~0,05 1,000000

INT8 farkı, Python wheel’i ile C++ SDK’nın nicemlenmiş çekirdekleri arasındaki sayısal fark. Sıralama bozulmuyor. C++ gecikmesi P50 yaklaşık 0,02 ms. x86 CPU’da FP32 P95, DenseAE için 0,16 ms; kabul çizgisi 150 ms idi.

Tespitler Protobuf ile paketlenip MQTT’ye gidiyor. Broker yoksa mesaj yerel tampona düşüyor. Bu makinede broker kapalıyken 12 mesajın 12’si tampona yazıldı. Toplayıcı ayrıca açılınca 12 tespitin 12’si de HTTP ile geldi; istatistik üç makine için doğru ortalama ve maksimum skoru döndürdü.

Toplayıcı tek sayfalık bir izleme paneli de sunuyor. Ürün dedektörü görülmemiş MIMII ünitelerinde çalışıyor; eşik doğrulamadan geliyor. Paneldeki sınıf etikete göre değil: bir kayıt klasöründe art arda k dosya eşiği geçince bir alarm. Ekranda makine kartları, sapma çubuğu ve dört sayı var: görünen kayıt, alarm, seri tamam olmadığı için şüpheli kalanlar, arıza klasöründekilerin kaçı eşiği geçti.

Sınır

C++ yolu öznitelik vektörü alıyor. Ham WAV’dan mel çıkarımı ve mel-tensör modelleri C++’ta yok. TensorRT ve gerçek ARM ölçümü yok. Canlı broker ile paket düzeyinde ağ arızası enjeksiyonu yok. PDF kabul raporu yazılmadı. Test sayısı, C++ derlemesi yokken atlanan parite testleriyle birlikte, 256.