{"id":24811846,"url":"https://github.com/instadeepai/instageo-e2e-geospatial-ml","last_synced_at":"2026-05-12T22:02:02.897Z","repository":{"id":256740216,"uuid":"851134375","full_name":"instadeepai/InstaGeo-E2E-Geospatial-ML","owner":"instadeepai","description":"A python package for end-to-end geospatial machine learning using multispectral earth observation data such as NASA HLS and ESA Sentinel-2.","archived":false,"fork":false,"pushed_at":"2025-08-13T12:55:14.000Z","size":1597,"stargazers_count":25,"open_issues_count":5,"forks_count":21,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-08-13T14:39:36.928Z","etag":null,"topics":["deep-learning","geospatial","remote-sensing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/instadeepai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-02T13:42:22.000Z","updated_at":"2025-05-22T09:47:06.000Z","dependencies_parsed_at":"2024-09-16T06:42:14.750Z","dependency_job_id":"58c6402b-f747-44c8-ba4c-542849aa074a","html_url":"https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML","commit_stats":null,"previous_names":["instadeepai/instageo-e2e-geospatial-ml"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/instadeepai/InstaGeo-E2E-Geospatial-ML","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instadeepai%2FInstaGeo-E2E-Geospatial-ML","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instadeepai%2FInstaGeo-E2E-Geospatial-ML/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instadeepai%2FInstaGeo-E2E-Geospatial-ML/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instadeepai%2FInstaGeo-E2E-Geospatial-ML/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/instadeepai","download_url":"https://codeload.github.com/instadeepai/InstaGeo-E2E-Geospatial-ML/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instadeepai%2FInstaGeo-E2E-Geospatial-ML/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015312,"owners_count":26085684,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","geospatial","remote-sensing"],"created_at":"2025-01-30T13:16:32.393Z","updated_at":"2026-05-12T22:02:02.890Z","avatar_url":"https://github.com/instadeepai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource srcset=\"assets/logo-dark.png\" media=\"(prefers-color-scheme: dark)\"\u003e\n  \u003cimg src=\"assets/logo.png\" alt=\"Logo\"\u003e\n\u003c/picture\u003e\n\n## Overview\n\nInstaGeo is an end-to-end geospatial machine learning framework that automates data preprocessing, model training, inference and deployment, enabling seamless extraction of actionable insights from satellite imagery such [Harmonized Landsat and Sentinel-2 (HLS)](https://hls.gsfc.nasa.gov/) and [Sentinel-2](https://dataspace.copernicus.eu/data-collections/copernicus-sentinel-data/sentinel-2) and [Sentinel-1](https://sentinels.copernicus.eu/copernicus/sentinel-1).\n\nIt leverages the [Prithvi](https://huggingface.co/ibm-nasa-geospatial/Prithvi-100M) geospatial foundational model and consists of three core components: Data, Model, and Apps, each tailored to support various aspects of geospatial data retrieval, manipulation, preprocessing, model training, and inference serving.\n\n### Components\n\n1. [**Data**](./instageo/data/README.md): Focuses on retrieving, manipulating, and processing satellite data for classification and segmentation tasks such as disaster mapping, crop classification, and breeding ground prediction. Supports HLS, Sentinel-2, and Sentinel-1 data sources with advanced data pipeline capabilities.\n\n2. [**Model**](./instageo/model/README.md): Centers around data loading, training, and evaluating models, particularly leveraging the Prithvi model for various modeling tasks. Features include chip inference for optimized processing, model registry system, and Ray-based model serving capabilities.\n\n3. [**Apps**](./instageo/new_apps/README.md): A geospatial analysis platform featuring interactive mapping, task-based processing, and real-time monitoring capabilities.\n\u003cdiv align=\"center\"\u003e\n\n![InstaGeo App](assets/instageo_app.gif)\n\u003c/div\u003e\n\n## Paper and Key Results\n\n📄 Paper: [InstaGeo: Compute-Efficient Geospatial Machine Learning from Data to Deployment](https://arxiv.org/abs/2510.05617)\n\n| Task                                      | Model                 | Dataset                                                                 | GFM              | mIoU (std) | Acc    | mF1 (std)   | ROC-AUC (std) |\n| ----------------------------------------- | --------------------- | ----------------------------------------------------------------------- | ---------------- | ---------- | ------ | ----------- | ------------- |\n| Flood Mapping                             | Baseline              | [Original](https://github.com/cloudtostreet/Sen1Floods11)               | Prithvi-V1-100M  | 88.3 (0.3) | --     | 97.3 (0.1)  | --            |\n| Flood Mapping                             | InstaGeo-Baseline     | [Original](https://github.com/cloudtostreet/Sen1Floods11)               | Prithvi-V1-100M  | 88.53      | 97.24  | 93.71       | 99.16         |\n| Flood Mapping                             | InstaGeo-Replica (HLS)| [Replica (HLS)](https://console.cloud.google.com/storage/browser/instageo/data/sen1floods-hls-replica) | Prithvi-V1-100M  | 85.40      | 96.39  | 91.78       | 97.15         |\n| Flood Mapping                             | InstaGeo-Replica (S2) | [Replica (S2)](https://console.cloud.google.com/storage/browser/instageo/data/sen1floods-s2-replica)   | Prithvi-V1-100M  | 87.80      | 97.07  | 93.26       | 97.61         |\n| Multi-Temporal Crop Segmentation (US)     | Baseline              | [Original](https://huggingface.co/datasets/ibm-nasa-geospatial/multi-temporal-crop-classification)      | Prithvi-V1-100M  | 42.7       | 60.7   | --          | --            |\n| Multi-Temporal Crop Segmentation (US)     | InstaGeo-Baseline     | [Original](https://huggingface.co/datasets/ibm-nasa-geospatial/multi-temporal-crop-classification)      | Prithvi-V1-100M  | 48.07      | 65.77  | 64.34       | 95.79         |\n| Multi-Temporal Crop Segmentation (US)     | InstaGeo-Replica      | [Replica](https://console.cloud.google.com/storage/browser/instageo/data/multitemporal-crop-classification-replica)       | Prithvi-V1-100M  | 47.87      | 66.10  | 64.19       | 95.82         |\n| Multi-Temporal Crop Segmentation (US)     | InstaGeo-Expanded (2022, 14k) | [InstaGeo-US-CDL-2022-14k](https://console.cloud.google.com/storage/browser/instageo/data/multitemporal-crop-segmentation-US-CDL-2022) | Prithvi-V2-300M  | 60.65      | 83.02  | 73.46       | 97.99         |\n| Multi-Temporal Crop Segmentation (US)     | InstaGeo-2024 (18k)   | [InstaGeo-US-CDL-2024-18k](https://console.cloud.google.com/storage/browser/instageo/data/multitemporal-crop-segmentation-US-CDL-2024) | Prithvi-V2-300M  | 54.86      | 83.30  | 67.19       | 97.96         |\n| Locust Breeding Ground Prediction         | Baseline              | [Original](https://console.cloud.google.com/storage/browser/instageo/data/locust_breeding)               | Prithvi-V1-100M  | --         | 83.03  | 81.53       | --            |\n| Locust Breeding Ground Prediction         | InstaGeo-Baseline     | [Original](https://console.cloud.google.com/storage/browser/instageo/data/locust_breeding)               | Prithvi-V1-100M  | 71.51      | 83.39  | 83.39       | 86.74         |\n| Locust Breeding Ground Prediction         | InstaGeo-Replica      | [Replica](https://console.cloud.google.com/storage/browser/instageo/data/locust-replica)                 | Prithvi-V1-100M  | 73.30      | 84.60  | 84.60       | 88.66         |\n\nFor task-specific details and pretrained models, see the [Model component documentation](./instageo/model/README.md).\n\n## Installation\n\nInstaGeo uses modern Python dependency management with [uv](https://docs.astral.sh/uv/) for fast, reliable package installation.\n\n### Prerequisites\n- Python 3.11+ (required)\n- Docker and Docker Compose (for full-stack application)\n\n### Install uv Package Manager\nIf you don't have uv installed, install it using one of these methods:\n\n```bash\n# Linux/macOS\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Windows\npowershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n\n# Or with pip\npip install uv\n```\n\n### Install InstaGeo\n\n#### Option 1: Using uv (Recommended)\n```bash\n# Clone and navigate to the project\ncd InstaGeo\n\n# Create virtual environment\nuv venv\n\n# Activate virtual environment\nsource .venv/bin/activate  # (Linux/macOS)\n.venv\\Scripts\\activate     # (Windows)\n\n# Install dependencies (--locked ensures reproducible builds)\n# For CPU-only PyTorch (recommended for most users)\nuv sync --locked --extra all --extra dev --extra cpu\n\n# For GPU-enabled PyTorch (Linux only, requires CUDA)\nuv sync --locked --extra all --extra dev --extra gpu\n```\n\n#### Option 2: Using pip\n```bash\n# Create virtual environment\npython -m venv .venv\n\n# Activate virtual environment\nsource .venv/bin/activate  # (Linux/macOS)\n.venv\\Scripts\\activate     # (Windows)\n\n# Install directly from GitHub repository\n# For CPU-only PyTorch (recommended for most users)\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git#egg=InstaGeo[all,cpu]\"\n\n# For GPU-enabled PyTorch (Linux only, requires CUDA)\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git#egg=InstaGeo[all,gpu]\"\n\n# For development (includes dev tools)\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git#egg=InstaGeo[all,dev,cpu]\"\n\n# Install from specific branch (e.g., develop)\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git@develop#egg=InstaGeo[all,cpu]\"\n\n# Install from specific tag/release\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git@v0.1.0#egg=InstaGeo[all,cpu]\"\n\n```\n\n#### Option 3: Using pip (Local Development)\n```bash\n# Clone and navigate to the project (for local development)\ngit clone https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git\ncd InstaGeo-E2E-Geospatial-ML\n\n# Create virtual environment\npython -m venv .venv\n\n# Activate virtual environment\nsource .venv/bin/activate  # (Linux/macOS)\n.venv\\Scripts\\activate     # (Windows)\n\n# Install in editable mode for development\n# For CPU-only PyTorch (recommended for most users)\npip install -e \".[all,dev,cpu]\"\n\n# For GPU-enabled PyTorch (Linux only, requires CUDA)\npip install -e \".[all,dev,gpu]\"\n```\n\n### Dependency Groups\nInstaGeo organizes dependencies into focused groups:\n- **data**: Geospatial data processing and satellite imagery handling\n- **model**: Machine learning training and inference capabilities\n- **apps**: Web application and API serving components\n- **dev**: Development tools (linting, testing, pre-commit hooks)\n- **all**: Includes data, model, and apps groups\n\n**Note**: The `--locked` flag ensures you install the exact versions specified in `uv.lock`, providing reproducible builds across different environments.\n\n### Install Specific Components\n\n#### Using uv\n```bash\n# Data processing only\nuv sync --locked --extra data --extra cpu\n\n# Model training only\nuv sync --locked --extra model --extra cpu\n\n# Web application only\nuv sync --locked --extra apps --extra cpu\n\n# Development tools\nuv sync --locked --extra dev --extra cpu\n```\n\n#### Using pip (from GitHub)\n```bash\n# Data processing only\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git#egg=InstaGeo[data,cpu]\"\n\n# Model training only\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git#egg=InstaGeo[model,cpu]\"\n\n# Web application only\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git#egg=InstaGeo[apps,cpu]\"\n\n# Development tools\npip install \"git+https://github.com/instadeepai/InstaGeo-E2E-Geospatial-ML.git#egg=InstaGeo[dev,cpu]\"\n```\n\n## Updating Dependencies\n\n### Updating the Lock File\n\nInstaGeo uses `uv.lock` to ensure reproducible builds. When you need to update dependencies:\n\n#### Update All Dependencies\n```bash\n# Update all dependencies to their latest compatible versions\nuv lock --upgrade\n\n# Sync your environment with the updated lock file\nuv sync --locked --extra all --extra dev --extra cpu\n```\n\n#### Update Specific Packages\n```bash\n# Update specific packages\nuv lock --upgrade-package numpy --upgrade-package pandas\n\n# Update a package to a specific version\nuv add \"numpy\u003e=2.0.0\"\nuv lock\n```\n\n#### Add New Dependencies\n```bash\n# Add to runtime dependencies\nuv add \"new-package\u003e=1.0.0\"\n\n# Add to optional dependencies\nuv add --optional apps \"web-framework\u003e=3.0.0\"\n```\n\n#### Lock File Best Practices\n- **Commit `uv.lock`**: Always commit the lock file to ensure reproducible builds\n- **Regular Updates**: Update dependencies regularly for security and bug fixes\n- **Test After Updates**: Run tests after updating to catch compatibility issues\n\n#### Troubleshooting Lock Issues\n```bash\n# If you encounter lock file conflicts\nuv lock --refresh\n\n# Reset lock file completely (use with caution)\nrm uv.lock\nuv lock\n\n# Verify lock file integrity\nuv sync --locked --dry-run\n```\n\n## Running Tests\nAfter installation, you may want to verify that InstaGeo has been correctly installed and is functioning as expected. To do this, run the included test suite with the following commands:\n\n```bash\npytest --verbose .\n```\n\n## Quick Start - Full-Stack Application\n\nTo quickly get started with the modern InstaGeo web application:\n\n### Prerequisites\n- Docker and Docker Compose\n- Python 3.11+ (for development)\n\n### Launch the Application\n\n#### Prerequisites\n1. **Docker and Docker Compose** installed and running\n2. **Configuration file**: Copy and configure `instageo/new_apps/config.env.example` to `instageo/new_apps/config.env`\n\n#### Basic Launch\n```bash\n# Set environment stage (dev or prod)\nexport STAGE=dev\n\n# Basic deployment (skips model registry sync, Cloudflare tunnel disabled by default)\n./scripts/deploy.sh --skip-registry-sync\n```\n\n#### Deployment Options and Flags\n\nThe `deploy.sh` script supports several flags for different deployment scenarios:\n\n```bash\n# Default deployment (skips Cloudflare tunnel, includes model registry sync)\n./scripts/deploy.sh\n\n# Skip model registry synchronization (local development)\n./scripts/deploy.sh --skip-registry-sync\n\n# Enable Cloudflare tunnel (production deployment)\n./scripts/deploy.sh --cloudflare\n\n# Production with models and Cloudflare tunnel\n./scripts/deploy.sh --cloudflare\n\n# Only sync model registry (don't start application)\n./scripts/deploy.sh --registry-sync-only\n```\n\n**Note**: Cloudflare tunnel is **disabled by default**. Use `--cloudflare` flag to enable it for production deployments.\n\n#### Deployment Flag Details\n\n| Flag | Description | Use Case |\n|------|-------------|----------|\n| `--skip-registry-sync` | Skip downloading models from Google Cloud Storage | When models are already available locally or not needed |\n| `--cloudflare` | Enable Cloudflare tunnel setup | Production deployments with public access |\n| `--registry-sync-only` | Only sync models, don't start application | Update models without restarting services |\n\n**Default Behavior:**\n- **Cloudflare tunnel**: **Disabled by default** (use `--cloudflare` to enable)\n- **Model registry sync**: **Enabled by default** (use `--skip-registry-sync` to disable)\n- **Local development**: Simple setup with `./scripts/deploy.sh --skip-registry-sync`\n\n#### Environment Configuration\n\nBefore deployment, configure `instageo/new_apps/config.env`:\n\n**Required for all deployments:**\n```bash\nSTAGE=dev                              # or 'prod'\nREDIS_HOST=instageo-redis\nREDIS_PORT=6379\nDATA_FOLDER=/app/instageo-data\nEARTHDATA_USERNAME=your-username       # NASA EarthData credentials\nEARTHDATA_PASSWORD=your-password\n```\n\n**Required for model registry sync:**\n```bash\nHOST_MODELS_PATH=/path/to/models       # Local path for model storage\nMODELS_REGISTRY_GCS_URI=\"gs://path/to/models/registry.yaml\"\n```\n\n\u003e For the expected registry file format and available models, see the [Model Component Documentation](./instageo/model/README.md#model-registry-synchronization).\n\n**Required for Cloudflare tunnel (use `--cloudflare` flag):**\n```bash\nDOMAIN_NAME=your-domain.com\nCLOUDFLARE_TUNNEL_NAME=instageo-tunnel\nCLOUDFLARE_TUNNEL_CREDS='{\"AccountTag\":\"...\",\"TunnelSecret\":\"...\",\"TunnelID\":\"...\"}'\n```\n*Note: Only needed when using `./scripts/deploy.sh --cloudflare`*\n\n**Optional worker scaling:**\n```bash\nDATA_PROCESSING_WORKER_REPLICAS=1      # Scale data processing workers\nMODEL_PREDICTION_WORKER_REPLICAS=1     # Scale model prediction workers\nVISUALIZATION_PREPARATION_WORKER_REPLICAS=1\n```\n\n#### Access Points\n\n**Development Mode (STAGE=dev):**\n- **Frontend**: http://localhost (Interactive web interface)\n- **Backend API**: http://localhost/api (REST API endpoints)\n- **RQ Dashboard**: http://localhost:9181 (Job queue monitoring)\n\n**Production Mode (STAGE=prod):**\n- **Frontend**: https://your-domain.com (via Cloudflare tunnel)\n- **Backend API**: https://your-domain.com/api\n- **RQ Dashboard**: https://your-domain.com:9181 (password protected)\n\n#### Common Deployment Scenarios\n\n**Quick Local Development (no models needed):**\n```bash\nexport STAGE=dev\n./scripts/deploy.sh --skip-registry-sync\n```\n\n**Local Development with Models:**\n```bash\nexport STAGE=dev\n./scripts/deploy.sh\n```\n\n**Production with Cloudflare:**\n```bash\nexport STAGE=prod\n./scripts/deploy.sh --cloudflare\n```\n\n**Update Models Only:**\n```bash\n./scripts/deploy.sh --registry-sync-only\n```\n\n#### Deployment Troubleshooting\n\n**Common Issues:**\n\n1. **Docker not running:**\n   ```bash\n   # Check Docker status\n   docker info\n   # Start Docker if needed\n   ```\n\n2. **Configuration file missing:**\n   ```bash\n   # Copy and edit configuration\n   cp instageo/new_apps/config.env.example instageo/new_apps/config.env\n   # Edit the file with your settings\n   ```\n\n3. **Port conflicts:**\n   ```bash\n   # Check what's using ports 80, 3000, 8000, 6379, 9181\n   lsof -i :80\n   # Stop conflicting services or change ports in config.env\n   ```\n\n4. **Model registry sync fails:**\n   ```bash\n   # Check Google Cloud authentication\n   gcloud auth list\n   # Or skip registry sync for local development\n   ./scripts/deploy.sh --skip-registry-sync\n   ```\n\n5. **Cloudflare tunnel issues:**\n   ```bash\n   # Cloudflare is disabled by default\n   # To enable: ./scripts/deploy.sh --cloudflare\n   # Check tunnel credentials in config.env if issues persist\n   ```\n\n**Useful Management Commands:**\n```bash\n# View service logs\ndocker compose -f instageo/new_apps/docker-compose.dev.yml logs -f\n\n# Stop all services\ndocker compose -f instageo/new_apps/docker-compose.dev.yml down\n\n# Restart specific service\ndocker compose -f instageo/new_apps/docker-compose.dev.yml restart instageo-backend-api\n\n# Scale workers\ndocker compose -f instageo/new_apps/docker-compose.dev.yml up -d --scale instageo-backend-data-processing-worker=4\n```\n\n### Using the Web Interface\n1. **Draw Bounding Box**: Use the map interface to draw rectangular areas of interest\n2. **Select Model**: Choose from available geospatial models (AOD estimation, flood detection, etc.)\n3. **Configure Parameters**: Set date, cloud coverage, and processing parameters\n4. **Submit Task**: Start data processing and model prediction\n5. **Monitor Progress**: Track task status in real-time\n6. **View Results**: Visualize predictions on the map and download PDF reports\n\nFor detailed setup and configuration, see the [New Apps documentation](./instageo/new_apps/README.md).\n## Usage\n\n### Data Component\n\nInstaGeo's data component provides powerful tools for satellite imagery processing:\n\n- **Multi-Source Support**: Download and process HLS, Sentinel-2, and Sentinel-1 imagery\n- **Automated Processing**: Create ML-ready chips with segmentation maps\n- **Quality Control**: Built-in cloud masking and data validation\n- **Scalable Architecture**: Dask integration for distributed processing\n\n**Key Tools:**\n- `chip_creator.py`: Create training chips from observation records\n- `raster_chip_creator.py`: Generate chips from existing raster files\n\nFor detailed usage instructions, examples, and configuration options, see the [Data Component Documentation](./instageo/data/README.md).\n\n### Model Component\n\nAdvanced machine learning capabilities built on the Prithvi foundational model:\n\n- **Custom Training**: Fine-tune models for classification and regression tasks\n- **Multiple Inference Modes**: Chip inference, sliding window, and Ray-based serving\n- **Model Registry**: Centralized model management with GCS integration (see [registry format and available models](./instageo/model/README.md#model-registry-synchronization))\n- **Comprehensive Metrics**: Advanced evaluation and monitoring capabilities\n\n**Key Features:**\n- Support for temporal and non-temporal inputs\n- Model distillation and custom loss functions\n- Hydra-based configuration management\n- Pre-trained models for various geospatial tasks\n\nFor training examples, inference modes, and model registry setup, see the [Model Component Documentation](./instageo/model/README.md).\n\n### Apps Component (Legacy)\n\nBasic model operationalization with interactive mapping and PDF report generation. See the [Apps Documentation](./instageo/apps/README.md) for details.\n\n### New Apps Component (Modern Full-Stack Platform)\n\nA complete geospatial analysis platform with React frontend and FastAPI backend:\n\n- **Interactive Web Interface**: Draw bounding boxes, select models, monitor tasks\n- **Production Ready**: Docker deployment with Nginx, Redis, and worker scaling\n- **Real-time Processing**: Two-stage task system with progress tracking\n- **API Integration**: RESTful endpoints for programmatic access\n\n**Quick Start:**\n```bash\nexport STAGE=dev\n./scripts/deploy.sh --skip-registry-sync\n```\n\nFor detailed setup, API documentation, and deployment options, see the [New Apps Documentation](./instageo/new_apps/README.md).\n\n## Examples and Tutorials\n\n### End-to-End Demo\nSee the [InstaGeo Demo Notebook](notebooks/InstaGeo_Demo.ipynb) for a complete end-to-end example using a locust breeding ground prediction task (Note: The App section in this notebook still uses the legacy `apps` component).\n\n### Component-Specific Examples\n- **Data Processing**: See [Data Component Documentation](./instageo/data/README.md) for chip creation examples and check the demo notebooks for data preparation scenarios\n   - **Chip Creator Demo**: [notebooks/chip_creator_demo.ipynb](notebooks/chip_creator_demo.ipynb)\n   - **Raster Chip Creator Demo**: [notebooks/raster_chip_creator_demo.ipynb](notebooks/raster_chip_creator_demo.ipynb)\n   - **Data Cleaner Demo**: [notebooks/data_cleaner_demo.ipynb](notebooks/data_cleaner_demo.ipynb)\n   - **Data Splitter Demo**: [notebooks/data_splitter_demo.ipynb](notebooks/data_splitter_demo.ipynb)\n- **Model Training**: See [Model Component Documentation](./instageo/model/README.md) for training examples with Sen1Floods11, crop classification, and locust prediction\n- **Web Application**: See [New Apps Documentation](./instageo/new_apps/README.md) for API usage and deployment examples\n\n## Deployment\n\nAfter preparing data and training models, the model can be deployed using InstaGeo.\nSee [Quick Start – Full-Stack Application](./instageo/new_apps/README.md#quick-start) for setup and deployment instructions.\n\n### Deployment Features\n- **Containerized Architecture**: Docker Compose for consistent environments\n- **Cloudflare Tunnel Integration**: Secure public access without port forwarding\n- **Nginx Reverse Proxy**: Production-ready load balancing and routing\n- **Worker Scaling**: Configurable data processing and model prediction workers\n- **Monitoring**: Built-in RQ Dashboard for queue and worker monitoring\n- **Environment Management**: Separate configurations for development and production\n\n### Infrastructure Components\n- **Frontend**: React application with hot reload in development\n- **Backend**: FastAPI with multiple worker processes\n- **Database**: Redis for task storage and job queues\n- **Workers**: Scalable RQ workers for data processing and model prediction\n- **Proxy**: Nginx for routing and static file serving\n- **Monitoring**: RQ Dashboard for operational visibility\n\n## Contributing\n\nWe welcome contributions to InstaGeo. Please follow the [contribution guidelines](./CONTRIBUTING.md) for submitting pull requests and reporting issues to help us improve the package.\n\n\u003c!-- ## License --\u003e\n\n## Citation\n\nIf you use InstaGeo in your research, please cite:\n\n```bibtex\n@article{yusuf2025instageo,\n  title={InstaGeo: Compute-Efficient Geospatial Machine\nLearning from Data to Deployment},\n  author={Yusuf, Ibrahim and {et al.}},\n  journal={arXiv preprint arXiv:2510.05617},\n  year={2025}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstadeepai%2Finstageo-e2e-geospatial-ml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finstadeepai%2Finstageo-e2e-geospatial-ml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstadeepai%2Finstageo-e2e-geospatial-ml/lists"}