euler-preprocess 3.8.0__tar.gz → 3.9.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_preprocess-3.8.0 → euler_preprocess-3.9.0}/PKG-INFO +1 -1
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/PKG-INFO +1 -1
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/pyproject.toml +1 -1
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_dense_gloomy_daylight_config.py +8 -1
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_real_drive_sim_scenario_profiles.py +21 -7
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/MANIFEST.in +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/README.md +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/__init__.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/cli.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/__init__.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/color.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/dataset.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/device.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/intrinsics.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/io.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/logging.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/noise.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/normalize.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/output.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/sampling.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/common/transform.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/__init__.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/airlight_from_sky.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/atmospheric_light.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/augmentations.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/capture.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/dcp_airlight.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/dcp_airlight_torch.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/dcp_heuristic_airlight.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/dcp_heuristic_airlight_torch.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/foggify.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/foggify_logging.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/inference.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/logging.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/models.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/pipeline.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/transform.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/radial/__init__.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/radial/transform.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/sky_depth/__init__.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/sky_depth/transform.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/SOURCES.txt +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/dependency_links.txt +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/entry_points.txt +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/requires.txt +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/top_level.txt +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/setup.cfg +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_airlight_fallback.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_cli_sample_selection.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_dcp_heuristic_airlight.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_fog_aux_outputs.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_fog_aware_auto_exposure.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_fog_cpu_gpu_parity.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_foggify_integration.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_radial.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_scene_illumination.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_sensor_identity.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_sky_depth.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_source_backed_output.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_tone_map_lut.py +0 -0
- {euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_zip_output.py +0 -0
{euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_dense_gloomy_daylight_config.py
RENAMED
|
@@ -54,7 +54,7 @@ def test_dense_gloomy_daylight_config_activates_realism_stack() -> None:
|
|
|
54
54
|
assert profile["isp"]["tone_map_lut_domain"] == "linear"
|
|
55
55
|
assert len(profile["isp"]["tone_map_lut"]) >= 2
|
|
56
56
|
|
|
57
|
-
assert config["scenario_profiles"]
|
|
57
|
+
assert len(config["scenario_profiles"]) == 6
|
|
58
58
|
clear = _profile_by_name(
|
|
59
59
|
config["scenario_profiles"],
|
|
60
60
|
"clear_weather_camera_reference",
|
|
@@ -62,6 +62,13 @@ def test_dense_gloomy_daylight_config_activates_realism_stack() -> None:
|
|
|
62
62
|
assert clear["clear_weather"] is True
|
|
63
63
|
assert clear["weight"] == 0.1
|
|
64
64
|
assert clear["model"] == "uniform"
|
|
65
|
+
high_visibility = _profile_by_name(
|
|
66
|
+
config["scenario_profiles"],
|
|
67
|
+
"clear_high_visibility_daylight_reference",
|
|
68
|
+
)
|
|
69
|
+
assert high_visibility.get("clear_weather", False) is False
|
|
70
|
+
assert high_visibility["weight"] == 0.09
|
|
71
|
+
assert high_visibility["model"] == "heterogeneous_k_ls"
|
|
65
72
|
assert sum(scenario["weight"] for scenario in config["scenario_profiles"]) == 1.0
|
|
66
73
|
underexposed_condition = _profile_by_name(
|
|
67
74
|
profile["sensor"]["condition_profiles"],
|
{euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/tests/test_real_drive_sim_scenario_profiles.py
RENAMED
|
@@ -33,6 +33,7 @@ DEFAULT_RDS_SAMPLE_ZIP = (
|
|
|
33
33
|
RDS_CONFIG_PATH = Path("configs/dense_gloomy_daylight_fog_camera.json")
|
|
34
34
|
SCENARIO_ORDER = (
|
|
35
35
|
"clear_weather_camera_reference",
|
|
36
|
+
"clear_high_visibility_daylight_reference",
|
|
36
37
|
"light_haze_soft_overcast",
|
|
37
38
|
"moderate_gloomy_fog_nominal_camera",
|
|
38
39
|
"underexposed_dense_gloom",
|
|
@@ -137,10 +138,17 @@ def test_dense_gloomy_scenario_profiles_render_real_drive_sim_samples(
|
|
|
137
138
|
for sample in rds_samples:
|
|
138
139
|
metrics = _render_scenario_metrics(transform, sample)
|
|
139
140
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
]
|
|
143
|
-
assert
|
|
141
|
+
clear_metrics = metrics["clear_weather_camera_reference"]
|
|
142
|
+
assert clear_metrics["beta"] == 0.0
|
|
143
|
+
assert clear_metrics["opacity_mean"] == 0.0
|
|
144
|
+
assert clear_metrics["opacity_p95"] == 0.0
|
|
145
|
+
fog_profiles = SCENARIO_ORDER[1:]
|
|
146
|
+
assert all(metrics[name]["opacity_mean"] > 0.0 for name in fog_profiles)
|
|
147
|
+
# Adjacent fog profiles intentionally have overlapping distributions,
|
|
148
|
+
# so sampled opacity need not be strictly ordered for every image.
|
|
149
|
+
assert metrics["severe_low_contrast_sensor_stress"]["opacity_mean"] > (
|
|
150
|
+
metrics["clear_high_visibility_daylight_reference"]["opacity_mean"]
|
|
151
|
+
)
|
|
144
152
|
assert metrics["severe_low_contrast_sensor_stress"]["opacity_mean"] > (
|
|
145
153
|
metrics["clear_weather_camera_reference"]["opacity_mean"] + 0.25
|
|
146
154
|
)
|
|
@@ -151,7 +159,7 @@ def test_dense_gloomy_scenario_profiles_render_real_drive_sim_samples(
|
|
|
151
159
|
assert metrics["severe_low_contrast_sensor_stress"]["luma_mean"] < (
|
|
152
160
|
metrics["clear_weather_camera_reference"]["luma_mean"] * 0.65
|
|
153
161
|
)
|
|
154
|
-
chromatically_bounded_profiles = SCENARIO_ORDER[:
|
|
162
|
+
chromatically_bounded_profiles = SCENARIO_ORDER[:4]
|
|
155
163
|
assert all(
|
|
156
164
|
0.75 <= metrics[name]["blue_red_ratio"] <= 1.65
|
|
157
165
|
for name in chromatically_bounded_profiles
|
|
@@ -164,7 +172,7 @@ def test_dense_gloomy_scenario_profiles_render_real_drive_sim_samples(
|
|
|
164
172
|
assert metrics["underexposed_dense_gloom"]["blue_red_ratio"] <= 2.5, {
|
|
165
173
|
sample["id"]: metrics
|
|
166
174
|
}
|
|
167
|
-
stress_profiles = SCENARIO_ORDER[
|
|
175
|
+
stress_profiles = SCENARIO_ORDER[4:]
|
|
168
176
|
assert all(
|
|
169
177
|
metrics[name]["blue_minus_red_mean"] <= 0.1 for name in stress_profiles
|
|
170
178
|
), {sample["id"]: metrics}
|
|
@@ -328,7 +336,12 @@ def _render_profile(
|
|
|
328
336
|
profile: dict[str, Any],
|
|
329
337
|
scenario_index: int,
|
|
330
338
|
):
|
|
331
|
-
|
|
339
|
+
# Keep the original five profiles on their historical deterministic seeds
|
|
340
|
+
# when the new clear-weather profile is inserted at the front.
|
|
341
|
+
stable_scenario_index = max(0, scenario_index - 1)
|
|
342
|
+
rng = np.random.default_rng(
|
|
343
|
+
np.random.SeedSequence([1337, stable_scenario_index, 1])
|
|
344
|
+
)
|
|
332
345
|
plan = transform._resolve_render_plan(
|
|
333
346
|
rng,
|
|
334
347
|
scenario=profile,
|
|
@@ -346,6 +359,7 @@ def _render_profile(
|
|
|
346
359
|
intrinsics=sample["intrinsics"]["intrinsics"],
|
|
347
360
|
airlight_method=plan.airlight_method,
|
|
348
361
|
capture_artifacts=plan.capture_artifacts,
|
|
362
|
+
clear_weather=plan.clear_weather,
|
|
349
363
|
)
|
|
350
364
|
|
|
351
365
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/dcp_airlight_torch.py
RENAMED
|
File without changes
|
{euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess/fog/dcp_heuristic_airlight.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{euler_preprocess-3.8.0 → euler_preprocess-3.9.0}/euler_preprocess.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|