本项目提供了一个图像分割工具,利用 Segment Anything Model (SAM) 对大规模的卫星或航拍图像进行分割。该工具支持通过单点、多点或边界框输入进行图像分割,并将分割结果保存为 shapefile,以便进一步进行地理空间分析。
功能特点
- 单点分割:支持基于单个点的输入进行分割。
- 多点分割:支持使用多个点进行分割。
- 边界框分割:支持在指定的边界框内进行分割。
- 地理空间集成:使用 GDAL 读取地理空间图像,并将分割的掩膜转换为多边形。
- Shapefile 导出:将分割结果保存为 shapefile,方便与 GIS 工具集成。
- 可视化:在原始图像上可视化分割结果,便于验证和分析。
安装
-
克隆仓库:
git clone https://github.com/Lvbta/ImageSegmentationTool.git cd ImageSegmentationTool
-
下载SAM权重:
default
orvit_h
: ViT-H SAM model.vit_l
: ViT-L SAM model.vit_b
: ViT-B SAM model.
-
安装所需的依赖:
pip install -r requirements.txt
-
设置环境变量:
- 代码内已设置
KMP_DUPLICATE_LIB_OK
变量,以避免冲突。
- 代码内已设置
使用方法
步骤 1:准备数据
- 图像:确保您拥有地理参考的卫星或航拍图像,格式为 TIFF。
- SAM 模型检查点:下载 SAM 模型检查点文件,并将其放置在项目目录中。
步骤 2:配置参数
在脚本中设置以下参数:
image_path
: 您的地理参考图像文件的路径(例如./sentinel2.tif
)。sam_checkpoint
: 您的 SAM 模型检查点文件的路径(例如./sam_vit_b_01ec64.pth
)。model_type
: 用于分割的模型类型(vit_b
、vit_l
等)。device
: 用于运行模型的设备(cpu
或cuda
)。output_shp
: 保存输出 shapefile 的路径。
步骤 3:运行分割
选择分割模式并指定必要的输入点或边界框:</