Multi-Sensor Fusion for Autonomous Building Height Estimation & Disaster Vulnerability Mapping in Smart Cities
Team Binary Blackhole | Cosmix Abhisarga 2026 | Track 3: Multi-Sensor Fusion | IIIT Sri City
UrbanSAR fuses Synthetic Aperture Radar (SAR) and optical satellite imagery to autonomously estimate building heights and classify disaster vulnerability β optimized for edge deployment and real-time disaster response.
Pipeline: Multi-Sensor Fusion Engine β Height Estimation & Classification β Interactive Smart City Dashboard
pip install -r requirements.txtPrimary (AWS S3):
aws s3 cp s3://spacenet-dataset/spacenet/SN6_buildings/ ./data/raw/ --recursive --no-sign-request
β οΈ If--no-sign-requestfails with "Access Denied":
- Create free AWS account: https://aws.amazon.com/
- Run
aws configure- Retry without
--no-sign-request
Or use the download script:
python data/download_data.pypython scripts/select_chips.py --num-chips 200On Kaggle / Google Colab (GPU required):
python training/train.py --chips-file data/processed/chips/chips_metadata.csv --epochs 50# Demo data (for testing dashboard without trained model)
python scripts/generate_fallbacks.py
# From trained model
python scripts/generate_fallbacks.py --from-modelstreamlit run dashboard/app.pyUrbanSAR/
βββ config.py # Central configuration
βββ requirements.txt # Python dependencies
βββ data/
β βββ download_data.py # SpaceNet-6 download (AWS S3 / Kaggle)
β βββ loader.py # GeoTIFF + label loading
β βββ preprocessing.py # Lee speckle filter, radiometric norm
β βββ dataset.py # PyTorch Dataset (dual-input)
βββ models/
β βββ dual_branch_cnn.py # ResNet18 dual-branch fusion model
β βββ vulnerability.py # Height β vulnerability tier classifier
β βββ shadow_fallback.py # SAR shadow geometry fallback (Plan B)
βββ training/
β βββ train.py # Training loop (FP16, checkpointing)
β βββ evaluate.py # Metrics + comparison tables
βββ dashboard/
β βββ app.py # Streamlit main app (4 pages)
β βββ map_view.py # Folium interactive map
β βββ charts.py # Plotly visualizations
βββ utils/
β βββ fallback.py # JSON fallback save/load
β βββ geo_utils.py # Geospatial helpers
βββ scripts/
β βββ select_chips.py # Chip selection + cropping
β βββ generate_fallbacks.py # Generate demo/model fallback data
βββ checkpoints/ # Trained model files
βββ fallback_data/ # JSON fallback outputs
βββ logs/ # Training logs
| Layer | Tools |
|---|---|
| AI/ML | PyTorch, ResNet18 (fine-tuned), FP16 quantization |
| Data | SpaceNet-6, Rasterio, Rioxarray, GeoPandas |
| Dashboard | Streamlit, Folium, Plotly |
Height-based proxy heuristic for rapid triage:
| Tier | Height Range | Description |
|---|---|---|
| π΄ Critical Risk | < 10m (1-3 floors) | Likely submerged in severe flooding |
| π‘ Moderate Risk | 10-25m (4-8 floors) | Partial flood exposure |
| π’ Evacuation Safe | > 25m (9+ floors) | Viable for vertical evacuation |
Note: This is a height-based proxy. Real vulnerability depends on construction type, materials, and local conditions.
At every phase boundary, prediction outputs are cached as JSON. If any component fails during demo, the dashboard seamlessly loads cached results.
| Role | Name |
|---|---|
| Architecture, implementation & all code | Vikhyat Gupta |
| Ideation & presentation | Mohit Choudhary |
Team Binary Blackhole β Vikhyat Gupta & Mohit Choudhary
π§ vikhyatg7@gmail.com