Skip to main content

Meta AI' Segment Anything Model (SAM) for Geospatial Data.

Project description

segment-geospatial

image image image image Docker Pulls PyPI Downloads Conda Recipe Conda Downloads DOI

logo

A Python package for segmenting geospatial data with the Segment Anything Model (SAM)

Introduction

The segment-geospatial package draws its inspiration from segment-anything-eo repository authored by Aliaksandr Hancharenka. To facilitate the use of the Segment Anything Model (SAM) for geospatial data, I have developed the segment-anything-py and segment-geospatial Python packages, which are now available on PyPI and conda-forge. My primary objective is to simplify the process of leveraging SAM for geospatial data analysis by enabling users to achieve this with minimal coding effort. I have adapted the source code of segment-geospatial from the segment-anything-eo repository, and credit for its original version goes to Aliaksandr Hancharenka.

Citations

  • Wu, Q., & Osco, L. (2023). samgeo: A Python package for segmenting geospatial data with the Segment Anything Model (SAM). Journal of Open Source Software, 8(89), 5663. https://doi.org/10.21105/joss.05663
  • Osco, L. P., Wu, Q., de Lemos, E. L., Gonçalves, W. N., Ramos, A. P. M., Li, J., & Junior, J. M. (2023). The Segment Anything Model (SAM) for remote sensing applications: From zero to one shot. International Journal of Applied Earth Observation and Geoinformation, 124, 103540. https://doi.org/10.1016/j.jag.2023.103540

Features

  • Download map tiles from Tile Map Service (TMS) servers and create GeoTIFF files
  • Segment GeoTIFF files using the Segment Anything Model (SAM) and HQ-SAM
  • Segment remote sensing imagery with text prompts
  • Create foreground and background markers interactively
  • Load existing markers from vector datasets
  • Save segmentation results as common vector formats (GeoPackage, Shapefile, GeoJSON)
  • Save input prompts as GeoJSON files
  • Visualize segmentation results on interactive maps
  • Segment objects from timeseries remote sensing imagery

Installation

Install from PyPI

segment-geospatial is available on PyPI and can be installed in several ways so that its dependencies can be controlled more granularly. This reduces package size for CI environments, since not every time all of the models will be used.

Depending on what tools you need to use, you might want to do:

  • segment-geospatial or segment-geospatial[samgeo]: Installs only the minimum required dependencies to run SAMGeo
  • segment-geospatial[samgeo2]: Installs the dependencies to run SAMGeo 2
  • segment-geospatial[fast]: Installs the dependencies to run Fast SAM
  • segment-geospatial[hq]: Installs the dependencies to run HQ-SAM
  • segment-geospatial[text]: Installs Grounding DINO to use SAMGeo 1 and 2 with text prompts
  • segment-geospatial[fer]: Installs the dependencies to run the feature edge reconstruction algorithm

Additionally, these other two optional imports are defined:

  • segment-geospatial[all]: Installs the dependencies to run all of the SAMGeo models
  • segment-geospatial[extra]: Installs the dependencies to run all of the SAMGeo models and other utilities to run the examples like Jupyter notebook support, leafmap, etc.

Simply running the following should install the dependencies for each use case:

pip install segment-geospatial[samgeo2] # Or any other choice of the above

To see more in detail what packages come with each choice, please refer to pyproject.toml.

Install from conda-forge

segment-geospatial is also available on conda-forge. If you have Anaconda or Miniconda installed on your computer, you can install segment-geospatial using the following commands. It is recommended to create a fresh conda environment for segment-geospatial. The following commands will create a new conda environment named geo and install segment-geospatial and its dependencies:

conda create -n geo python
conda activate geo
conda install -c conda-forge mamba
mamba install -c conda-forge segment-geospatial

If your system has a GPU, but the above commands do not install the GPU version of pytorch, you can force the installation of the GPU version of pytorch using the following command:

mamba install -c conda-forge segment-geospatial "pytorch=*=cuda*"

Samgeo-geospatial has some optional dependencies that are not included in the default conda environment. To install these dependencies, run the following command:

mamba install -c conda-forge groundingdino-py segment-anything-fast

Examples

Demos

  • Automatic mask generator

  • Interactive segmentation with input prompts

  • Input prompts from existing files

  • Interactive segmentation with text prompts

Tutorials

Video tutorials are available on my YouTube Channel.

  • Automatic mask generation

Alt text

  • Using SAM with ArcGIS Pro

Alt text

  • Interactive segmentation with text prompts

Alt text

Using SAM with Desktop GIS

Computing Resources

The Segment Anything Model is computationally intensive, and a powerful GPU is recommended to process large datasets. It is recommended to have a GPU with at least 8 GB of GPU memory. You can utilize the free GPU resources provided by Google Colab. Alternatively, you can apply for AWS Cloud Credit for Research, which offers cloud credits to support academic research. If you are in the Greater China region, apply for the AWS Cloud Credit here.

Legal Notice

This repository and its content are provided for educational purposes only. By using the information and code provided, users acknowledge that they are using the APIs and models at their own risk and agree to comply with any applicable laws and regulations. Users who intend to download a large number of image tiles from any basemap are advised to contact the basemap provider to obtain permission before doing so. Unauthorized use of the basemap or any of its components may be a violation of copyright laws or other applicable laws and regulations.

Contributing

Please refer to the contributing guidelines for more information.

Acknowledgements

This project is based upon work partially supported by the National Aeronautics and Space Administration (NASA) under Grant No. 80NSSC22K1742 issued through the Open Source Tools, Frameworks, and Libraries 2020 Program.

This project is also supported by Amazon Web Services (AWS). In addition, this package was made possible by the following open source projects. Credit goes to the developers of these projects.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

segment_geospatial-0.13.0.tar.gz (463.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

segment_geospatial-0.13.0-py2.py3-none-any.whl (89.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file segment_geospatial-0.13.0.tar.gz.

File metadata

  • Download URL: segment_geospatial-0.13.0.tar.gz
  • Upload date:
  • Size: 463.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for segment_geospatial-0.13.0.tar.gz
Algorithm Hash digest
SHA256 b4856db6c18fa4bb55396156099f100a8eb2e6916a7386cd804c5bd4a9051ca9
MD5 f48fc1051be3f9d32963ccf8ea017498
BLAKE2b-256 2efbb2d63313b565d3184225f0708f8d14c6f56dd4011b7e3095ff61e43f9804

See more details on using hashes here.

File details

Details for the file segment_geospatial-0.13.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for segment_geospatial-0.13.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f46a9e2308f554962eb00fec042c943a1db8674129f39b68b0c5d9f79c9a0bb1
MD5 a096c6b78030b63cad532fad2c7421ab
BLAKE2b-256 9d98ae97780be303759b80b600b0e7bc4bdf0758da676ef7b56688bb8249b2e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page