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.
- Server-Side Infrastructure β Scalable backend to run AI models on geospatial data
- QGIS Plugin GUI β User-friendly interface to apply models inside QGIS
- Model Manager (in development) β Upload, version, and deploy models with ease
π½οΈ Watch Demo
.
βββ 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)
- 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
Currently tested on:
β
Ubuntu
β
macOS
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!
# 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.
- Open QGIS >
Settings
>User Profiles
>Open Active Profile Folder
- Navigate to
python/plugins
- Copy
easyearth_plugin
folder into this directory - Restart QGIS >
Plugins
>Manage and Install Plugins
> enable EasyEarth
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
- Click on the EasyEarth icon in the toolbar
- 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 hereeasyearth_base/embeddings
- for storing embeddingseasyearth_base/logs
- for storing logseasyearth_base/tmp
- for storing temporary fileseasyearth_base/predictions
- for storing predictions
- Click Docker to launch the EasyEarth server dockerized container, or Local to run the non-dockerized server
- Then you will see the Server Status as Online - Device: in the Server section
- Click Browse Image to select an image from the
easyearth_base/images
folder - Select a model from the dropdown menu
- 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 - Click Predict to run the model inference
- Prediction results will be saved in the easyearth_base/tmp folder and can be moved to the easyearth_base/predictions folder as desired.
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 | [] |
Check out our User Guide and Developer Guide for more.
- Developer Guide # for developers to contribute and extend EasyEarth
- API Reference # for developers to use the EasyEarth APIs
- 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
We welcome community contributions! If you'd like to contribute, check out:
Developed by:
Yan Cheng ([email protected]) β
π Website
GitHub
LinkedIn
Ankit Kariryaa ([email protected]) β
Lucia Gordon ([email protected]) β