Gate YOLO tile labels by visible ratio
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-07-09 13:12:33 +02:00
parent c4a2e13d43
commit a20d9b70c7
8 changed files with 93 additions and 4 deletions
@@ -38,6 +38,7 @@ def test_operator_yolo_tile_dataset_export_script_contract() -> None:
assert "tile_size" in script
assert "stride" in script
assert "negative_keep_ratio" in script
assert "min_label_visible_ratio" in script
assert "positive_tile_count" in script
assert "negative_tile_count" in script
assert "skipped_negative_tile_count" in script
@@ -64,6 +65,7 @@ def test_operator_yolo_tile_dataset_export_help_does_not_require_gis_dependencie
assert "--tile-size" in result.stdout
assert "--stride" in result.stdout
assert "--negative-keep-ratio" in result.stdout
assert "--min-label-visible-ratio" in result.stdout
assert "--background-negative-repeat" in result.stdout
@@ -96,6 +98,28 @@ def test_negative_tile_keep_is_deterministic_and_ratio_bound() -> None:
assert not any(none_kept)
def test_labels_for_tile_can_drop_tiny_visible_box_fragments() -> None:
module = load_tile_exporter()
tile = module.TileWindow(row_off=0, col_off=0, height=100, width=100)
mostly_outside_box = module.PixelBox(min_col=90, min_row=10, max_col=190, max_row=90)
labels_without_gate = module.labels_for_tile(
tile,
[mostly_outside_box],
min_label_px=4,
min_visible_ratio=0.0,
)
labels_with_gate = module.labels_for_tile(
tile,
[mostly_outside_box],
min_label_px=4,
min_visible_ratio=0.25,
)
assert labels_without_gate == ["0 0.95000000 0.50000000 0.10000000 0.80000000"]
assert labels_with_gate == []
def test_background_negative_repeat_only_applies_to_training_background_tiles() -> None:
module = load_tile_exporter()