jgalego commited on
Commit
68d76fc
·
verified ·
1 Parent(s): 90e7c9b

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. README.md +42 -4
  2. assets/logo.svg +18 -0
  3. 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
- Not trained yet.
 
 
 
 
 
 
 
46
 
47
  ## 📊 Results
48
 
49
- Each object's later test window is matched against the earlier windows of all test test objects. *Seen* objects were in training, in other months; *unseen* objects never were. The baseline matches the mean of the standardized inputs.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
- Not evaluated yet.
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
+ ![Three orbital shells, at 550 km and 53.0°, 570 km and 70.0°, and 560 km and 97.6°](assets/shells.svg)
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
+ ![Test windows' embeddings flattened with UMAP, coloured by group](results/map.png)
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