segment-geospatial
Segment Anything Model (SAM) 的一个用于分割地理空间数据的 Python 软件包
介绍
segment-geospatial 包受 segment-anything-eo 仓库的启发,该仓库由 Aliaksandr Hancharenka 编写。为了方便使用 Segment Anything 模型(SAM)处理地理空间数据,我开发了 segment-anything-py 和 segment-geospatial Python 软件包,这些包现在可在 PyPI 和 conda-forge 上获取。我的主要目标是通过减少代码量来简化 SAM 的使用过程,以便用户能够轻松进行地理空间数据分析。我已从 segment-anything-eo 仓库中适配了 segment-geospatial 的源码,原版本的贡献归功于 Aliaksandr Hancharenka。
- 免费软件:MIT 许可证
- 文档:https://samgeo.gishub.org
引用
- Wu, Q., & Osco, L. (2023)。 samgeo:一种用于使用 Segment Anything 模型(SAM)分割地理空间数据的 Python 软件包。 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)。 Segment Anything 模型(SAM)在遥感应用中的使用:从零到一。 国际应用地球观测与地球信息科学杂志, 124, 103540. https://doi.org/10.1016/j.jag.2023.103540
功能
- 从瓦片地图服务(TMS)服务器下载地图瓦片并创建 GeoTIFF 文件
- 使用 Segment Anything 模型(SAM)和 HQ-SAM 分割 GeoTIFF 文件
- 使用文本提示分割遥感图像
- 交互创建前景和背景标记
- 从矢量数据集中加载现有标记
- 将分割结果保存为常见的矢量格式(GeoPackage、Shapefile、GeoJSON)
- 将输入提示保存为 GeoJSON 文件
- 在交互地图上可视化分割结果
安装
从 PyPI 安装
segment-geospatial 可以在 PyPI 上获取。要安装 segment-geospatial,在终端运行以下命令:
pip install segment-geospatial
从 conda-forge 安装
segment-geospatial 也可以从 conda-forge 获取。如果您的计算机上已安装 Anaconda 或 Miniconda,您可以使用以下命令安装 segment-geospatial。推荐为 segment-geospatial 创建一个新的 conda 环境。以下命令将创建一个名为 geo
的新 conda 环境,并安装 segment-geospatial 及其依赖项:
conda create -n geo python
conda activate geo
conda install -c conda-forge mamba
mamba install -c conda-forge segment-geospatial
如果您的系统有 GPU,但上述命令未能安装 pytorch 的 GPU 版本,可以使用以下命令强制安装 pytorch 的 GPU 版本:
mamba install -c conda-forge segment-geospatial "pytorch=*=cuda*"
Samgeo-geospatial 有一些默认 conda 环境中不包含的可选依赖项。要安装这些依赖项,请运行以下命令:
mamba install -c conda-forge groundingdino-py segment-anything-fast
示例
- 分割遥感图像
- 自动生成对象掩码
- 使用输入提示分割遥感图像
- 使用框提示分割遥感图像
- 使用文本提示分割遥感图像
- 批量分割文本提示
- 使用 segment-geospatial 和 ArcGIS Pro
- 使用文本提示分割游泳池
- 从 Maxar 开放数据计划中分割卫星图像
演示
- 自动掩码生成器
- 带输入提示的交互分割
- 来自现有文件的输入提示
- 使用文本提示的交互分割
教程
视频教程可以在我的 YouTube 频道 上观看。
- 自动掩码生成
- 使用 SAM 和 ArcGIS Pro
- 使用文本提示进行交互分割
在桌面 GIS 中使用 SAM
- QGIS:查看 QGIS 的 Geometric Attributes 插件。感谢 Bjorn Nyberg 。
- ArcGIS:查看 ArcGIS 的 Segment Anything 模型(SAM)工具箱 和 利用 ArcGIS 深度学习应用的资源。感谢 Esri 。
计算资源
Segment Anything 模型计算强度大,建议使用强大的 GPU 处理大型数据集。建议使用具有至少 8 GB GPU 内存的 GPU。您可以利用 Google Colab 提供的免费 GPU 资源。或者,您可以申请 AWS 研究云信用,提供云信用以支持学术研究。如果您在大中华区,可以在 这里 申请 AWS 研究云信用。
法律声明
本仓库及其内容仅用于教育目的。通过使用提供的信息和代码,用户确认他们自担风险使用 API 和模型,并同意遵守任何适用的法律和法规。计划从任何底图下载大量图像瓦片的用户应联系底图提供商获得许可,否则可能违反版权法或其他适用的法律和法规。
贡献
有关更多信息,请参阅 贡献指南。
致谢
此项目基于部分由美国国家航空航天局(NASA)支持的工作,资助号为 80NSSC22K1742,通过 开放源码工具、框架和库 2020 计划 颁发。
该项目还得到了 Amazon Web Services(AWS)的支持。此外,该包得以实现还得益于以下开源项目的支持。感谢这些项目的开发者。