Spaces:
Paused
Paused
Download app.py from Bireswar26/GeoChat: direct link, hf CLI and curl.
- Browser
- Download file 2.58 kB
-
https://huggingface.co/spaces/Bireswar26/GeoChat/resolve/main/app.py
- Command line
-
hf download hf://spaces/Bireswar26/GeoChat/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Bireswar26/GeoChat/resolve/main/app.py
2.58 kB
| from __future__ import annotations | |
| import gradio as gr | |
| import spaces | |
| from geochat.inference.engine import GeoChatEngine | |
| from geochat.inference.sar import load_image_input, sar1_to_rgb | |
| # ------------------------------------------------------------ | |
| # Load GeoChat once at Space startup. | |
| # ------------------------------------------------------------ | |
| print("[Akasha] Loading GeoChat...") | |
| engine = GeoChatEngine() | |
| print("[Akasha] GeoChat ready.") | |
| # ------------------------------------------------------------ | |
| # Gradio inference function | |
| # ------------------------------------------------------------ | |
| def geochat( | |
| image: str, | |
| prompt: str, | |
| max_new_tokens: int, | |
| sar_vh: str | None = None, | |
| ) -> str: | |
| if image is None: | |
| raise ValueError("Image is required.") | |
| try: | |
| image = sar1_to_rgb(image, sar_vh) if sar_vh else load_image_input(image) | |
| except ValueError: | |
| raise | |
| except Exception as exc: | |
| raise ValueError("Unable to process the supplied image.") from exc | |
| if not prompt or not prompt.strip(): | |
| raise ValueError("Prompt must not be empty.") | |
| max_new_tokens = int(max_new_tokens) | |
| if not 1 <= max_new_tokens <= 512: | |
| raise ValueError( | |
| "max_new_tokens must be between 1 and 512." | |
| ) | |
| return engine.generate( | |
| image=image, | |
| prompt=prompt, | |
| max_new_tokens=max_new_tokens, | |
| ) | |
| # ------------------------------------------------------------ | |
| # Gradio application | |
| # ------------------------------------------------------------ | |
| demo = gr.Interface( | |
| fn=geochat, | |
| inputs=[ | |
| gr.File( | |
| type="filepath", | |
| label="Satellite Image / TIFF / GeoTIFF", | |
| ), | |
| gr.Textbox( | |
| label="Prompt", | |
| value="Describe the visible features in this satellite image.", | |
| lines=3, | |
| ), | |
| gr.Slider( | |
| minimum=1, | |
| maximum=512, | |
| value=128, | |
| step=1, | |
| label="Max New Tokens", | |
| ), | |
| gr.File( | |
| type="filepath", | |
| label="Optional SAR VH (pair with VV in first input)", | |
| ), | |
| ], | |
| outputs=gr.Textbox( | |
| label="GeoChat Response", | |
| lines=8, | |
| ), | |
| title="Akasha GeoChat", | |
| description="GeoChat specialist for satellite image analysis.", | |
| api_name="geochat", | |
| ) | |
| # ------------------------------------------------------------ | |
| # Launch | |
| # ------------------------------------------------------------ | |
| if __name__ == "__main__": | |
| demo.launch() | |