Parali is a real-time stubble burning detection platform for northern India. It combines Sentinel-2 satellite imagery, a fine-tuned Vision Language Model, and live NASA FIRMS fire data to give district officers, enforcement teams, and researchers a tool that actually works — instead of a government dashboard that misses 96% of fires.
Built for the Liquid Space Hack · May 2026
git clone https://github.com/munish0838/parali
cd parali
npm installCreate .env.local:
FIRMS_MAP_KEY=your_key # free at https://firms.modaps.eosdis.nasa.gov/api/
CDSE_CLIENT_ID=your_client_id # https://dataspace.copernicus.eu/
CDSE_CLIENT_SECRET=your_secret
LLAMA_URL=http://localhost:8080 # llama-server running LFM2.5-VLnpm run dev
# open http://localhost:3000That's it for the frontend + live FIRMS data. Sentinel-2 imagery analysis additionally needs CDSE_CLIENT_ID / CDSE_CLIENT_SECRET. VLM inference needs llama-server (see VLM Setup below).
India's official fire monitoring relies on VIIRS and MODIS satellites that pass at 10:30 AM and 1:30 PM. By 2025, over 90% of large crop fires in Punjab were being lit after 3 PM — after every government satellite had already passed. A 2025 CEEW field study found 169 burnt fields in Sangrur district over two days. The government's system detected 7.
Three approaches exist. None of them scale:
| Approach | Why it fails |
|---|---|
| Satellite monitoring (VIIRS/MODIS) | Fixed overpass times — farmers burn at 3 PM, satellites already gone |
| Ground deployment | Punjab alone has 30+ lakh hectares of paddy — impossible to staff at all hours |
| Farmer incentives (₹2,500/acre) | Unenforceable without verified burn data |
The research proving all of this was published. The Supreme Court cited it. There was just no software.
Every existing tool uses spectral index math (BAIS2, NBR, MIRBI): if a pixel value crosses a threshold, it's called burnt. We fine-tuned LFM2.5-VL-450M on Sentinel-2 SWIR imagery instead. It understands what burn scars vs bare soil vs active fire look like in infrared — and produces a structured assessment:
{
"burn_detected": true,
"burn_severity": "high",
"burn_fraction_estimate": 0.65,
"burn_freshness": "fresh",
"active_smoke_visible": false,
"vegetation_phase": "post_harvest"
}This is, to our knowledge, the first VLM applied to crop burn detection on Sentinel-2. A 2025 ScienceDirect review of remote sensing fire detection methods explicitly identified VLMs as "promising but not yet applied." We applied one.
Sentinel-2 passes every 5 days at 10m resolution. Even if a fire happens after every VIIRS overpass, the scar is still there on the next Sentinel-2 pass. Our model reads it automatically across all 23 tracked districts.
We pull dual-satellite FIRMS data (VIIRS SNPP + NOAA-20) — the same feed the government uses — but display it alongside our burn scar analysis so the coverage gaps are visible rather than hidden.
Sentinel-2 generates ~1.6 TB of imagery per day. Downlinking all of it to detect a few hundred burn patches is massively wasteful. Running our ONNX-exported model directly on a satellite (e.g. NVIDIA Orin) means only a 200-byte JSON alert is transmitted per detected burn — not a 5MB tile. The ONNX export (munish0838/parali-v1-onnx) is satellite-ready today.
┌─────────────────────────────────────────────────────────────┐
│ Next.js Frontend │
│ / Hero + Problem/Solution landing page │
│ /dashboard MapLibre interactive map + point analysis │
│ /monitor Live FIRMS fire hotspot map │
│ /trends 6-year burn trend charts (CREAMS + live) │
└──────────────┬──────────────────────────────────────────────┘
│ API Routes
┌───────────┼───────────────┐
▼ ▼ ▼
/api/firms /api/imagery /api/analyse
NASA FIRMS Copernicus CDSE LFM2.5-VL
live CSV Sentinel-2 tiles VLM inference
│
┌──────────┴──────────┐
│ orchestrator/ │
│ main.py (FastAPI) │
│ Python alternative │
└─────────────────────┘
Imagery pipeline:
- User clicks a point on the map
/api/imageryauthenticates with Copernicus Data Space, fetches RGB + SWIR + fire composites for the nearest cloud-free Sentinel-2 pass (up to 60 days back)/api/analysesends both composites to LFM2.5-VL via llama-server with a structured remote sensing prompt- VLM returns a JSON burn assessment in ~2–4 seconds
- Results render on the map with severity overlay
| Base model | LiquidAI/LFM2.5-VL-450M |
| Fine-tuned weights | munish0838/crop-burn-detector-v2 |
| ONNX export | munish0838/parali-v1-onnx |
| Training notebook | training/01_finetune.ipynb |
| Evaluation notebook | training/02_evaluate_v7.ipynb |
| License | CC-BY-4.0 |
Evaluated on 178 clear-sky held-out test tiles.
| Model | burn_detected | burn_severity | smoke_visible | veg_phase | Overall |
|---|---|---|---|---|---|
| Base LFM2.5-VL-450M | 73.6% | 11.8% | 0.0% | 24.2% | 21.9% |
| Fine-tuned (ours) | 73.6% | 53.9% | 100.0% | 46.6% | 74.8% |
| Δ | — | +42.1pp | +100pp | +22.4pp | +52.9pp |
Primary metric (burn_detected + burn_severity): 42.7% → 63.8% (+21.1pp)
The base model produces valid JSON on every sample but collapses severity predictions to a single dominant class and scores 0% on smoke visibility. Fine-tuning on domain-specific Sentinel-2 pairs corrects the severity distribution and fully unlocks every output field.
| Hyperparameter | Value |
|---|---|
| Method | LoRA (rank 32, alpha 32, dropout 0.05) |
| Trainable parameters | 16.3M / 465M (3.5%) |
| Epochs | 5 |
| Learning rate | 2e-5 (cosine decay + 5% warmup) |
| Effective batch size | 16 (batch=1, grad_accum=16) |
| Precision | BF16 |
| Loss | Class-balanced cross-entropy (no-burn weight ×1.86) |
| GPU | NVIDIA RTX A4000 (16 GB) |
| Training time | ~16 min |
| Raw imagery | munish0838/crop-burn-detection-raw |
| Labelled (training) | munish0838/crop-burn-detection-labeled |
| Total samples | 1,370 (1,103 train / 267 test) |
| Coverage | 55 districts · 5 Indian states · 22–31.7°N, 73.6–83.7°E |
| Date range | March – November 2025 |
| Tile size | 5km × 5km Sentinel-2 tiles (RGB + SWIR) |
| Source | DPhi SimSat API → ESA Copernicus |
# Download the fine-tuned ONNX model
huggingface-cli download munish0838/parali-v1-onnx
# Or run via llama-server with the merged weights
llama-server \
--model path/to/lfm2.5-vl-merged.gguf \
--port 8080 \
--ctx-size 4096 \
--n-gpu-layers 99cd orchestrator
pip install -r requirements.txt
uvicorn main:app --reload --port 8000| Variable | Required | Description |
|---|---|---|
FIRMS_MAP_KEY |
Yes (for live fire data) | Free at firms.modaps.eosdis.nasa.gov/api |
CDSE_CLIENT_ID |
Yes (for imagery) | dataspace.copernicus.eu |
CDSE_CLIENT_SECRET |
Yes (for imagery) | Same as above |
LLAMA_URL |
Yes (for VLM) | llama-server endpoint, default http://localhost:8080 |
SIMSAT_URL |
No | DPhi SimSat endpoint (used during training) |
| Route | Description |
|---|---|
/ |
Landing page — problem, solution, live stats |
/dashboard |
Interactive Sentinel-2 map — click any field to get a live AI burn assessment |
/monitor |
Live NASA FIRMS fire hotspots across northern India |
/trends |
District-level burn trends 2020–2026, toggle years, compare states |
// Request
{ "lat": 30.12, "lon": 75.34, "district": "Sangrur" }
// Response
{
"image_available": true,
"prediction": {
"burn_detected": true,
"burn_severity": "moderate",
"burn_fraction_estimate": 0.35,
"burn_freshness": "recent",
"active_smoke_visible": false,
"vegetation_phase": "post_harvest",
"image_quality_limited": false
},
"latency_s": 2.4
}Fetches Sentinel-2 RGB, SWIR, and fire composites from Copernicus for a given lat/lon and date.
Returns VIIRS dual-satellite fire counts by state for the last 1–5 days.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 · React 19 · TypeScript |
| Styling | Tailwind CSS v4 |
| Animation | Framer Motion |
| Maps | MapLibre GL |
| Charts | Recharts |
| ML inference | LFM2.5-VL via llama-server · ONNX export |
| Satellite imagery | ESA Copernicus Data Space (Sentinel-2 L2A) |
| Live fire data | NASA FIRMS · VIIRS SNPP + NOAA-20 |
| Historical data | CREAMS / IARI · 2020–2025 |
| Training data | DPhi SimSat /data/image/sentinel |
| Orchestrator | FastAPI · Python 3.11+ |
| Source | Use |
|---|---|
| NASA FIRMS | Live fire hotspots — VIIRS SNPP + NOAA-20, 375m NRT |
| ESA Sentinel-2 | 10m multispectral imagery via Copernicus Data Space |
| CREAMS / IARI | Historical crop fire data, 2020–2025 |
| CEEW | Field validation — 169 vs 7 burnt field study, Oct 2025 |
| iFOREST | Satellite timing exploitation analysis, 2025 |