【GEO-AI】SAM-Geo库(segment-geospatial)入门教程

这篇具有很好参考价值的文章主要介绍了【GEO-AI】SAM-Geo库(segment-geospatial)入门教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今年4月份,Meta公布了它图形分割模型Segment-Anything,简称SAM。当时就想着这个东西用在遥感影像分割上应该效果不错,奈何自己能力有限,没有办法上手实践。偶然间看到有介绍SAM-Geo工具包的文章,决定研究一番,现在的做的这些工作可能只是狗尾续貂,权当是记一下工作笔记了。

1. 简介

SAM-Geo是一个用于地理空间数据的Python 包,可在 PyPI 和 conda-forge 上使用。作者吴秋生是美国田纳西大学地理系老师,根据他在Bilibili主页上的介绍,研究方向主要包括地理信息科学和遥感,个人主页地址:https://wetlands.io。
SAM-Geo工具包主要用于简化SAM模型在地理空间数据上的应用,其想法来源于segment-anything-eo【github地址】。为方便后续学习,将相应的地址都放在这里,SAM-Geo的Github地址是https://github.com/opengeos/segment-geospatial,文档地址:https://samgeo.gishub.org。

2.安装

根据官网,可以使用PyPI、Conda、GitHub、Docker方式安装

  1. 最简单的当然是使用pip安装了
pip install segment-geospatial
  1. Conda(推荐新建环境)
conda create -n geo python
conda activate geo
conda install -c conda-forge mamba
mamba install -c conda-forge segment-geospatial

安装依赖

mamba install -c conda-forge groundingdino-py segment-anything-fast
  1. Github
pip install git+https://github.com/opengeos/segment-geospatial
  1. Docker
docker run -it -p 8888:8888 giswqs/segment-geospatial:latest

为了是GPU生效,需要运行下面的命令

docker run --rm -it --gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

如果报错nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.,在上面的命令前面加上sudo运行。
等GPU容器运行正常后,再运行docker run命令将SAM-Geom运行起来。

3.入门案例

官网的案例地址在https://samgeo.gishub.org/workshops/purdue/,我这边简单记录下自己的操作过程,水平有限,您可以移步官网查看更详细的介绍。
这边采用的conda虚拟环境,利用之前搭建的pytorch环境,可以参考PyTorch安装记录及Anaconda环境配置
下列代码运行在Jupyter Notebook中

  1. 安装依赖
pip install segment-geospatial groundingdino-py leafmap localtileserver
  1. 导入依赖
import leafmap
from samgeo import SamGeo
from samgeo.text_sam import LangSAM
  1. 创建交互式地图
m = leafmap.Map(center=[40.427495, -86.913638], zoom=18, height=700)
m.add_basemap("SATELLITE")
m

地图操作:平移或缩放到所需位置,然后用绘图工具在地图上创建多边形或矩形。

if m.user_roi_bounds() is not None:
    bbox = m.user_roi_bounds()
else:
    bbox = [-86.9167, 40.4262, -86.9105, 40.4289]
image = "image.tif"
leafmap.map_tiles_to_geotiff(output=image, bbox=bbox, zoom=18, source="Satellite", overwrite=True)

如果要使用自己的图像,可以将image的地址设置为本地图片的地址。

将图片展示在地图上:

m.layers[-1].visible = False  # turn off the basemap
m.add_raster(image, layer_name="Image")
m
  1. 初始化模型
sam = SamGeo(          
    model_type="vit_h",          
    checkpoint="sam_vit_h_4b8939.pth",          
    automatic=False,          
    sam_kwargs=None,          
)

sam.set_image(image)
  1. 自动分类
sam.generate(image, output="masks.tif", foreground=True, unique=True)
sam.show_masks(cmap="binary_r")

展示分类文章来源地址https://www.toymoban.com/news/detail-772971.html

sam.show_anns(axis="off", alpha=1, output="annotations.tif")

