test / preprocess.py
aivertex95827's picture
Upload source
6916285 verified
Raw History Blame Contribute Delete
1.38 kB
"""Run only ball/player tracking and soccer-state extraction.
Examples:
python preprocess.py --init-config configs/tracking_states.json
python preprocess.py --config configs/tracking_states.json
"""
from __future__ import annotations
import argparse
import json
from soccer_ad.preprocessing.pipeline import (
load_preprocessing_config,
run_preprocessing,
write_preprocessing_config,
)
from soccer_ad.utils.logging import setup_logging
def main() -> int:
parser = argparse.ArgumentParser(description="Soccer ball/player tracking and state extraction")
choice = parser.add_mutually_exclusive_group(required=True)
choice.add_argument("--config", help="JSON preprocessing configuration")
choice.add_argument("--init-config", metavar="PATH", help="write an editable JSON template and exit")
parser.add_argument("--log-level", default="INFO")
args = parser.parse_args()
setup_logging(args.log_level)
if args.init_config:
path = write_preprocessing_config(args.init_config)
print(f"wrote {path}")
return 0
try:
report = run_preprocessing(load_preprocessing_config(args.config))
except Exception as exc:
parser.error(str(exc))
print(json.dumps(report, indent=2))
return 0 if report["summary"]["failed"] == 0 else 1
if __name__ == "__main__":
raise SystemExit(main())