euler-eval 2.32.0__tar.gz → 2.34.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {euler_eval-2.32.0/euler_eval.egg-info → euler_eval-2.34.0}/PKG-INFO +1 -1
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/cli.md +5 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/configuration.md +62 -1
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/output.md +15 -10
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/cli.py +454 -54
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/protocol.py +1 -1
- {euler_eval-2.32.0 → euler_eval-2.34.0/euler_eval.egg-info}/PKG-INFO +1 -1
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval.egg-info/SOURCES.txt +1 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/pyproject.toml +1 -1
- euler_eval-2.34.0/tests/test_experiments.py +489 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_protocol.py +9 -2
- {euler_eval-2.32.0 → euler_eval-2.34.0}/LICENSE +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/MANIFEST.in +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/README.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/README.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/alignment.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/distributions.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/feature-request-unified-evaluation-framework.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/metrics.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/docs/validation.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/THIRD_PARTY_NOTICES.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/__init__.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/calibration.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/config_paths.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/data.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/distribution_contract.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/distributions.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/evaluate.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metric_sets.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/__init__.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/_natural_scene_models.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/absrel.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/daniel_error.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/depth_binned_error.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/depth_edge_f1.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/depth_standard.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/fade.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/fid_kid.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/gpu_depth_batch.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/gpu_image_batch.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/high_freq_energy.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/lpips_metric.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/niqe.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/normal_consistency.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/points3d_cloud.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/points3d_decomposition.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/points3d_distance.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/points3d_geometry.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/psnr.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/rgb_edge_f1.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/rgb_lpips.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/rgb_psnr_ssim.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/rho_a.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/rmse.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/scale_invariant_log.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/sky_iou.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/ssim.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/tail_errors.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/metrics/utils.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/sanity_checker.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/schemas/distribution-v1.schema.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/utils/hierarchy_parser.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval/validation.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval.egg-info/dependency_links.txt +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval.egg-info/entry_points.txt +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval.egg-info/requires.txt +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/euler_eval.egg-info/top_level.txt +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/init_cache.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/scripts/generate_distribution_fixtures.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/setup.cfg +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/__init__.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/conftest.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/distribution_contract_utils.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/eval_output.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/README.md +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/counts-depth.eval.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/counts-points3d.eval.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/counts-sparsedepth.eval.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/future-sum-by-depth.eval.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/histogram-only.eval.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/per-file-only.eval.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/fixtures/distributions/scalar-only.eval.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/mock_files/calibration_output.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/mock_files/depth_output.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/mock_files/rgb_output.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/mock_files/segmentation_output.json +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_alignment.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_cli_device.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_cli_sparse_outputs.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_config.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_data.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_data_builders.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_depth_alignment_output.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_depth_standard.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_distribution_contract.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_distributions.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_domain_metrics.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_evaluate_helpers.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_init_cache.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_integration.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_mask_sky_pairing.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_mask_sky_prediction.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_meta_output.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_metrics_utils.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_normal_consistency.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_points_3d.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_points_3d_sparse.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_rgb_fid_output.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_rho_a.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_save_results.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_sky_iou.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_sky_iou_cli.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_sparse_depth.py +0 -0
- {euler_eval-2.32.0 → euler_eval-2.34.0}/tests/test_validation.py +0 -0
|
@@ -38,6 +38,7 @@ validation exits with status `1` before any dataset is opened.
|
|
|
38
38
|
| `--distribution-scale` | `{log,linear}` | `log` | Spacing of finite histogram bins |
|
|
39
39
|
| `--distribution-range` | `float float` | `0.001 100` | Finite error range `[MIN, MAX)` in evaluated space units; zero/small-error and overflow bins retain the tails |
|
|
40
40
|
| `--eval-name` | `str` | `eval` | Name this evaluation: results are written as `<name>.json` in each prediction dataset's `.eval/` folder, so differently named runs sit side by side; a dataset's `output_file` still wins ([details](output.md#where-results-land)) |
|
|
41
|
+
| `--experiment` | `str` | all | Run only this experiment from the config's [`experiments`](configuration.md#experiments-section-optional) section; repeatable |
|
|
41
42
|
|
|
42
43
|
Histogram settings can also be specified in the config's `distributions`
|
|
43
44
|
section. A bin, scale or range flag enables histograms and overrides that
|
|
@@ -73,6 +74,10 @@ euler-eval config.json --skip-rgb --skip-rays --skip-points-3d
|
|
|
73
74
|
# Keep a sky-masked run beside the default results: .eval/[<scope>/]no_sky.json
|
|
74
75
|
euler-eval config.json --mask-sky --eval-name no_sky
|
|
75
76
|
|
|
77
|
+
# Run every experiment in the config's "experiments" section, or just one
|
|
78
|
+
euler-eval config.json --device cuda --batch-size 32
|
|
79
|
+
euler-eval config.json --experiment no_sky
|
|
80
|
+
|
|
76
81
|
# Force affine scale+shift alignment on all depth predictions
|
|
77
82
|
euler-eval config.json --depth-alignment affine
|
|
78
83
|
|
|
@@ -250,6 +250,66 @@ sources:
|
|
|
250
250
|
unprojected on the fly. Whether the GT depth is radial or planar is read from
|
|
251
251
|
its metadata (`radial_depth`).
|
|
252
252
|
|
|
253
|
+
## `experiments` section (optional)
|
|
254
|
+
|
|
255
|
+
Runs the same config several times in one invocation, each time with its own
|
|
256
|
+
command-line flags and under its own name:
|
|
257
|
+
|
|
258
|
+
```json
|
|
259
|
+
{
|
|
260
|
+
"gt": { "depth": { "path": "/data/gt/depth" } },
|
|
261
|
+
"datasets": [{ "name": "model_a", "depth": { "path": "/data/model_a/depth" } }],
|
|
262
|
+
"experiments": [
|
|
263
|
+
{ "name": "eval" },
|
|
264
|
+
{ "name": "no_sky", "args": ["--mask-sky", "--benchmark-depth-range", 0.01, 80] },
|
|
265
|
+
{ "name": "affine", "args": ["--depth-alignment", "affine"] },
|
|
266
|
+
{ "name": "capped_no_mask", "args": ["--sky-depth", 80], "modalities": ["depth"] }
|
|
267
|
+
]
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
| Field | Required | Description |
|
|
272
|
+
|---|---|---|
|
|
273
|
+
| `name` | yes | Evaluation name: results are written as `<name>.json` in each prediction dataset's `.eval/` folder ([where results land](output.md#where-results-land)). Same rules as `--eval-name`; unique |
|
|
274
|
+
| `args` | no | Command-line tokens this experiment adds, exactly as you would type them; numbers may be written as JSON numbers |
|
|
275
|
+
| `modalities` | no | The prediction modalities (`datasets[]` entries) this experiment may load (default: all): `depth` (also covers `relative_depth` and `affine_depth`), `rgb`, `rays`, `points_3d`, `sky_mask`. The `gt` section is always used as configured |
|
|
276
|
+
|
|
277
|
+
- **The command line is the base.** Each experiment runs with the flags given on
|
|
278
|
+
the command line followed by its own `args`, so for a flag that takes a
|
|
279
|
+
value, the experiment's value wins. Switches such as `--mask-sky` can only be
|
|
280
|
+
turned on that way, so put the ones that vary between experiments in
|
|
281
|
+
`args`, not on the command line.
|
|
282
|
+
- **Checked before any work.** Every experiment's `args` are parsed and
|
|
283
|
+
validated before the first one runs. `--eval-name` and `--experiment` are not
|
|
284
|
+
allowed in `args`, and `--eval-name` cannot be combined with an `experiments`
|
|
285
|
+
section, because `name` names the results.
|
|
286
|
+
- **Modalities.** An experiment with `modalities` runs as if the unlisted
|
|
287
|
+
prediction entries were not in `datasets[]`; a `sky_mask` goes with its depth
|
|
288
|
+
prediction. GT inputs are not selected this way: they stay as configured,
|
|
289
|
+
and flags decide which ones an evaluation reads (`--mask-sky` the
|
|
290
|
+
segmentation, for example), so GT names such as `segmentation` or
|
|
291
|
+
`sparse_depth` are rejected. A listed modality is still read only when the
|
|
292
|
+
evaluation needs it, e.g. `sky_mask` only with `--sky-depth`,
|
|
293
|
+
`--mask-sky-prediction` or `--sky-iou`; with just `--mask-sky`, listing
|
|
294
|
+
`sky_mask` changes nothing. This is how to compare runs where a modality's
|
|
295
|
+
presence changes the output: above, `capped_no_mask` caps depth at 80 m
|
|
296
|
+
without filling the predicted sky. A dataset left without a prediction is
|
|
297
|
+
not evaluated in that experiment. Listing a modality no dataset has only
|
|
298
|
+
prints a warning, so one experiment list can serve several generated
|
|
299
|
+
configs.
|
|
300
|
+
- **Selecting experiments.** By default all experiments run, in config order.
|
|
301
|
+
`--experiment NAME` (repeatable) runs only the named ones, e.g. one per task
|
|
302
|
+
of a job array.
|
|
303
|
+
- **Failures.** An experiment that fails is reported and the rest still run;
|
|
304
|
+
the exit status is then `1`.
|
|
305
|
+
|
|
306
|
+
Each experiment loads and scores the data again, and its results carry the
|
|
307
|
+
settings it ran with in [`protocol.parameters`](output.md#comparing-evaluations)
|
|
308
|
+
and its name in `meta.eval_name`. With euler-train logging, each prediction
|
|
309
|
+
dataset is logged once per experiment, as `<name>/<experiment>`; the
|
|
310
|
+
sanity-check report is written per experiment as
|
|
311
|
+
`sanity_check_report_<experiment>.json`.
|
|
312
|
+
|
|
253
313
|
## `euler_train` section (optional)
|
|
254
314
|
|
|
255
315
|
When present, results are logged to an
|
|
@@ -260,7 +320,8 @@ created and finished on completion) or a full path to an existing run directory
|
|
|
260
320
|
only supported key.
|
|
261
321
|
|
|
262
322
|
Each prediction dataset is registered as an evaluation named after its config
|
|
263
|
-
`name
|
|
323
|
+
`name` (`<name>/<experiment>` with [`experiments`](#experiments-section-optional)),
|
|
324
|
+
first as `running` and then with its metrics attached, alongside package
|
|
264
325
|
provenance (euler-eval version, Python, torch, CUDA).
|
|
265
326
|
|
|
266
327
|
## Loader resolution & dataset metadata
|
|
@@ -74,7 +74,7 @@ set.
|
|
|
74
74
|
"metricDescriptions": { "absrel": { "…": "…" } }
|
|
75
75
|
},
|
|
76
76
|
"protocol": {
|
|
77
|
-
"schemaVersion": "1.
|
|
77
|
+
"schemaVersion": "1.1",
|
|
78
78
|
"parameters": { "reference.gt.dataset": "muses", "method.depth_alignment": "auto_affine", "…": "…" }
|
|
79
79
|
},
|
|
80
80
|
"dataset_info": { "num_pairs": 500, "gt_name": "GT", "pred_name": "model_a" },
|
|
@@ -188,7 +188,7 @@ values differ say where. Nothing else in the file needs to be compared for that;
|
|
|
188
188
|
|
|
189
189
|
```json
|
|
190
190
|
"protocol": {
|
|
191
|
-
"schemaVersion": "1.
|
|
191
|
+
"schemaVersion": "1.1",
|
|
192
192
|
"parameters": {
|
|
193
193
|
"reference.gt.modality": "sparse_depth",
|
|
194
194
|
"reference.gt.dataset": "seeingthroughfog",
|
|
@@ -213,7 +213,8 @@ values differ say where. Nothing else in the file needs to be compared for that;
|
|
|
213
213
|
"population.benchmark_depth_range_m": [0.01, 80.0],
|
|
214
214
|
"method.metrics_revision": 1,
|
|
215
215
|
"method.depth_alignment": "auto_affine",
|
|
216
|
-
"method.sky_depth_m": null
|
|
216
|
+
"method.sky_depth_m": null,
|
|
217
|
+
"method.pred_sky_mask": false
|
|
217
218
|
}
|
|
218
219
|
}
|
|
219
220
|
```
|
|
@@ -224,14 +225,14 @@ The first segment of a key is its section:
|
|
|
224
225
|
|---|---|
|
|
225
226
|
| `reference` | The GT the prediction is scored against (`gt`, with its config key as `modality`) and every other GT input the modality reads, each identified by `dataset` (the `dataset.id` of its `dataset-head.json`), metadata `scope` and `split` — not by file path, so the same data on another machine matches |
|
|
226
227
|
| `population` | Which samples and pixels were scored: the matched `samples`, sky masking, the grid the metrics were computed on and benchmark depth bins |
|
|
227
|
-
| `method` | How they were scored: alignment modes, the sky-depth cap, how GT and prediction resolutions were reconciled, the FID backend and `metrics_revision` |
|
|
228
|
+
| `method` | How they were scored: alignment modes, the sky-depth cap and whether the prediction's `sky_mask` was used, how GT and prediction resolutions were reconciled, the FID backend and `metrics_revision` |
|
|
228
229
|
|
|
229
230
|
What is recorded, per modality:
|
|
230
231
|
|
|
231
232
|
| Modality | `reference` inputs besides `gt` | `population` | `method` |
|
|
232
233
|
|---|---|---|---|
|
|
233
|
-
| `depth` | `calibration`, `segmentation` | `samples`, `gt_sky_masking`, `pred_sky_masking`, `evaluated_resolution`, `benchmark_depth_range_m` | `depth_alignment`, `sky_depth_m`, `spatial_alignment` |
|
|
234
|
-
| `sparsedepth` | `intrinsics`, `camera_extrinsics`, `lidar_extrinsics`, `segmentation` | as `depth` | `depth_alignment`, `sky_depth_m` |
|
|
234
|
+
| `depth` | `calibration`, `segmentation` | `samples`, `gt_sky_masking`, `pred_sky_masking`, `evaluated_resolution`, `benchmark_depth_range_m` | `depth_alignment`, `sky_depth_m`, `pred_sky_mask`, `spatial_alignment` |
|
|
235
|
+
| `sparsedepth` | `intrinsics`, `camera_extrinsics`, `lidar_extrinsics`, `segmentation` | as `depth` | `depth_alignment`, `sky_depth_m`, `pred_sky_mask` |
|
|
235
236
|
| `rgb` | `depth`, `calibration`, `segmentation` | `samples`, `gt_sky_masking`, `evaluated_resolution`, `benchmark_depth_range_m` | `fid_backend`, `spatial_alignment` |
|
|
236
237
|
| `rays` | `calibration` | `samples`, `evaluated_resolution` | `spatial_alignment` |
|
|
237
238
|
| `points3d` (dense) | `intrinsics`, `calibration`, `segmentation` | `samples`, `gt_sky_masking`, `evaluated_resolution` | `points_3d_alignment`, `spatial_alignment` |
|
|
@@ -253,10 +254,14 @@ Rules that keep comparisons a plain map comparison:
|
|
|
253
254
|
for identical inputs and settings, which the [changelog](../CHANGELOG.md)
|
|
254
255
|
then says. Different revisions are not comparable even when every other
|
|
255
256
|
key matches.
|
|
256
|
-
- Settings are recorded, not what they caused.
|
|
257
|
-
`
|
|
258
|
-
`
|
|
259
|
-
`
|
|
257
|
+
- Settings are recorded, not what they caused. `population.pred_sky_masking`
|
|
258
|
+
is the `--mask-sky-prediction` flag, and `method.pred_sky_mask` says whether
|
|
259
|
+
the prediction's `sky_mask` was loaded and scored with (filled at
|
|
260
|
+
`--sky-depth`, or excluded by `--mask-sky-prediction`). It is `false` for a
|
|
261
|
+
prediction without one, or an [experiment](configuration.md#experiments-section-optional)
|
|
262
|
+
that leaves it out. How much each model's own sky removed is in
|
|
263
|
+
`meta.pred_sky_masking`, and `metricSet.metadata` records whether an
|
|
264
|
+
alignment was actually applied.
|
|
260
265
|
- Renaming or removing a key bumps the major `schemaVersion`; adding one bumps
|
|
261
266
|
the minor version.
|
|
262
267
|
|