Spaces:
Running on Zero
Running on Zero
| #!/usr/bin/env python3 | |
| """Call the public Satellite Vision Toolkit Space from a terminal.""" | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| from pathlib import Path | |
| from gradio_client import Client, handle_file | |
| DEFAULT_SPACE = "Mingze/SatelliteVisionToolkit" | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser(description=__doc__) | |
| parser.add_argument("operation", choices=("classify", "segment", "detect", "analyze")) | |
| parser.add_argument("image", type=Path) | |
| parser.add_argument("--space", default=DEFAULT_SPACE) | |
| parser.add_argument("--output", type=Path) | |
| parser.add_argument("--confidence", type=float, default=0.25) | |
| parser.add_argument("--iou", type=float, default=0.45) | |
| parser.add_argument("--opacity", type=float, default=0.55) | |
| parser.add_argument("--min-share", type=float, default=0.1) | |
| parser.add_argument("--top-k", type=int, default=5) | |
| return parser.parse_args() | |
| def main() -> int: | |
| args = parse_args() | |
| if not args.image.is_file(): | |
| raise SystemExit(f"Image not found: {args.image}") | |
| client = Client(args.space) | |
| if args.operation == "classify": | |
| result = client.predict( | |
| handle_file(str(args.image)), | |
| args.top_k, | |
| api_name="/classify", | |
| ) | |
| elif args.operation == "detect": | |
| result = client.predict( | |
| handle_file(str(args.image)), | |
| args.confidence, | |
| args.iou, | |
| api_name="/detect", | |
| ) | |
| elif args.operation == "segment": | |
| result = client.predict( | |
| handle_file(str(args.image)), | |
| args.opacity, | |
| args.min_share, | |
| api_name="/segment", | |
| ) | |
| else: | |
| result = client.predict( | |
| handle_file(str(args.image)), | |
| args.top_k, | |
| args.opacity, | |
| args.min_share, | |
| args.confidence, | |
| args.iou, | |
| api_name="/analyze", | |
| ) | |
| rendered = json.dumps(result, ensure_ascii=False, indent=2, default=str) | |
| if args.output: | |
| args.output.write_text(rendered + "\n", encoding="utf-8") | |
| else: | |
| print(rendered) | |
| return 0 | |
| if __name__ == "__main__": | |
| raise SystemExit(main()) | |