Skip to content

ItsAakif/geovision

Repository files navigation

🛰️ GeoVision

Advanced Geospatial Feature Detection from Satellite Imagery

A comprehensive AI/ML solution for automated detection and analysis of glacial lakes, road networks, and drainage systems from multi-source satellite imagery using state-of-the-art deep learning techniques.

🎯 Overview

GeoVision provides an end-to-end pipeline for automated geospatial feature detection from satellite imagery:

  • 🏔️ Glacial Lakes: Detection and temporal change analysis
  • 🛣️ Road Networks: Centerline extraction and connectivity analysis
  • 🌊 Drainage Systems: Flow modeling and network extraction

✨ Key Features

  • 🛰️ Multi-source Data Support: Sentinel-1/2, Landsat, Resourcesat, LISS
  • 🧠 Advanced AI Models: U-Net, DeepLabV3+, Hybrid CNN-DEM architectures
  • ⏱️ Temporal Analysis: Multi-date change detection
  • 🎛️ Interactive Dashboard: Real-time processing interface
  • 📊 Vector Export: GeoJSON, Shapefile, CSV formats
  • 🚀 Production Ready: Scalable architecture with comprehensive testing

🏗️ Architecture

geovision/
├── data/                    # Data storage
│   ├── raw/                # Raw satellite imagery
│   ├── processed/          # Preprocessed data
│   ├── reference/          # Ground truth data
│   └── outputs/            # Model outputs
├── models/                 # Trained models
│   ├── glacial_lakes/
│   ├── road_centerlines/
│   └── drainage_networks/
├── src/                    # Source code
│   ├── preprocessing/      # Data preprocessing
│   ├── training/          # Model training
│   ├── inference/         # Feature detection
│   ├── postprocessing/    # Post-processing utilities
│   └── utils/             # Utility functions
├── streamlit_app/         # Interactive dashboard
├── notebooks/             # Jupyter notebooks
├── tests/                 # Unit tests
└── configs/               # Configuration files

🚀 Quick Start

Prerequisites

  • Python 3.8+
  • CUDA-capable GPU (recommended)
  • 16GB+ RAM
  • GDAL/OGR libraries

Installation

  1. Clone the repository
git clone https://github.com/username/geovision.git
cd geovision
  1. Install dependencies
pip install -r requirements.txt
  1. Set up GDAL (if not already installed)
# Ubuntu/Debian
sudo apt-get install gdal-bin libgdal-dev

# Windows (using conda)
conda install -c conda-forge gdal

# macOS
brew install gdal
  1. Configure the project
cp configs/development.yaml config.yaml
# Edit config.yaml with your specific settings

🎮 Usage

1. Data Preprocessing

python src/main.py --mode preprocess --input-dir data/raw --output-dir data/processed

2. Model Training

# Train all models
python src/main.py --mode train --feature all --input-dir data/processed --output-dir models

# Train specific feature
python src/main.py --mode train --feature glacial_lakes --input-dir data/processed --output-dir models

3. Feature Detection

python src/main.py --mode inference --feature all --input-dir data/raw --output-dir data/outputs

4. Launch Dashboard

streamlit run streamlit_app/app.py

📊 Dashboard Features

The Streamlit dashboard provides:

  • 🗺️ Interactive Map: Visualize detection results with multiple layers
  • 📈 Temporal Analysis: Track changes over time
  • 🎯 Model Training: Configure and monitor training
  • 📁 Data Explorer: Browse and analyze datasets
  • ⬇️ Export Tools: Download results in various formats

Dashboard Screenshots

[Screenshots would be added here in a real project]

🔬 Model Details

Glacial Lakes Detection

  • Architecture: DeepLabV3+ with ResNet50 backbone
  • Input: RGB + temporal data
  • Output: Binary segmentation masks
  • Post-processing: Morphological operations, area filtering

Road Centerlines Extraction

  • Architecture: U-Net with EfficientNet-B4 backbone
  • Input: RGB imagery
  • Output: Binary road masks
  • Post-processing: Skeletonization, graph extraction

Drainage Networks

  • Architecture: Hybrid CNN-DEM model
  • Input: RGB + DEM data
  • Output: Drainage network masks
  • Post-processing: Flow modeling, network connectivity

📈 Performance Metrics

Feature Type Precision Recall F1-Score IoU
Glacial Lakes 0.89 0.85 0.87 0.77
Road Centerlines 0.82 0.78 0.80 0.67
Drainage Networks 0.75 0.71 0.73 0.58

Note: Metrics are examples and would be updated with actual results

🧪 Testing

Run the test suite:

# Run all tests
pytest tests/

# Run specific test module
pytest tests/test_preprocessing.py

# Run with coverage
pytest --cov=src tests/

📚 Documentation

🛠️ Development

Setting up Development Environment

  1. Install development dependencies
pip install -r requirements-dev.txt
  1. Set up pre-commit hooks
pre-commit install
  1. Run code formatting
black src/ tests/
flake8 src/ tests/

Project Structure

# Key modules
from src.preprocessing.data_processor import DataProcessor
from src.training.model_trainer import ModelTrainer
from src.inference.feature_detector import FeatureDetector
from src.postprocessing.vectorization import convert_prediction_to_vector

🌍 Geographic Coverage

Primary Focus: Indian Himalayas

  • Coordinates: 26°N to 37°N, 72°E to 97°E
  • Coverage Area: ~2.5 million km²
  • Key Regions: Himachal Pradesh, Uttarakhand, Sikkim, Arunachal Pradesh

📊 Data Sources

Satellite Imagery

  • Sentinel-1: SAR data for all-weather monitoring
  • Sentinel-2: High-resolution optical imagery
  • Landsat-8/9: Long-term temporal coverage
  • Resourcesat/LISS: Indian satellite data

Reference Datasets

  • NRSC-GL: National glacial lake inventory
  • GLIMS: Global Land Ice Measurements from Space
  • Hi-MAG: Himalayan glacier mapping
  • ICIMOD: International Centre for Integrated Mountain Development
  • OSM: OpenStreetMap for road networks

DEM Data

  • SRTM: Shuttle Radar Topography Mission
  • ASTER: Advanced Spaceborne Thermal Emission
  • CartoDEM: Indian national DEM

🤝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your code follows our style guidelines and includes appropriate tests.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • ISRO and ESA for satellite data access
  • Open source community for the amazing tools and libraries
  • Research community for foundational papers and datasets
  • Contributors who help improve this project

🔗 References

  1. NASA-IMPACT/veda-ai-supraglacial_segmentation
  2. avanetten/cresi - Road network extraction
  3. mdbartos/pysheds - Watershed analysis
  4. Segmentation Models PyTorch
  5. GDAL/OGR - Geospatial data processing

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors