Skip to content

YanCheng-go/easyearth

Repository files navigation

EasyEarth: Run Vision(-Language) Models for Earth Observations at Your Fingertips

EasyEarth Logo

CI Status GitHub Release GitHub Issues License Ubuntu macOS

EasyEarth enables seamless application of cutting-edge computer vision and vision-language models directly on Earth observation data β€” without writing code. The platform integrates with QGIS via a plugin GUI and provides server-side infrastructure for scalable model inference and management.


πŸ”§ Key Components

  1. Server-Side Infrastructure – Scalable backend to run AI models on geospatial data
  2. QGIS Plugin GUI – User-friendly interface to apply models inside QGIS
  3. Model Manager (in development) – Upload, version, and deploy models with ease

Architecture

πŸ“½οΈ Watch Demo


Table of Contents

πŸ“ Project Structure

.
β”œβ”€β”€ easyearth  # Server-side code for EasyEarth
β”‚Β Β  β”œβ”€β”€ app.py  # Main application entry point
β”‚Β Β  β”œβ”€β”€ config  
β”‚Β Β  β”œβ”€β”€ controllers  # Controllers for handling requests
β”‚Β Β  β”œβ”€β”€ models  # Model management and inference logic
β”‚Β Β  β”œβ”€β”€ openapi  # OpenAPI specification for the API
β”‚Β Β  β”œβ”€β”€ static  # Static files for the server
β”‚Β Β  β”œβ”€β”€ tests  # Unit tests for the server
β”œβ”€β”€ easyearth_plugin  # QGIS plugin for EasyEarth
β”‚Β Β  β”œβ”€β”€ core  # Core logic for the plugin
β”‚Β Β  β”œβ”€β”€ data  # Sample data for testing
β”‚Β Β  β”œβ”€β”€ environment.yml  
β”‚Β Β  β”œβ”€β”€ launch_server_local.sh  # Script to launch server locally
β”‚Β Β  β”œβ”€β”€ plugin.py  # Main plugin entry point
β”‚Β Β  β”œβ”€β”€ requirements.txt  # Python dependencies for the plugin
β”‚Β Β  β”œβ”€β”€ resources  # Resources for the plugin (icons, images, etc.)
β”‚Β Β  └── ui  # User interface files for the plugin
β”œβ”€β”€ docs  # Documentation for EasyEarth
β”‚Β Β  β”œβ”€β”€ APIReference.md  # API reference documentation
β”‚Β Β  └── DeveloperGuide.md  # Developer guide for contributing to EasyEarth
β”œβ”€β”€ docker-compose.yml  # Docker Compose configuration for EasyEarth
β”œβ”€β”€ Dockerfile  # Dockerfile for building the EasyEarth server image
β”œβ”€β”€ environment.yml  # Conda environment file for EasyEarth
β”œβ”€β”€ launch_server_local.sh  # Script to launch the EasyEarth server locally
β”œβ”€β”€ README.md  
β”œβ”€β”€ requirements_mac.txt  # Python dependencies for macOS
β”œβ”€β”€ requirements.txt  # Python dependencies for EasyEarth
β”œβ”€β”€ setup.sh  # Script to set up the dockerized EasyEarth server (only needed for building the image from the start)

    

Get Started

βœ… Requirements

  • Docker Compose β‰₯ 1.21.2 (install guide)
  • Python β‰₯ 3.6
  • CUDA β‰₯ 12.4 (download)
    ⚠️ CUDA is only required for GPU inference. CPU-only mode is also available (though slower)
  • (optional) QGIS > = 3.22 (tested with 3.38 and 3.40) ⚠️ to use the plugin on QGIS, otherwise, one can use the server side only

πŸ“¦ Compatibility

Currently tested on:
βœ… Ubuntu
βœ… macOS
⚠️ Windows support:
We have not yet tested EasyEarth on Windows. If you encounter any issues or would like to help us add Windows support, contributions are welcome!

πŸ“₯ Download Pre-built Plugin

# go to your download directory
cd ~/Downloads  # Specify your own path where you want to download the code
git clone https://github.com/YanCheng-go/easyearth.git

You can also download the latest release (.zip) directly from the Releases Page.

🧩 Install EasyEarth Plugin in QGIS

Method 1: Manual Installation

  1. Open QGIS > Settings > User Profiles > Open Active Profile Folder
  2. Navigate to python/plugins
  3. Copy easyearth_plugin folder into this directory
  4. Restart QGIS > Plugins > Manage and Install Plugins > enable EasyEarth

Method 2: Terminal Installation

cd ~/Downloads/easyearth/easyearth_plugin  # go to the directory where easyearth_plugin is located
cp -r ./easyearth_plugin ~/.local/share/QGIS/QGIS3/profiles/default/python/plugins  # copy the easyearth_plugin folder to the plugins directory

After this, Restart QGIS > Plugins > Manage and Install Plugins > enable EasyEarth


πŸš€ Usage

πŸ›°οΈ Run EasyEarth in QGIS

  1. Click on the EasyEarth icon in the toolbar
  2. Select a project directory, some folders will be created in the project directory, the structure is as follows:
    • easyearth_base/images
      ⚠️images to be processed need to be placed here
    • easyearth_base/embeddings - for storing embeddings
    • easyearth_base/logs - for storing logs
    • easyearth_base/tmp - for storing temporary files
    • easyearth_base/predictions - for storing predictions
  3. Click Docker to launch the EasyEarth server dockerized container, or Local to run the non-dockerized server
  4. Then you will see the Server Status as Online - Device: in the Server section
  5. Click Browse Image to select an image from the easyearth_base/images folder
  6. Select a model from the dropdown menu
  7. Click Start Drawing to draw points or boxes on the image
    ⚠️when the real time mode is checked, the prediction of each drawing prompt will be shown in real time, so no need to go step 8
  8. Click Predict to run the model inference
  9. Prediction results will be saved in the easyearth_base/tmp folder and can be moved to the easyearth_base/predictions folder as desired. QGIS Plugin GUI

🧠 Available Models (Adding...)

Model Name Description Prompt Type Prompt Data
SAM Segment Anything Model Point [[x, y], [x, y], ...]
SAM Segment Anything Model Box [[x1, y1, x2, y2]]
SAM2 Segment Anything Model Point [[x, y], [x, y], ...]
SAM2 Segment Anything Model Box [[x1, y1, x2, y2]]
LangSAM Language Model Text ["text1", "text2"]
restor/tcd-segformer-mit-b2 Semantic Segmentation None []

πŸ“š Documentation

Check out our User Guide and Developer Guide for more.


βœ… Roadmap

  • EasyEarth server for model inference
  • QGIS plugin for model application
  • Dockerized server for scalable model inference
  • Advanced prompt-guided segmentation
  • Editing tools for segmentation
  • Model Manager for uploading/updating/tracking models
  • Chatbot integration for model management and reporting
  • Cloud deployment templates

🀝 Contributing

We welcome community contributions! If you'd like to contribute, check out:


πŸ§‘β€πŸ’» Authors

Developed by:
Yan Cheng ([email protected]) – 🌐 Website GitHub GitHub LinkedIn LinkedIn
Ankit Kariryaa ([email protected]) –
Lucia Gordon ([email protected]) –


About

Run Vision(-language) models for earth observations at fingertips

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 8