Download code/labeling/src/label.py from lsh9034/ci-net: direct link, hf CLI and curl.
- Browser
- Download file 2.4 kB
-
https://huggingface.co/lsh9034/ci-net/resolve/main/code/labeling/src/label.py
- Command line
-
hf download hf://lsh9034/ci-net/code/labeling/src/label.py
-
curl -L -o label.py https://huggingface.co/lsh9034/ci-net/resolve/main/code/labeling/src/label.py
2.4 kB
| """Run the three labeling stages in order.""" | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| import subprocess | |
| import sys | |
| from pathlib import Path | |
| from src.config import load_config | |
| STAGES = ( | |
| ("step1", "src.step1_region_growing", "step1_region_growing"), | |
| ("step2", "src.step2_temporal_overlap", "step2_temporal_overlap"), | |
| ("step3", "src.step3_mature_cloud_masking", "step3_mature_cloud_masking"), | |
| ) | |
| def main(argv: list[str] | None = None) -> None: | |
| parser = argparse.ArgumentParser(description="Run all CI-Net labeling stages.") | |
| parser.add_argument("--config", required=True, help="Master YAML configuration path") | |
| parser.add_argument("--device", default=None, help="Accepted for a common CLI; labeling runs on CPU") | |
| parser.add_argument("--output-dir", default=None, help="Override the configured labeling output root") | |
| args = parser.parse_args(argv) | |
| config = load_config(args.config) | |
| output_root = Path(args.output_dir or config["output_dir"]).resolve() | |
| output_root.mkdir(parents=True, exist_ok=True) | |
| configs = config.get("stages", {}) | |
| previous_output: Path | None = None | |
| for name, module, output_name in STAGES: | |
| stage = dict(configs[name]) | |
| stage_output = output_root / output_name | |
| if name == "step1": | |
| stage["output_root"] = str(stage_output) | |
| stage["input_root"] = str(Path(config["input_root"]).resolve()) | |
| elif name == "step2": | |
| stage["region_root"] = str(previous_output) | |
| stage["bt_root"] = str(Path(config["input_root"]).resolve()) | |
| stage["output_dir"] = str(stage_output) | |
| else: | |
| stage["label_root"] = str(previous_output) | |
| stage["links_root"] = str(previous_output) | |
| stage["bt_root"] = str(Path(config["input_root"]).resolve()) | |
| stage["hsr_root"] = str(Path(config["input_root"]).resolve()) | |
| stage["output_dir"] = str(stage_output) | |
| runtime = output_root / f"{name}_runtime.json" | |
| with runtime.open("w", encoding="utf-8") as stream: | |
| json.dump(stage, stream, indent=2, ensure_ascii=False) | |
| try: | |
| subprocess.run([sys.executable, "-m", module, "--config", str(runtime)], check=True) | |
| finally: | |
| runtime.unlink(missing_ok=True) | |
| previous_output = stage_output | |
| if __name__ == "__main__": | |
| main() | |