Spaces:
Running
Running
| """Prompt templates for space debris localization tasks.""" | |
| from dataclasses import dataclass | |
| class PromptTemplate: | |
| """A reusable prompt template with metadata.""" | |
| name: str | |
| template: str | |
| description: str | |
| category: str | |
| DETECTION_TEMPLATES: list[PromptTemplate] = [ | |
| PromptTemplate( | |
| name="debris_single", | |
| template="Locate a single instance that matches the following description: {phrase}.", | |
| description="Locate one instance of a specific object", | |
| category="grounding", | |
| ), | |
| PromptTemplate( | |
| name="debris_multi", | |
| template="Locate all the instances that match the following description: {phrase}.", | |
| description="Locate all instances of a specific object type", | |
| category="detection", | |
| ), | |
| PromptTemplate( | |
| name="debris_categories", | |
| template="Locate all the instances that matches the following description: {categories}.", | |
| description="Detect multiple object categories at once", | |
| category="detection", | |
| ), | |
| PromptTemplate( | |
| name="text_grounding", | |
| template="Please locate the text referred as {phrase}.", | |
| description="Locate text labels or markings in the image", | |
| category="text", | |
| ), | |
| PromptTemplate( | |
| name="scene_text", | |
| template="Detect all the text in box format.", | |
| description="Detect all visible text in the scene", | |
| category="text", | |
| ), | |
| ] | |
| SPACE_DEBRIS_EXAMPLES: list[dict[str, str]] = [ | |
| { | |
| "phrase": "space debris", | |
| "prompt": "Locate all the instances that match the following description: space debris.", | |
| "description": "Find all visible space debris fragments", | |
| }, | |
| { | |
| "phrase": "satellite fragment", | |
| "prompt": "Locate all the instances that match the following description: satellite fragment.", | |
| "description": "Identify broken satellite pieces", | |
| }, | |
| { | |
| "phrase": "solar panel", | |
| "prompt": "Locate all the instances that match the following description: solar panel.", | |
| "description": "Find satellite solar panels", | |
| }, | |
| { | |
| "phrase": "antenna", | |
| "prompt": "Locate all the instances that match the following description: antenna.", | |
| "description": "Locate spacecraft antennas", | |
| }, | |
| { | |
| "phrase": "rocket body", | |
| "prompt": "Locate all the instances that match the following description: rocket body.", | |
| "description": "Find spent rocket stages", | |
| }, | |
| { | |
| "phrase": "spacecraft", | |
| "prompt": "Locate a single instance that matches the following description: spacecraft.", | |
| "description": "Locate a single spacecraft", | |
| }, | |
| { | |
| "phrase": "debris field", | |
| "prompt": "Locate all the instances that match the following description: debris field.", | |
| "description": "Find clusters of orbital debris", | |
| }, | |
| { | |
| "phrase": "thermal blanket", | |
| "prompt": "Locate all the instances that match the following description: thermal blanket.", | |
| "description": "Find loose thermal insulation material", | |
| }, | |
| ] | |
| def build_detect_prompt(categories: list[str]) -> str: | |
| """Build a multi-category detection prompt.""" | |
| joined = "</c>".join(categories) | |
| return f"Locate all the instances that matches the following description: {joined}." | |
| def build_grounding_prompt(phrase: str, *, single: bool = False) -> str: | |
| """Build a phrase grounding prompt.""" | |
| if single: | |
| return f"Locate a single instance that matches the following description: {phrase}." | |
| return f"Locate all the instances that match the following description: {phrase}." | |
| def get_example_prompts() -> list[list[str]]: | |
| """Return example prompts for Gradio examples component.""" | |
| return [[ex["prompt"]] for ex in SPACE_DEBRIS_EXAMPLES] | |