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
- Project Structure
- Get Started
- Available Models
- Model APIs
- Usage
- Documentation
- Roadmap
- Contributing
- Author
- License
easyearth/
βββ easyearth/ # Server app β use this if you're only interested in the backend
βββ easyearth_plugin/ # QGIS plugin β use this folder to install the QGIS interface
β βββ easyearth/ # Server app (same as above, for plugin integration)
- Docker Compose β₯ 1.21.2 (install guide)
- Python β₯ 3.6
- QGIS
- CUDA β₯ 12.4 (download)
β οΈ More info on CUDA compatibility coming soon
# 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
cp -r ./easyearth/easyearth_plugin easyearth_plugin
This will install Docker, build the image, and launch the EasyEarth server.
cd easyearth_plugin # go to the directory where docker-compose.yml is located
chmod +x ./setup.sh # make the setup.sh executable
./setup.sh # run the setup.sh script
cd easyearth_plugin # go to the directory where docker-compose.yml is located
sudo docker-compose down # stop the docker container
# List containers
docker ps -a
# List images
docker images
# Remove all containers
docker rm $(docker ps -a -q)
# Remove all images
docker rmi $(docker images -q)
# Remove all volumes
docker volume rm $(docker volume ls -q)
# Inspect container
sudo docker inspect <container_id>
# Access container shell
sudo docker exec -it <container_id_or_name> /usr/src/app
- 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_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
- Stop external Docker containers:
cd easyearth_plugin # go to the directory where docker-compose.yml is located sudo docker-compose down # stop the docker container
- Open QGIS, click Start Docker
- Load an image using Browse Image
- Click Start Drawing
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 | [] |
curl -X POST http://127.0.0.1:3781/v1/easyearth/sam-predict \
-H "Content-Type: application/json" \
-d '{
"image_path": "/usr/src/app/user/DJI_0108.JPG",
"embedding_path": "/usr/src/app/user/embeddings/DJI_0108.pt", # if empty, the code will generate embeddings first
"model_path": "facebook/sam-vit-large", # model path from huggingface
"prompts": [{
"type": "Point",
"data": {
"points": [[850, 1100]], # can be multiple points
}
}]
}'
curl -X POST http://127.0.0.1:3781/v1/easyearth/segment-predict \
-H "Content-Type: application/json" \
-d '{
"image_path": "/usr/src/app/user/DJI_0108.JPG",
"model_path": "restor/tcd-segformer-mit-b2", # model path from huggingface
"prompts": []
}'
You can also run EasyEarth server headlessly:
- Start the Docker container
cd easyearth_plugin # go to the directory where the repo is located
sudo TEMP_DIR=/custom/temp/data DATA_DIR=/custom/data/path LOG_DIR=/custom/log/path MODEL_DIR=/custom/cache/path docker-compose up -d # start the container while mounting the custom directories.
- Use Rest API to send requests to the server, check Model APIs for more details.
Check if the server is running, the response should be Server is alive
curl -X GET http://127.0.0.1:3781/v1/easyearth/ping
Check out our User Guide and Developer Guide for more.
- EasyEarth server for model inference
- QGIS plugin for model application
- Dockerized server for scalable model inference
- Advanced prompt-guided segmentation
- Compelet documentation
- 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]), Ankit Kariryaa ([email protected]), Lucia Gordon ([email protected])