Add camera-only queryocc-nusc checkpoint (24.25 sem RayIoU)
Browse files
README.md
CHANGED
|
@@ -21,22 +21,44 @@ Weights for [QueryOcc](https://arxiv.org/abs/2511.17221) (Lilja, Lan, Fu, Hammar
|
|
| 21 |
QueryOcc learns continuous 3D semantic occupancy from multi-view camera images by supervising
|
| 22 |
directly in 4D space-time: positive and negative queries are sampled along rays from point
|
| 23 |
clouds observed in adjacent frames — no rendering losses, no voxelized lidar aggregation. No
|
| 24 |
-
human annotation is used at any stage.
|
| 25 |
-
|
|
|
|
|
|
|
| 26 |
|
| 27 |
## Files
|
| 28 |
|
| 29 |
| File | Preset | Supervision | Sem. RayIoU | Dyn. RayIoU | Occ. RayIoU | Sem. IoU | Occ. IoU |
|
| 30 |
|---|---|---|---|---|---|---|---|
|
|
|
|
| 31 |
| `queryocc-lidar-nusc.pth` | `queryocc-lidar-nusc` | real lidar | 23.2 | 19.5 | 48.8 | 20.4 | 56.9 |
|
| 32 |
|
| 33 |
-
Occ3D-nuScenes validation split, self-supervised protocol. 112.1 M parameters, 449 MB.
|
| 34 |
-
`sha256 561112071f8c1417b466798353dadaf5c54175b2107d25f8434839145c9d9dcc`
|
| 35 |
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
## Usage
|
| 42 |
|
|
@@ -44,13 +66,15 @@ is what its accurate depth would predict.
|
|
| 44 |
git clone https://github.com/LiljaAdam/queryocc && cd queryocc
|
| 45 |
./setup_uv_env.sh && source .venv/bin/activate
|
| 46 |
|
| 47 |
-
python queryocc/train.py queryocc-
|
| 48 |
--load_ckpt_from=hf://QueryOcc/queryocc
|
| 49 |
```
|
| 50 |
|
| 51 |
-
The
|
| 52 |
-
|
| 53 |
-
|
|
|
|
|
|
|
| 54 |
|
| 55 |
Evaluation additionally requires nuScenes, the Occ3D-nuScenes labels and a CUDA toolkit (the
|
| 56 |
RayIoU raycaster is JIT-compiled on first use); the repository README covers the setup. Nothing
|
|
@@ -68,19 +92,20 @@ trust in the publisher:
|
|
| 68 |
```python
|
| 69 |
import torch
|
| 70 |
|
| 71 |
-
payload = torch.load("queryocc-
|
| 72 |
-
payload["preset"] # 'queryocc-
|
| 73 |
payload["metrics"] # the numbers in the table above
|
| 74 |
payload["state_dict"] # 'net.'-prefixed network weights
|
| 75 |
```
|
| 76 |
|
| 77 |
## Training data and intended use
|
| 78 |
|
| 79 |
-
Trained on nuScenes trainval: multi-view camera images, supervised by
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
|
|
|
| 84 |
[nuScenes terms](https://www.nuscenes.org/terms-of-use) as well as the license below.
|
| 85 |
|
| 86 |
## License
|
|
|
|
| 21 |
QueryOcc learns continuous 3D semantic occupancy from multi-view camera images by supervising
|
| 22 |
directly in 4D space-time: positive and negative queries are sampled along rays from point
|
| 23 |
clouds observed in adjacent frames — no rendering losses, no voxelized lidar aggregation. No
|
| 24 |
+
human annotation is used at any stage. Two arms are published here, differing only in which
|
| 25 |
+
point clouds provide the supervision: the **camera-only** arm (pseudo point clouds from a
|
| 26 |
+
vision foundation model — the paper's headline model) and the **lidar-supervised** arm (real
|
| 27 |
+
lidar sweeps with per-point pseudo-semantics).
|
| 28 |
|
| 29 |
## Files
|
| 30 |
|
| 31 |
| File | Preset | Supervision | Sem. RayIoU | Dyn. RayIoU | Occ. RayIoU | Sem. IoU | Occ. IoU |
|
| 32 |
|---|---|---|---|---|---|---|---|
|
| 33 |
+
| `queryocc-nusc.pth` | `queryocc-nusc` | camera-only (pseudo) | 24.25 | 22.45 | 45.98 | 21.51 | 55.06 |
|
| 34 |
| `queryocc-lidar-nusc.pth` | `queryocc-lidar-nusc` | real lidar | 23.2 | 19.5 | 48.8 | 20.4 | 56.9 |
|
| 35 |
|
| 36 |
+
Occ3D-nuScenes validation split, self-supervised protocol. 112.1 M parameters, 449 MB each.
|
|
|
|
| 37 |
|
| 38 |
+
```
|
| 39 |
+
sha256 queryocc-nusc.pth 4a54ffb927fff5cb94086a14dfc02caaa99511ab2a97170fd6a2b1ffd0601604
|
| 40 |
+
sha256 queryocc-lidar-nusc.pth 561112071f8c1417b466798353dadaf5c54175b2107d25f8434839145c9d9dcc
|
| 41 |
+
```
|
| 42 |
+
|
| 43 |
+
Lidar supervision trades semantic accuracy for better occupancy, which is what its accurate
|
| 44 |
+
depth would predict.
|
| 45 |
+
|
| 46 |
+
### On the camera-only numbers
|
| 47 |
+
|
| 48 |
+
The paper reports 23.6 / 21.7 / 45.2 / 21.3 / 55.0 for `queryocc-nusc`. This checkpoint is
|
| 49 |
+
above the paper on all five, from a post-publication learning-rate sweep rather than any change
|
| 50 |
+
to the method: the peak LR is 7.5e-5 instead of the paper's 5e-5, and nothing else differs.
|
| 51 |
+
Architecture, input resolution (256×704), supervision heads and step budget are unchanged, so
|
| 52 |
+
the comparison to the paper's baselines is unaffected. The repository's `queryocc-nusc` preset
|
| 53 |
+
now defaults to 7.5e-5, and reproduces this checkpoint; pass `--model.max_lr=5e-5` for the
|
| 54 |
+
exact paper configuration.
|
| 55 |
+
|
| 56 |
+
Two caveats worth stating plainly. Occ3D-nuScenes has no held-out test split — these numbers
|
| 57 |
+
are the validation split, which is what the benchmark and the paper report on, and which the LR
|
| 58 |
+
sweep also selected on. And the metric carries real seed noise: three seeds of this
|
| 59 |
+
configuration scored 23.91 / 24.24 / 24.25 semantic RayIoU (mean 24.13). The published file is
|
| 60 |
+
the best of those three, so **24.13 is the honest expectation when retraining, and 24.25 is
|
| 61 |
+
what this particular file scores.** Every seed beat the paper's 23.6.
|
| 62 |
|
| 63 |
## Usage
|
| 64 |
|
|
|
|
| 66 |
git clone https://github.com/LiljaAdam/queryocc && cd queryocc
|
| 67 |
./setup_uv_env.sh && source .venv/bin/activate
|
| 68 |
|
| 69 |
+
python queryocc/train.py queryocc-nusc --no-train --test \
|
| 70 |
--load_ckpt_from=hf://QueryOcc/queryocc
|
| 71 |
```
|
| 72 |
|
| 73 |
+
The `hf://<owner>/<repo>` spec resolves `<preset>.pth` inside the repo, so selecting
|
| 74 |
+
`queryocc-lidar-nusc` instead fetches the other file from the same URL. The checkpoint is
|
| 75 |
+
downloaded and cached automatically, and records the preset it belongs to — loading it into a
|
| 76 |
+
different preset is an error rather than a silent partial load. To use a manually downloaded
|
| 77 |
+
file, pass its path instead.
|
| 78 |
|
| 79 |
Evaluation additionally requires nuScenes, the Occ3D-nuScenes labels and a CUDA toolkit (the
|
| 80 |
RayIoU raycaster is JIT-compiled on first use); the repository README covers the setup. Nothing
|
|
|
|
| 92 |
```python
|
| 93 |
import torch
|
| 94 |
|
| 95 |
+
payload = torch.load("queryocc-nusc.pth", map_location="cpu", weights_only=True)
|
| 96 |
+
payload["preset"] # 'queryocc-nusc'
|
| 97 |
payload["metrics"] # the numbers in the table above
|
| 98 |
payload["state_dict"] # 'net.'-prefixed network weights
|
| 99 |
```
|
| 100 |
|
| 101 |
## Training data and intended use
|
| 102 |
|
| 103 |
+
Trained on nuScenes trainval: multi-view camera images, supervised either by pseudo point
|
| 104 |
+
clouds derived from monocular metric depth and vision-foundation-model features (camera-only
|
| 105 |
+
arm) or by lidar sweeps carrying offline per-point pseudo-semantics (lidar arm). Research
|
| 106 |
+
artifact: a demonstration of self-supervised occupancy learning, not a validated driving
|
| 107 |
+
component. Its outputs reflect the geometry, sensor suite and geographies of nuScenes (Boston
|
| 108 |
+
and Singapore) and should not be relied on for safety-critical decisions. Use is subject to the
|
| 109 |
[nuScenes terms](https://www.nuscenes.org/terms-of-use) as well as the license below.
|
| 110 |
|
| 111 |
## License
|