AI: SAM3 用于遥感图像分割(武汉租界区)

SAM3 用于遥感图像分割

此 Notebook 演示了如何使用 Segment Anything Model 3 (SAM3) 和 samgeo3 模块来分割遥感图像。

安装

首先,确保已安装所需的依赖项:

# %pip install "segment-geospatial[samgeo3]"

导入库

import leafmap
from samgeo import SamGeo3, download_file

下载示例数据

下载一张覆盖加州大学伯克利分校的示例卫星图像用于测试:

url = "https://content/Wuhan.tif"
image_path = download_file(url)
m = leafmap.Map()
m.add_raster(image_path, layer_name="卫星图像")
m

可视化影星结果

申请 SAM3 访问权限

要使用 SAM3,您需要通过填写 Hugging Face 上的此表单来申请访问权限:https://huggingface.co/facebook/sam3

获得访问权限后,请取消注释以下代码块并运行它。

from huggingface_hub import login
login()

这里需要登陆
点击蓝色链接部分,转到下面这张图
创建token
创建所需的权限
扶着这个token即可

初始化 SAM3

初始化 SAM3 时,您可以选择后端,可选 “meta” 或 “transformers”。

sam3 = SamGeo3(backend="meta", device=None, checkpoint_path=None, load_from_HF=True)

此处可以能会报错,我用Google colab来进行了尝试:
这里提示sam没有安装,但是我们第一行代码就已经安装了

设置图像

您可以通过传递图像路径或图像 URL 来设置图像。

sam3.set_image(image_path)

使用文本提示生成掩膜

sam3.generate_masks(prompt="building")

显示结果

sam3.show_anns()

注释

sam3.show_masks()

通过边界框生成掩膜

# 以 [xmin, ymin, xmax, ymax] 格式定义边界框
boxes = [[-122.2597, 37.8709, -122.2587, 37.8717]]

# 可选:指定哪些边界框是正向/负向提示
box_labels = [True]  # True=包含, False=排除

# 生成掩膜
sam3.generate_masks_by_boxes(boxes, box_labels, box_crs="EPSG:4326")
sam3.show_boxes(boxes, box_labels, box_crs="EPSG:4326")

边界框

显示结果

sam3.show_anns()

保存掩膜

将生成的掩膜保存到文件。如果输入是 GeoTIFF,输出将是具有相同地理参考的 GeoTIFF。否则,将保存为 PNG。

# 保存掩膜,每个对象具有唯一值
# 由于输入图像是 GeoTIFF,输出也将是 GeoTIFF
sam3.save_masks(output="building_masks.tif", unique=True)
# 保存为二值掩膜(所有前景像素值为 255)
sam3.save_masks(output="building_masks_binary.tif", unique=False)

保存带置信度分数的掩膜

您也可以保存每个掩膜的置信度分数。分数表示模型对每个预测掩膜的置信度。

# 保存掩膜和置信度分数
# 分数图像中的每个像素将具有其掩膜的置信度值
sam3.save_masks(
    output="building_masks_with_scores.tif",
    save_scores="building_scores.tif",
    unique=True,
)
sam3.show_masks(cmap="coolwarm")

分数

可视化置信度分数

让我们可视化置信度分数,看看哪些掩膜的置信度更高:

m.add_raster("building_masks.tif", layer_name="建筑物掩膜", visible=False)
m.add_raster(
    "building_scores.tif",
    layer_name="建筑物分数",
    cmap="coolwarm",
    opacity=0.8,
    nodata=0,
)
m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此星光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值