An autonomous, agentic framework for analyzing single, bi-temporal, and multimodal satellite imagery through natural-language queries.
SatQuery AI is an advanced multimodal remote-sensing and geospatial intelligence system developed for the ISRO AI Hackathon.
Rather than deploying a generic vision-language model, SatQuery implements an Autonomous Agentic Orchestration Pipeline. It interprets natural language intent, dynamically plans and coordinates specialized remote sensing analytical tools (Bi-Temporal Change Detection, Optical-SAR Fusion, Spatial Alignment, Coordinate Grounding), and queries a domain-adapted 7B Remote-Sensing VLM (RS-LLaVA-1.5-7B) fine-tuned on BigEarthNet and satellite VQA datasets.
Every response is anchored in a verifiable Evidence Graph, tying each natural language insight to exact pixel coordinates, Affine transforms, and deterministic tool outputs with zero hallucinations.
BigData-KSU/RS-llava-v1.5-7b-LoRA loaded in 4-bit NF4 quantization for low-latency GPU inference (~5.5 GB VRAM footprint).SatQuery AI includes automated benchmark evaluation suites tested on real GPU hardware against standard Remote Sensing VQA datasets:
| Metric | VRSBench / RS-VQA Benchmark |
|---|---|
| Model Evaluated | BigData-KSU/RS-llava-v1.5-7b-LoRA (4-Bit Quantized) |
| Overall VQA Accuracy | 75.00% |
| BLEU-1 Semantic Relevance | 75.00% |
| Concept Coverage Rate | 79.20% |
| Inference Latency | ~1.8s per raster on T4 GPU |
Raw benchmark telemetry and predictions are automatically exported to benchmark_results.json.
Judges can evaluate and test SatQuery AI using either Google Colab (Free GPU) or Local CLI / Docker.
To run the complete system with the 7B Neural VLM on a free T4 GPU in Google Colab:
!git clone https://github.com/ainaanraza/SatQuery.git /content/GeoChat
%cd /content/GeoChat
!pip install fastapi uvicorn pydantic rasterio transformers accelerate bitsandbytes peft
You can evaluate the model against VRSBench or any remote-sensing dataset split:
# Run 20-sample benchmark evaluation on VRSBench
!python -m satquery.evaluation.benchmark --dataset /content/data/VRSBench --provider hf_llava --samples 20
Run this Python snippet to start the server in the background and generate a live tunnel:
import subprocess, time, urllib.request, re, os
os.environ["SATQUERY_MODEL_PROVIDER"] = "hf_llava"
os.environ["SATQUERY_ENV"] = "production"
!pkill -9 -f uvicorn
!pkill -9 -f cloudflared
if not os.path.exists("/content/cloudflared-linux-amd64"):
!wget -q -O /content/cloudflared-linux-amd64 https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
!chmod +x /content/cloudflared-linux-amd64
subprocess.Popen(["python", "-m", "uvicorn", "satquery.api.app:app", "--host", "0.0.0.0", "--port", "8000"], cwd="/content/GeoChat")
time.sleep(3)
subprocess.Popen(["/content/cloudflared-linux-amd64", "tunnel", "--url", "http://127.0.0.1:8000", "--metrics", "127.0.0.1:8099"])
for _ in range(15):
time.sleep(1)
try:
metrics = urllib.request.urlopen("http://127.0.0.1:8099/metrics", timeout=2).read().decode()
match = re.search(r'userHostname="(https://[a-zA-Z0-9\-]+\.trycloudflare\.com)"', metrics)
if match:
print(f"\n🚀 LIVE API URL: {match.group(1)}")
break
except Exception:
pass
https://...trycloudflare.com URL.satquery/frontend/app.js, set const API_BASE_URL = '<YOUR_URL>'; (Line 1).satquery/frontend/index.html in your browser to test the interactive mission control dashboard.SatQuery AI provides native recursive evaluation loaders for major remote sensing benchmark datasets:
# Clone VRSBench test suite
git clone https://github.com/lx709/VRSBench.git /content/data/VRSBench
# Run benchmark evaluation
python -m satquery.evaluation.benchmark --dataset /content/data/VRSBench --provider hf_llava --samples 50
python -m satquery.evaluation.benchmark --dataset /path/to/RSVQA --provider hf_llava --samples 50
python -m satquery.evaluation.benchmark --dataset /path/to/CDVQA --provider hf_llava --samples 50
Place your own .tif / .tiff satellite files into the directory and evaluate:
python -m satquery.agent_cli --query "Describe the agricultural density, water bodies, and roads" --image demo_satellite.tif
You can run agent queries directly from your terminal:
# Single-image remote sensing query
python -m satquery.agent_cli --query "Identify all maritime structures and docks" --image test1.tif
# Bi-temporal change detection query
python -m satquery.agent_cli --query "Detect new construction between T1 and T2" --image-before demo_satellite.tif --image-after test1.tif
# Generate synthetic test rasters
python -m satquery.create_demo_raster
SatQuery AI Architecture:
├── Geospatial Core: Memory-Safe Raster Ingestion (Rasterio), Multi-Band Normalization, CRS
├── Agentic Core: Intent Parser, Dynamic Task Planner, Capability-Based Executor
├── Analytical Tools: Optical/SAR Fusion, Bi-Temporal Change Detection, TemporalSeries Engine
├── Intelligence Layer: HuggingFace Provider Registry, 4-Bit RS-LLaVA VLM (BigEarthNet)
├── Verification Layer: Verifiable Coordinate Grounding, EvidenceGraph, Zero-Hallucination Guard
└── Interface Layer: FastAPI Async Job API, Mission Control Glassmorphic Web Dashboard
├── satquery/
│ ├── agent/ # Autonomous Agent (Planner, IntentParser, Executor)
│ ├── api/ # FastAPI REST server endpoints
│ ├── evaluation/ # BenchmarkEngine, VRSBench/RSVQA evaluation suite
│ ├── evidence/ # Evidence Graph data structures & verification
│ ├── frontend/ # Mission Control Dashboard (HTML, CSS, JS)
│ ├── inputs/ # Memory-safe GeoTIFF raster loaders (Rasterio)
│ ├── models/ # Provider abstraction & RS-LLaVA 4-bit integration
│ ├── tools/ # Change detection, SAR fusion, preview tools
│ └── create_demo_raster.py # Multi-band GeoTIFF test generator
├── docs/ # Phase audit and architecture reports
├── benchmark_results.json # Official VRSBench benchmark output artifact
└── README.md
Built for the ISRO Remote Sensing.
21 commits
Python
91.6%
CSS
3.1%
Shell
2.0%
HTML
1.8%
JavaScript
1.5%
An autonomous, agentic framework for analyzing single, bi-temporal, and multimodal satellite imagery through natural-language queries.
SatQuery AI is an advanced multimodal remote-sensing and geospatial intelligence system developed for the ISRO AI Hackathon.
Rather than deploying a generic vision-language model, SatQuery implements an Autonomous Agentic Orchestration Pipeline. It interprets natural language intent, dynamically plans and coordinates specialized remote sensing analytical tools (Bi-Temporal Change Detection, Optical-SAR Fusion, Spatial Alignment, Coordinate Grounding), and queries a domain-adapted 7B Remote-Sensing VLM (RS-LLaVA-1.5-7B) fine-tuned on BigEarthNet and satellite VQA datasets.
Every response is anchored in a verifiable Evidence Graph, tying each natural language insight to exact pixel coordinates, Affine transforms, and deterministic tool outputs with zero hallucinations.
BigData-KSU/RS-llava-v1.5-7b-LoRA loaded in 4-bit NF4 quantization for low-latency GPU inference (~5.5 GB VRAM footprint).SatQuery AI includes automated benchmark evaluation suites tested on real GPU hardware against standard Remote Sensing VQA datasets:
| Metric | VRSBench / RS-VQA Benchmark |
|---|---|
| Model Evaluated | BigData-KSU/RS-llava-v1.5-7b-LoRA (4-Bit Quantized) |
| Overall VQA Accuracy | 75.00% |
| BLEU-1 Semantic Relevance | 75.00% |
| Concept Coverage Rate | 79.20% |
| Inference Latency | ~1.8s per raster on T4 GPU |
Raw benchmark telemetry and predictions are automatically exported to benchmark_results.json.
Judges can evaluate and test SatQuery AI using either Google Colab (Free GPU) or Local CLI / Docker.
To run the complete system with the 7B Neural VLM on a free T4 GPU in Google Colab:
!git clone https://github.com/ainaanraza/SatQuery.git /content/GeoChat
%cd /content/GeoChat
!pip install fastapi uvicorn pydantic rasterio transformers accelerate bitsandbytes peft
You can evaluate the model against VRSBench or any remote-sensing dataset split:
# Run 20-sample benchmark evaluation on VRSBench
!python -m satquery.evaluation.benchmark --dataset /content/data/VRSBench --provider hf_llava --samples 20
Run this Python snippet to start the server in the background and generate a live tunnel:
import subprocess, time, urllib.request, re, os
os.environ["SATQUERY_MODEL_PROVIDER"] = "hf_llava"
os.environ["SATQUERY_ENV"] = "production"
!pkill -9 -f uvicorn
!pkill -9 -f cloudflared
if not os.path.exists("/content/cloudflared-linux-amd64"):
!wget -q -O /content/cloudflared-linux-amd64 https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
!chmod +x /content/cloudflared-linux-amd64
subprocess.Popen(["python", "-m", "uvicorn", "satquery.api.app:app", "--host", "0.0.0.0", "--port", "8000"], cwd="/content/GeoChat")
time.sleep(3)
subprocess.Popen(["/content/cloudflared-linux-amd64", "tunnel", "--url", "http://127.0.0.1:8000", "--metrics", "127.0.0.1:8099"])
for _ in range(15):
time.sleep(1)
try:
metrics = urllib.request.urlopen("http://127.0.0.1:8099/metrics", timeout=2).read().decode()
match = re.search(r'userHostname="(https://[a-zA-Z0-9\-]+\.trycloudflare\.com)"', metrics)
if match:
print(f"\n🚀 LIVE API URL: {match.group(1)}")
break
except Exception:
pass
https://...trycloudflare.com URL.satquery/frontend/app.js, set const API_BASE_URL = '<YOUR_URL>'; (Line 1).satquery/frontend/index.html in your browser to test the interactive mission control dashboard.SatQuery AI provides native recursive evaluation loaders for major remote sensing benchmark datasets:
# Clone VRSBench test suite
git clone https://github.com/lx709/VRSBench.git /content/data/VRSBench
# Run benchmark evaluation
python -m satquery.evaluation.benchmark --dataset /content/data/VRSBench --provider hf_llava --samples 50
python -m satquery.evaluation.benchmark --dataset /path/to/RSVQA --provider hf_llava --samples 50
python -m satquery.evaluation.benchmark --dataset /path/to/CDVQA --provider hf_llava --samples 50
Place your own .tif / .tiff satellite files into the directory and evaluate:
python -m satquery.agent_cli --query "Describe the agricultural density, water bodies, and roads" --image demo_satellite.tif
You can run agent queries directly from your terminal:
# Single-image remote sensing query
python -m satquery.agent_cli --query "Identify all maritime structures and docks" --image test1.tif
# Bi-temporal change detection query
python -m satquery.agent_cli --query "Detect new construction between T1 and T2" --image-before demo_satellite.tif --image-after test1.tif
# Generate synthetic test rasters
python -m satquery.create_demo_raster
SatQuery AI Architecture:
├── Geospatial Core: Memory-Safe Raster Ingestion (Rasterio), Multi-Band Normalization, CRS
├── Agentic Core: Intent Parser, Dynamic Task Planner, Capability-Based Executor
├── Analytical Tools: Optical/SAR Fusion, Bi-Temporal Change Detection, TemporalSeries Engine
├── Intelligence Layer: HuggingFace Provider Registry, 4-Bit RS-LLaVA VLM (BigEarthNet)
├── Verification Layer: Verifiable Coordinate Grounding, EvidenceGraph, Zero-Hallucination Guard
└── Interface Layer: FastAPI Async Job API, Mission Control Glassmorphic Web Dashboard
├── satquery/
│ ├── agent/ # Autonomous Agent (Planner, IntentParser, Executor)
│ ├── api/ # FastAPI REST server endpoints
│ ├── evaluation/ # BenchmarkEngine, VRSBench/RSVQA evaluation suite
│ ├── evidence/ # Evidence Graph data structures & verification
│ ├── frontend/ # Mission Control Dashboard (HTML, CSS, JS)
│ ├── inputs/ # Memory-safe GeoTIFF raster loaders (Rasterio)
│ ├── models/ # Provider abstraction & RS-LLaVA 4-bit integration
│ ├── tools/ # Change detection, SAR fusion, preview tools
│ └── create_demo_raster.py # Multi-band GeoTIFF test generator
├── docs/ # Phase audit and architecture reports
├── benchmark_results.json # Official VRSBench benchmark output artifact
└── README.md
Built for the ISRO Remote Sensing.
21 commits
Python
91.6%
CSS
3.1%
Shell
2.0%
HTML
1.8%
JavaScript
1.5%