Spaces:
Running on Zero
Running on Zero
File size: 2,248 Bytes
9fd4f34 edf7ac3 9fd4f34 edf7ac3 9fd4f34 edf7ac3 9fd4f34 edf7ac3 9fd4f34 edf7ac3 9fd4f34 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #!/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())
|