【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")

展示分类

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue中使用正则表达式进行文本匹配和处理的方法

1. 正则表达式基础 正则表达式是一种用来匹配字符串的模式。它由普通字符(例如字符 a 到 z)和特殊字符(称为"元字符")组成。以下是一些基本的正则表达式示例: 匹配邮箱的正则表达式: /^[\w-](\…

windows环境下载安装Nginx并配置防火墙

1、下载Nginx Nginx官网 下载稳定版 2、下载之后,解压 3、启动Nginx,命令:start nginx 最小化该窗口 主要,不要关闭,如果关闭,表示nginx服务关闭了 4、测试是否启动成功 在浏览器中输入http://localhos…

2021年09月 Scratch图形化(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 程序中要使用不确定的数值,这时要用到的是?( ) A、图章 B、变量 C、广播 D、随机数 答案:D 第2题 执行下列程序后,角色会说?( ) A、3 B、6 C、10 D、15 答案:D 第3题…

广州华锐视点:基于VR元宇宙技术开展法律法规常识在线教学,打破地域和时间限制

随着科技的飞速发展,人类社会正逐渐迈向一个全新的时代——元宇宙。元宇宙是一个虚拟的、数字化的世界,它将现实世界与数字世界紧密相连,为人们提供了一个全新的交流、学习和娱乐平台。在这个充满无限可能的元宇宙中,法律知识同样…

关于MongoDB

MongoDB介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其…

Panorama SCADA平台助力智能建筑管理,掌控未来建筑!

来源:宏集科技 工业物联网 宏集方案 Panorama SCADA平台助力智能建筑管理,掌控未来建筑! 欢迎关注虹科,为您提供最新资讯! 前言 在现代智能建筑管理中,随着设施管理(FM)、建筑管理…

数据结构与算法--特殊的完全二叉树--堆,堆排序,利用堆解决topk的问题

目录 前言 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树: 2.3 特殊的二叉树: 2.4 二叉树的性质 …

YOLOv7独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 在道路缺陷检测任务中,原始ma…

视频号小店如何运营?核心点是什么?实操详解!

我是电商珠珠 我做视频号小店也有一年的时间了,也拥有了自己的视频号小店团队。 很多新手对于视频号小店并不知道怎么做,总是偏离最初的重心,所以一部分人刚开始做的时候,觉得自己没有那个能力。 看着店铺的流量和销量日趋减少…

基于STM32+定时器中断和定时器外部时钟(标准库函数讲解)

前言 本篇博客主要学习了解定时器的标准库函数,以及定时器中断进行LED灯的反转,还有定时器外部时钟获取脉冲计数功能。本篇博客大部分是自己收集和整理,如有侵权请联系我删除。 本篇博客主要是对通用定时器来讲解,功能适中比较常…

Java高级技术(注解)

一,注解 二,案例 三,注解原理 四,元注解 五,案例 六,解析注解 七,案例

嵌入式工程师必备的编程语言有哪些?

嵌入式的运用的编程语言主要的是要求精通C语言,另外也要涉及到汇编,C、shell、Ada、JavaScript、Python等。 C语言 C语言是嵌入式开发中最常用的编程语言之一。它具有语法简单、易于理解、可移植性强等特点。同时,由于C语言可以直接接触硬件…

vue基础入门踩坑备忘

document.getElementById(mask).innerHTML document.getElementsByClassName(mask)[index].innerHTML console.log(document.getElementsByClassName(mask)[index].innerHTML); vue加链接(已设置过路由):$router.push({ path: /goods/default_agent_price}) --…

unity UI特效遮罩

using System.Collections; using System.Collections.Generic; using UnityEngine;/**UI特效遮罩 1.需要将ScrollRect 的遮罩Mask 换为 2D Mask2.将特效的Render里面的 Masking 设置为*/ public class UIParticleMaskControll : MonoBehaviour {// Start is called before …

简易键值对文本解析

除了json,xml,protobuf等成体系的配置文件外&#xff0c;简单的文本格式“key value”的配置文件也在很多开源项目中存在&#xff0c;这种配置文件的好处是简单、易于理解和编辑。 #include <stdio.h> #include <string.h>#define MAX_LINE_LENGTH 1024void Parse…

低代码平台:房企建造领域数字化转型的必备利器

在数字化浪潮的推动下&#xff0c;越来越多的行业开始向数字化转型迈进&#xff0c;房地产建筑管理也不例外。低代码平台作为一种新兴的技术趋势&#xff0c;正逐渐成为推进房地产建筑管理数字化转型的重要工具。 房地产建筑管理作为一个庞大而复杂的行业&#xff0c;数字化转…

SQL——增删改查条件查询

1.查询不同行——DISTINCT SELECT DISTINCT column_name FROM table_name DISTINCT 关键字需位于列名之前。 2.在指定列中插入数据——INSERT INSERT INTO courses (name, student_count, created_at, teacher_id) VALUES (Flash Sale, 100, 2018-01-01, 5); 3.更新数据——U…

『Confetti 喜庆散花插件の使用』

以下用 VUE3 语法 举例使用&#xff1a; npm install js-confetti<script setup lang"ts"> import JSConfetti from js-confetticonst confetti new JSConfetti()function showConfetti() {confetti.addConfetti() } </script><template><h1 …

视频剪辑技巧:批量剪辑新思路,AI智剪来助阵

在视频制作过程中&#xff0c;剪辑是一项至关重要的任务。然而&#xff0c;对于许多创作者来说&#xff0c;批量剪辑视频是一项耗时且繁琐的工作。传统的批量剪辑方法通常要创作者逐个打开视频文件&#xff0c;进行剪辑、调整色彩等操作。这种方法不仅效率低下&#xff0c;而且…

探索低代码之路——JNPF

目录 一、低代码行业现状 二、产品分析 1.可视化应用开发 2.流程管理 3.整个平台源码合作 三、架构和技术 技术栈 四、规划和展望 低代码平台&#xff08;Low-code Development Platform&#xff09;是一种让开发者通过拖拽和配置&#xff0c;而非传统的手动编写大量代…