Vega - radar micro-Doppler activity & fall detection (CfC)

Liquid Neural Network (CfC) that classifies six human activities from raw FMCW radar, including falls. No camera, no wearable, works in the dark.

Input: a 10-second FMCW recording. Output: walking, sitting down, standing up, pick up object, drink water, or fall.

Shipped model is a 3-seed ensemble of the 112K-parameter CfC (3 x 112,134 parameters).

Results

Subject-wise split: 63 train / 21 validation / 22 test participants, 358 test recordings. No participant appears in more than one split.

Note: this differs from the split used in the previous revision of this card (74 / 15 / 17 participants, 276 test recordings), so the numbers are not directly comparable to that table.

model test acc balanced acc macro F1 test loss
CfC, single seed (best of 3) 0.844 0.845 0.848 0.745
CfC, single seed (worst of 3) 0.793 0.796 0.807 0.772
CfC 3-seed ensemble 0.880 0.880 0.887 0.504
+ fall threshold 0.30 (shipped) 0.883 0.885 0.891 -

Per class, shipped configuration:

class precision recall F1 support
walking 0.985 1.000 0.992 64
sitting down 0.984 0.954 0.969 65
standing up 0.966 0.862 0.911 65
pick up object 0.735 0.781 0.758 64
drink water 0.722 0.800 0.759 65
fall 1.000 0.914 0.955 35

Fall operating point

Plain argmax over the ensemble gives fall recall 0.886 at precision 1.000. Because missing a fall costs more than a false alarm, the shipped configuration predicts fall whenever the ensemble's fall probability reaches 0.30. On this test set that raises fall recall to 0.914 while precision stays at 1.000, and overall accuracy rises slightly (0.880 to 0.883).

Lowering the threshold further does not recover more falls - recall plateaus at 0.914 - and starts costing precision (0.941 at 0.25, 0.889 at 0.15). Three of 35 falls are missed at every threshold tested.

Architecture

Conv1d(128->64, k5, s2) + BN + GELU x2 -> CfC(64) -> mean-pool + last step -> Linear(6).

The readout matters: with last-step-only readout both CfC and LSTM collapse to a single class (0.355 accuracy) on identical data.

Training recipe: OneCycleLR (max lr 1.2e-3), AdamW (weight decay 1e-2), 140 epochs, batch 64, label smoothing 0.05. Augmentation: time roll +/-25 frames, Doppler roll +/-4 bins, Gaussian noise (sigma 0.02), per-sample amplitude scaling +/-5%, and mixup (beta 0.3) on 30% of batches. Seeds 0, 1, 2; softmax probabilities averaged.

Ensembling is where the gain is - single seeds land at 0.79-0.84, the ensemble at 0.88.

Input pipeline

prep_glasgow.py: raw .dat I/Q -> range FFT -> MTI clutter removal -> sum range bins 2-40 -> STFT (nperseg 256, hop 32) -> 300 frames x 128 Doppler bins scaled to [0, 1].

Tied to the training radar configuration: 5.8 GHz carrier, 1 ms sweep (1 kHz PRF), 128 samples per sweep, 400 MHz bandwidth. Other sensors need retraining; the pipeline transfers.

Training data

University of Glasgow, Radar signatures of human activities, CC BY 4.0, https://researchdata.gla.ac.uk/848/ - 1,752 recordings, 6 classes, 106 participant-sessions.

Licence verified from the repository's own EPrints JSON export, where every file carries cc_by_4, not from a third-party mirror.

No other dataset is used. Four open-licence radar datasets were evaluated as additional training data and all were rejected on practical grounds:

  • Glasgow 2031 (IAA micro-Doppler, CC BY 4.0) - the ~35 GB data file is not directly downloadable; the repository requires a data request.
  • OPERAnet (CC0 1.0, figshare) - downloads return HTTP 202 with an empty body; only 6 participants.
  • Glasgow 1354 / NodeNS (CC BY 4.0) - raw 60 GHz TI mmWave RX cubes, ~4 scene configurations, 101 samples per class; not mergeable with 5.8 GHz FMCW spectrograms.
  • RadHAR (BSD-3-Clause) - mmWave point clouds, a different representation entirely.

Usage

pip install torch scipy ncps

# defaults: 3-seed ensemble (vega_cfc_s0/1/2.pt) + fall threshold 0.30
python fall_detect.py --alert-only *.dat

# single seed, plain argmax
python fall_detect.py --model vega_cfc_s2.pt --fall-thresh 1.1 *.dat

Limits

  • pick up object and drink water remain the weak pair (F1 0.758 and 0.759) - both are low-amplitude torso movements with similar Doppler signatures.
  • Three of 35 falls are missed at every threshold tested. Do not deploy this as the sole safety mechanism for an at-risk person.
  • Single-radar, single-room, single-hardware. Accuracy on a different carrier frequency, sweep rate, or room geometry is unknown and likely much lower.
  • 106 participant-sessions is a small population. Generalisation to ages, body types and mobility levels outside the Glasgow cohort is unverified.
  • ncps patch required: ncps/torch/cfc.py squeezes timespans[:, t] to shape (B,), which breaks broadcasting. Reinstalling ncps undoes the fix.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support