π 4th Place β ISRO GeoNLI, Inter-IIT Tech Meet 14.0
π₯ Overall Champions β IIT Kharagpur
The proliferation of satellite constellations and high-resolution aerial platforms has generated unprecedented volumes of Remote Sensing (RS) imagery, yet effective natural language interaction with such data remains a significant challenge. DRISHTI is a unified Vision-Language Model (VLM) framework enabling intuitive natural language interaction with RS imagery across varied resolutions, sensor modalities, and downstream tasks.
DRISHTI addresses three critical gaps in existing RS-VLM research:
- DRISHTI-GCV Dataset β A large-scale, difficulty-aware dataset (~180K samples) spanning Grounding, Captioning, and VQA
- Two-Stage Curriculum Learning β LoRA-tuned backbone + DPO alignment for hallucination reduction
- Numeric Reasoning Pipeline β SAM3-based module with pyramidal tiling for accurate counting and area estimation
Key Results: +40% BERT-BLEU on captioning, +21% VQA accuracy over GeoChat, and state-of-the-art counting performance.
"Is the picture really worth a thousand words?"
The challenge, posed by ISRO Space Applications Centre at Inter-IIT TechMeet 14, is to design a functional prototype that empowers non-expert users to interpret and analyze satellite imagery using natural language.
| Task | Description |
|---|---|
| Image Captioning | Generate descriptive captions for RS scenes |
| Visual Question Answering | Answer semantic, binary, and numeric questions |
| Visual Grounding | Localize objects based on textual queries |
- Multi-resolution data: From sub-meter optical to coarse multispectral products
- Dense object layouts: Thousands of arbitrarily oriented, small objects
- Multi-modal imagery: RGB, SAR, thermal infrared, and multispectral sensors
- Quantitative reasoning: Object counting, size estimation, spatial relationships
See the full problem statement: ISRO_M3_TechMeet14.pdf
| Task | Samples | Resolution Range |
|---|---|---|
| Captioning (Stage I) | ~22k | 256Β²β512Β² |
| Captioning (Stage II) | ~20k | up to 2048Β² |
| Grounding | ~60k | 224Β²β2048Β² |
| VQA (Generalized) | ~30k | 256Β²β512Β² |
| VQA (Specialized) | ~20k | 512Β²β2048Β² |
| SAR (SARLANG) | ~15k | 512Β² |
| Infrared (GeoAI) | ~13k | 1024Β² |
| Total | ~180k | 224Β²β2048Β² |
Source Datasets: VRSBench, Git-10M, RSVQA-LR/HR, OPT-RSVG, RSVG/RSVG-HR, DIOR/DOTA-v2
Stage I: General RS Adaptation
- Base:
Qwen3-VL-8B-Instruct - Method: LoRA fine-tuning (rank=16, Ξ±=32, 4-bit QLoRA)
- Data: DRISHTI-GCV generalized split
Stage II: Task Specialization
- Captioning: SFT on high-density scenes + DPO alignment (Ξ²=0.1)
- VQA: Sub-classification into Semantic/Binary/Numeric
- Grounding: AHG-Net with SAM3 pyramidal tiling
The grounding pipeline proceeds through six distinct stages:
- Subject-Reference Query Decomposition β Separate primary target from spatial anchor
- Pyramidal SAM3 Segmentation β Multi-scale tiling to capture small objects
- Centroid-based Clustering β Greedy box clustering to reduce redundant candidates
- Subject Confidence Estimation β HIGH/MEDIUM/LOW classification
- Chunked VLM Refinement β Iterative verification of ambiguous proposals
- Final Spatial Reasoning β Directional filtering and superlative selection
| Router | Function |
|---|---|
| ResNet-18 Classifier | Visual routing β categorizes imagery (RGB/SAR/IR/FCC) |
| Qwen3-VL-30B | Query routing β dispatches to Captioning/Grounding/VQA pipelines |
| Component | Model | Purpose |
|---|---|---|
| Primary VLM | Qwen3-VL-8B (LoRA) | Captioning, VQA, semantic reasoning |
| Task Router | Qwen3-VL-30B-A3B | Query classification |
| Segmentation | SAM3 + Pyramidal Tiling | Counting, area estimation |
| Modality Detection | ResNet-18 | RGB/SAR/IR/FCC classification |
| FCC Synthesis | Root Polynomial Correction + 3D-LUT | False Color β RGB reconstruction |
For False Color Composite imagery, we:
- Predict spectral identity of each channel using a dual-path classifier
- Identify missing RGB band:
B_miss = {R, G, B} \ {Ε·β, Ε·β, Ε·β} - Reconstruct using Root Polynomial Color Correction (RPCC) for R/G, or 3D-LUT for B
| Model | Generalized (BERT-BLEU) | Specialized (BERT-BLEU) |
|---|---|---|
| Qwen3-VL-8B-Instruct | 0.7066 | 0.7199 |
| InternVL3.5-8B | 0.7876 | 0.7347 |
| GPT-4o | β | 0.8174 |
| DRISHTI | 0.8216 | 0.8493 |
| Model | Binary | Numeric | Semantic |
|---|---|---|---|
| GeoChat | 0.764 | 0.356 | β |
| Qwen3-VL-8B | 0.948 | 0.665 | 0.833 |
| DRISHTI | 0.948 | 0.702 | 0.937 |
| Objects | DRISHTI (SAM3 + Pyramidal) | VLM Direct |
|---|---|---|
| 1β10 | 89% | 72% |
| 11β50 | 74% | 41% |
| 51β100 | 61% | 22% |
| 100+ | 48% | 11% |
| Configuration | Binary | Numeric | Semantic |
|---|---|---|---|
| Base Qwen3-VL-8B | 0.684 | 0.381 | 0.703 |
| + Stage I SFT | 0.721 | 0.392 | 0.756 |
| + Stage II SFT | 0.754 | 0.401 | 0.812 |
| + Question Router | 0.768 | 0.518 | 0.835 |
| + SAM3 Numeric | 0.768 | 0.642 | 0.835 |
| + DPO Alignment | 0.779 | 0.642 | 0.860 |
- Python 3.11+
- Node.js 18+
- MongoDB
- Modal account (for GPU inference)
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt # Or: uv pip install -r requirements.txt
cp .env.example .env # Configure API keys
uvicorn app.main:app --reload --port 8000cd frontend
npm install
npm run dev # Starts on http://localhost:3000βββ backend/ # FastAPI + LangGraph Orchestrator
β βββ app/
β β βββ api/routes/ # REST endpoints (orchestrator_routes.py)
β β βββ services/ # Business logic
β β β βββ ir2rgb_service.py # FCC β RGB reconstruction
β β β βββ modality_router.py # ResNet modality detection
β β β βββ modal_client.py # Modal GPU service client
β β βββ orchestrator.py # LangGraph workflow (Task routing)
β βββ modal_services/ # GPU services for Modal deployment
β β βββ sam3_agent.py # SAM3 pyramidal counting/area
β β βββ vllm_modal_deploy.py # vLLM server
β β βββ captioning.py # Specialized captioning model
β β βββ vqa.py # Specialized VQA model
β β βββ grounding.py # AHG-Net grounding
β βββ scripts/ # Utility scripts (LoRA merge)
βββ frontend/ # React/Vite UI
β βββ src/
βββ sam3-agent/ # Full SAM3 library
βββ samples/ # Sample satellite images
βββ docs/ # Reports and diagrams
β βββ DRISHTI_REPORT_FINAL.pdf
β βββ ISRO_M3_TechMeet14.pdf
β βββ architecture.png
β βββ training_pipeline.png
βββ docker-compose.yml # Docker orchestration
| Parameter | Value |
|---|---|
| Base Model | Qwen3-VL-8B-Instruct |
| LoRA Rank (r) | 16 |
| LoRA Alpha (Ξ±) | 32 |
| Quantization | 4-bit QLoRA |
| Effective Batch Size | 256 |
| Learning Rate | 5 Γ 10β»β΅ |
| Optimizer | AdamW-8bit |
| Epochs (Stage I) | 3 |
| Epochs (Stage II) | 2 |
| DPO Ξ² | 0.1 |
- Kuckreja et al., "GeoChat: Grounded Large Vision-Language Model for Remote Sensing," CVPR 2024
- Muhtar et al., "LHRS-Bot: Empowering Remote Sensing with VGI-Enhanced Large Multimodal Language Model," arXiv 2024
- Li et al., "VRSBench: A Versatile Vision-Language Benchmark Dataset for RS Image Understanding," AAAI 2024
- Bai et al., "Qwen3-VL Technical Report," arXiv 2025
- Ren et al., "Grounded SAM: Assembling Open-World Models for Diverse Visual Tasks," arXiv 2024
- Lobry et al., "RSVQA: Visual Question Answering for Remote Sensing Data," arXiv 2020
- Liu et al., "Grounding DINO: Marrying DINO with Grounded Pre-training for Open-Set Object Detection," CVPR 2023
This project was developed by IIT Kharagpur ISRO CV Contingent for the ISRO GeoNLI: Natural Language Interpretation of Satellite Imagery problem statement at Inter-IIT Tech Meet 14.0.
| Achievement | Details |
|---|---|
| Problem Statement Rank | π 4th Place β GeoNLI: Natural Language Interpretation of Satellite Imagery |
| Overall Standing | π₯ Champions β IIT Kharagpur won Inter-IIT Tech Meet 14.0 |
We thank ISRO Space Applications Centre for providing this challenging problem statement that pushes the boundaries of Vision-Language Models in the remote sensing domain. Special thanks to the organizers of Inter-IIT Tech Meet 14.0 for hosting this prestigious competition.
All model weights and code are released under the Apache 2.0 License unless otherwise specified.
| Component | License |
|---|---|
| Qwen3-VL | Apache 2.0 |
| SAM3 | Apache 2.0 |
| ResNet (Torchvision) | BSD 3-Clause |
| Custom Code | Apache 2.0 |
Built with equal parts hard work, questionable sleep schedules, and industrial quantities of energy drinks by the Contingent Team of ISRO CV, IIT Kharagpur β for ISRO GeoNLI Challenge Inter IIT Tech Meet 14.0


