Views
No views yet
Input (18-dim per frame):
delta_lidar (6) + delta_imu (6) + accel (3) + gyro (3)
|
Feature Extractor: Linear(18->128->64->32) + LayerNorm + GELU + Dropout(0.3)
|
Temporal Encoder: Bidirectional GRU (hidden=64, 2 layers)
|
Classification Head -> [benign, spoofed] per frame
Anomaly Score Head -> continuous score >= 0| Metric | Mean | Std |
|---|---|---|
| Accuracy | 96.8% | 0.22% |
| Precision | 94.9% | 0.53% |
| Recall / Detection Rate | 84.0% | 1.48% |
| F1 Score | 89.1% | 0.82% |
| False Positive Rate | 0.84% | 0.10% |
| Format | File | Size | Use Case |
|---|---|---|---|
| PyTorch (.pth) | pytorch/eir_v2.pth | 1.5 MB | Training, fine-tuning |
| SafeTensors | pytorch/eir_v2.safetensors | 0.5 MB | Fast loading, safe |
| ONNX | onnx/eir_v2.onnx | 0.5 MB | Cross-platform inference |
| TensorRT FP32 | tensorrt/eir_v2_fp32.trt | 1.4 MB | Full precision (L4/A100) |
| TensorRT FP16 | tensorrt/eir_v2_fp16.trt | 1.1 MB | Edge deployment (Jetson) |
1import torch
2from anima_eir.training.model import AnomalyNet
3
4# Load model
5model = AnomalyNet(input_dim=18, hidden_dims=[128, 64, 32], dropout=0.3,
6 use_temporal=True, gru_hidden=64, gru_layers=2)
7ckpt = torch.load("pytorch/eir_v2.pth", map_location="cpu")
8model.load_state_dict(ckpt["model_state_dict"])
9model.eval()
10
11# Inference (batch=1, seq_len=32)
12result = model.predict(delta_lidar, delta_imu, accel, gyro)
13# result["predictions"]: per-frame 0/1
14# result["scores"]: continuous anomaly scoreconfigs/training.yaml for full configuration.
See TRAINING_REPORT.md for per-fold metrics.LiDAR Input -> THOR (filter) -> EIR (anomaly detect) -> SLAM Frontend -> BALDUR (verify)/anima/eir/health, /anima/eir/spoof_detection