ryroeu's picture
Clarify held-out test set: two-axis holdout (unseen satellite + held-out stations), not fully station-unseen
27fc61b verified
|
Raw
History Blame Contribute Delete
2.4 kB
---
license: mit
library_name: transformers
pipeline_tag: image-classification
tags:
- satnogs
- radio
- signal-detection
- waterfall
datasets:
- ryroeu/satnogs-signal-waterfalls
---
# satnogs-signal-classifier
ResNet-18 fine-tuned to classify SatNOGS **waterfall** spectrograms as **signal vs no-signal**
(narrowband FSK/GFSK cubesat telemetry). A read-only **triage aid** — it suggests, it does not auto-vet.
Inputs are **cropped to the spectrogram region** (colorbar + axes removed), which re-centers the signal.
## Held-out test metrics
Held-out test set (436 observations) combining two axes held out of training: an **entirely unseen
satellite** (FrontierSat) plus **held-out ground stations** whose noise/RFI fingerprint is kept out
of training:
| Metric | Model | Classical baseline |
|---|---|---|
| ROC-AUC | **0.827** | 0.570 |
| PR-AUC | 0.829 | 0.557 |
| precision@10 | **1.000** | 0.600 |
Cross-satellite generalization (held-out **FrontierSat**, 240 obs, never trained on): ROC-AUC **0.772**.
By mode: GFSK 0.93, FSK 0.92, FSK AX.100 Mode 5 0.79.
## Labels
`0 = without-signal`, `1 = with-signal`; predict P(with-signal) = softmax index 1.
Trained on **gold human `waterfall_status` vettings** — never the decode-based observation `status`.
## Training data
Dataset: [ryroeu/satnogs-signal-waterfalls](https://huggingface.co/datasets/ryroeu/satnogs-signal-waterfalls)
— 4 train satellites (OTP-2, CUBEBEL-2, AEPEX, CatSat), held-out satellite FrontierSat; ~1,189 gold
waterfalls, cropped to the spectrogram.
## Limits & caveats
- **Sampling bias:** gold labels skew toward clearer passes than the unvetted firehose; real-world
performance on marginal/faint observations will be lower than these numbers.
- **Test-set holdout is two-axis, not intersectional:** the unseen-satellite slice is held out by
satellite, so some of its passes come from stations that also appear in training — that slice
measures cross-satellite generalization, not fully station-unseen performance.
- **Narrow family:** trained on narrowband FSK/GFSK telemetry; generalization beyond it is unverified.
- **Read-only triage aid**, not an auto-vetter. precision@10 = 1.0 means the *top of the ranked queue* is reliable.
## Usage
```python
from transformers import pipeline
clf = pipeline("image-classification", model="ryroeu/satnogs-signal-classifier")
clf("waterfall.png")
```