到了这里,关于【GEO-AI】SAM-Geo库(segment-geospatial)入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GEO数据挖掘(一)基础介绍

    生信技能树学徒学习第二周 一、GEO数据库简介        GEO全称Gene Expression Omnibus data base,由美国国立生物技术信息中心NCBI创建并维护的基因表达数据库(通过NCBI首页,All Databases下拉框中选择GEO DataSets)。收录了世界各国研究机构提交的高通量基因表达数据。2000年开始建立的时

    2024年02月13日
    浏览(25)
  • Elasticsearch ES实现GEO位置搜索

    ES实现GEO位置搜索 Elasticsearch-7.15.2 附近查询,也叫做距离查询(geo_distance):查询到指定中心点小于某个距离值的所有文档。 创建索引 (my_geo),直接设置mapping GEO字段的创建:添加一个字段location,类型为 geo_point。 GEO类型的字段是不能使用动态映射自动生成的,我们需要在创

    2024年01月16日
    浏览(33)
  • Redis GEO功能详细介绍与实战

    Redis的Geo功能主要用于存储地理位置信息,并对其进行操作。该功能在Redis 3.2版本新增。Redis Geo操作方法包括: geoadd:添加地理位置的坐标; geopos:获取地理位置的坐标; geodist:计算两个位置之间的距离; georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集

    2024年02月07日
    浏览(26)
  • Redis GEO地理位置信息的应用

    Redis的GEO操作是一种基于地理位置信息进行操作的功能。它使用经度和纬度坐标来表示地理位置,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能。 1.GEOADD添加位置信息 将一个或多个指定的地理位置(经度、纬度、名称)添加到指定的键

    2024年02月08日
    浏览(38)
  • Redis Geo:掌握地理空间数据的艺术

    欢迎来到我的博客,代码的世界里,每一行都是一个故事 在移动互联网和物联网的时代,地理位置数据无处不在。从导航和配送到社交网络和广告,地理位置信息正在重新定义我们与世界的互动方式。但是,处理和分析这些大量的地理空间数据绝非易事。这时,Redis Geo应运而

    2024年02月02日
    浏览(29)
  • 【Redis】特殊数据类型 Geo (地理位置)

    除了五中基本的数据类型外,Redis还支持两种特殊的数据类型,第一种 Geo (地理位置):用于存储地理位置相关的数据,例如经纬度、距离等。第二种 Stream (流):是一个高级的列表类型,支持对列表的批量操作,如添加多个元素、获取多个元素等。 Redis GEO(Geo Redis)是一个用

    2024年02月15日
    浏览(31)
  • Elasticsearch地理空间之geo_shape

    参考文章: Elasticsearch地理形状 Elasticsearch geo_shape地理形状 ES地理范围查询第二讲:地理位置信息之geo_shape ES GEO地理空间查询java版 Elasticsearch geo_point/geo_shape 通常情况,我们使用一个经纬度坐标表示一个店铺的位置、一个用户的位置,经纬度在地图上仅仅表示一个点,有时候

    2023年04月09日
    浏览(30)
  • 【Redis】GEO数据类型之附近的店铺实现

    目录 一、GEO 1、概念 2、相关命令 1.GEOADD 2.GEODIST 3.GEOHASH 4.GEOPOS 5.GEORADIUS 6.GEOSEARCH 7.GEOSEARCHSTORE 二、附近的店铺 1、实现思路 2、代码实现 GEO全称Geolocation,Redis种的一种数据结构他代表地理坐标 1.GEOADD 向redis中添加一个地理空间信息,其中包含经度、维度、值(member) 2.GEODI

    2024年02月07日
    浏览(31)
  • GEO生信数据挖掘(七)差异基因分析

    上节,我们使用结核病基因数据,做了一个数据预处理的实操案例。例子中结核类型,包括结核,潜隐进展,对照和潜隐,四个类别。本节延续上个数据,进行了差异分析。 加载数据 构建差异比较矩阵 计算差异基因指标 #绘制前40个基因在不同样本之间的热图 差异基因分析

    2024年02月07日
    浏览(34)
  • elasticsearch之地理位置查询geo_shape

    geo_shape则表示有多个点连成线组成的形状,实际开发中,如果我们的地理坐标是一个地理形状,则可以使用地理形状数据类型进行插入、查询文档。比如说学校、大商场这种面积比较大的地理坐标,都需要geo_shape来表示。 geo_shape支持存储的常用形状数据如下: 点(point) 圆

    2024年02月01日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包