FMCW Spoofing Detector — Prototype
Détecteur de retours radar FMCW usurpés (échos fantômes), CNN 1D PyTorch. Reconstruction corrigée de Ajinkya-001/An-AI-Based-FMCW-Radar-Jammer-Detector : délais/atténuations chevauchants entre classes (pas de fuite d'étiquette), split par scène 80/10/10, 5000 signaux synthétiques (SNR 10–30 dB).
Résultats (test, scènes non vues)
- accuracy : 0.9680
- matrice de confusion : [[250, 0], [16, 234]]
Inférence Rust (sans framework ML)
Le dossier rust/ contient un portage complet du modèle en Rust pur :
Conv1d, MaxPool, AdaptiveAvgPool, Linear et sigmoid sont implémentés à la main — aucune dépendance ML, seulement serde, serde_json et ureq.
cd rust && cargo run --release
Le binaire télécharge export/weights.bin (91 652 octets, f32 LE plat) + export/manifest.json
depuis ce repo, exécute 4 vecteurs de test et compare ses sorties aux probabilités PyTorch
de référence (export/test_vectors.json) :
| Cas | Label | Rust | PyTorch |
|---|---|---|---|
| 0 | real | 0,000103 | 0,000103 |
| 1 | real | 0,001893 | 0,001893 |
| 2 | spoofed | 0,999199 | 0,999199 |
| 3 | spoofed | 0,999965 | 0,999965 |
Écart maximal observé : 4,79e-9 (tolérance 1e-4) — bit-fidèle au comportement PyTorch. ~2,2 ms par inférence sur 2 cœurs CPU (build release, rustc 1.99.1).
Usage Python
import torch
from model_stub import SpoofNet # architecture dans model.py du repo d'origine
Signaux de 512 échantillons à 10 MHz (signal battue FMCW après mélange).