Upload folder using huggingface_hub
Browse files- README.md +42 -4
- assets/logo.svg +18 -0
- assets/shells.svg +28 -0
README.md
CHANGED
|
@@ -19,11 +19,17 @@ tags:
|
|
| 19 |
|
| 20 |
# orbit2vec
|
| 21 |
|
|
|
|
|
|
|
| 22 |
Embeddings for satellite orbit histories. Two windows of the same object, a month apart, should land close together; other objects should land apart. Part of Weird2Vec, embedding models for data nobody embeds.
|
| 23 |
|
| 24 |
> [!NOTE]
|
| 25 |
> **What is a TLE?** A two-line element set is the public record of an orbit: mean motion, eccentricity, inclination, node, perigee and drag, at one epoch. Space-Track publishes them for every tracked object, several times a day. A month of them is a trajectory, including its manoeuvres and decay.
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
## 🚀 Usage
|
| 28 |
|
| 29 |
The repo holds the script that trained the model, so one command embeds the last 32 days of a TLE file (oldest first, one object) and names the nearest catalogued objects:
|
|
@@ -40,15 +46,47 @@ It prints the nearest objects, a guess for regime, constellation or object type
|
|
| 40 |
|
| 41 |
## 🏋️ Training
|
| 42 |
|
| 43 |
-
Each day becomes 11 features: altitude, its change within the window, eccentricity, inclination and its change, the node and perigee angles as sine and cosine, drag and its rate. Days without a TLE are masked. A transformer encodes the window and a contrastive loss pulls two augmented views (random crop, dropped days) of adjacent windows of the same object together against the rest of the batch. Most of a batch shares one window, so satellites of the same shell compete. Small heads predict regime, constellation, owner, inclination and drift.
|
| 44 |
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
## 📊 Results
|
| 48 |
|
| 49 |
-
Each object's later test window is matched against the earlier windows of all
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
-
|
| 52 |
|
| 53 |
## ⚠️ Limitations
|
| 54 |
|
|
|
|
| 19 |
|
| 20 |
# orbit2vec
|
| 21 |
|
| 22 |
+
<p align="center"><img src="assets/logo.svg" alt="Orbit2Vec logo: a satellite on a rainbow orbit around Earth, on a dark tile" width="200"></p>
|
| 23 |
+
|
| 24 |
Embeddings for satellite orbit histories. Two windows of the same object, a month apart, should land close together; other objects should land apart. Part of Weird2Vec, embedding models for data nobody embeds.
|
| 25 |
|
| 26 |
> [!NOTE]
|
| 27 |
> **What is a TLE?** A two-line element set is the public record of an orbit: mean motion, eccentricity, inclination, node, perigee and drag, at one epoch. Space-Track publishes them for every tracked object, several times a day. A month of them is a trajectory, including its manoeuvres and decay.
|
| 28 |
|
| 29 |
+

|
| 30 |
+
|
| 31 |
+
Satellites in the same shell fly almost the same orbit, which is what makes telling them apart hard.
|
| 32 |
+
|
| 33 |
## 🚀 Usage
|
| 34 |
|
| 35 |
The repo holds the script that trained the model, so one command embeds the last 32 days of a TLE file (oldest first, one object) and names the nearest catalogued objects:
|
|
|
|
| 46 |
|
| 47 |
## 🏋️ Training
|
| 48 |
|
| 49 |
+
Each day becomes 11 features: altitude, its change within the window, eccentricity, inclination and its change, the node and perigee angles as sine and cosine, drag and its rate. Days without a TLE are masked. A transformer encodes the window and a contrastive loss pulls two augmented views (random crop, dropped days) of adjacent windows of the same object together against the rest of the batch. Most of a batch shares one window, so satellites of the same shell compete. Small heads predict regime, constellation, owner, inclination and drift, weighted 0.3.
|
| 50 |
|
| 51 |
+
| | |
|
| 52 |
+
|---|---|
|
| 53 |
+
| Parameters | 3,314,479 (4 layers, width 256) |
|
| 54 |
+
| Steps | 20000, 512 objects (two views each) per step |
|
| 55 |
+
| Learning rate | 0.0003, cosine; temperature 0.05 |
|
| 56 |
+
| Training pairs | 302,056 from 45,261 objects |
|
| 57 |
+
| Final loss | 0.4862 (contrastive 0.2473) |
|
| 58 |
+
| Hardware | NVIDIA A10G, 17 min |
|
| 59 |
|
| 60 |
## 📊 Results
|
| 61 |
|
| 62 |
+
Each object's later test window is matched against the earlier windows of all 28230 test objects. *Seen* objects were in training, in other months; *unseen* objects never were. The baseline matches the mean of the standardized inputs.
|
| 63 |
+
|
| 64 |
+
| Objects | n | Top-1 | Top-5 | Baseline top-1 | Regime | Group | Owner | Inclination MAE | Drift MAE |
|
| 65 |
+
|---|---|---|---|---|---|---|---|---|---|
|
| 66 |
+
| seen | 25441 | 0.423 | 0.585 | 0.059 | 0.998 | 0.861 | 0.82 | 0.78 | 0.058 |
|
| 67 |
+
| unseen | 2789 | 0.439 | 0.598 | 0.057 | 0.998 | 0.848 | 0.808 | 0.76 | 0.059 |
|
| 68 |
+
|
| 69 |
+
Chance top-1 is 3.5e-05.
|
| 70 |
+
|
| 71 |
+
Two harder checks:
|
| 72 |
+
|
| 73 |
+
- **Shell mates.** Top-1 among earlier windows of the same group within 5 km of altitude and 0.5° of inclination, for the 21510 objects with at least five such mates: 0.378 (baseline 0.074).
|
| 74 |
+
- **Manoeuvres.** Embedding distance between the 10 days before and after a labelled Starlink manoeuvre, against quiet days: AUC 0.763 on 270 manoeuvres and 553 quiet days (a plain altitude-jump baseline: 0.845).
|
| 75 |
+
|
| 76 |
+

|
| 77 |
+
|
| 78 |
+
### Auxiliary weight
|
| 79 |
+
|
| 80 |
+
The same model trained with four auxiliary weights, each on its own branch (`aux0`, `aux0.1`, `aux0.3`, `aux1`). `main` is `aux0.3`. Without the auxiliary heads the embedding still retrieves as well, but it does not carry group, owner or inclination.
|
| 81 |
+
|
| 82 |
+
| Aux weight | Seen top-1 | Unseen top-1 | Shell mates | Group | Owner | Inclination MAE | Manoeuvre AUC |
|
| 83 |
+
|---|---|---|---|---|---|---|---|
|
| 84 |
+
| 0 | 0.419 | 0.435 | 0.377 | 0.04 | 0.05 | 21.8 | 0.752 |
|
| 85 |
+
| 0.1 | 0.419 | 0.427 | 0.374 | 0.85 | 0.80 | 0.89 | 0.791 |
|
| 86 |
+
| 0.3 | 0.423 | 0.439 | 0.378 | 0.86 | 0.82 | 0.78 | 0.763 |
|
| 87 |
+
| 1 | 0.415 | 0.422 | 0.372 | 0.87 | 0.83 | 0.77 | 0.750 |
|
| 88 |
|
| 89 |
+
Hard pairs do not collapse at any weight. The manoeuvre AUC rests on 26 objects, so differences there are noise.
|
| 90 |
|
| 91 |
## ⚠️ Limitations
|
| 92 |
|
assets/logo.svg
ADDED
|
|
assets/shells.svg
ADDED
|
|