【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方式安装
- 最简单的当然是使用pip安装了
pip install segment-geospatial
- 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
- Github
pip install git+https://github.com/opengeos/segment-geospatial
- 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中
- 安装依赖
pip install segment-geospatial groundingdino-py leafmap localtileserver
- 导入依赖
import leafmap
from samgeo import SamGeo
from samgeo.text_sam import LangSAM
- 创建交互式地图
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
- 初始化模型
sam = SamGeo( model_type="vit_h", checkpoint="sam_vit_h_4b8939.pth", automatic=False, sam_kwargs=None,
)sam.set_image(image)
- 自动分类
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")
相关文章:
【GEO-AI】SAM-Geo库(segment-geospatial)入门教程
今年4月份,Meta公布了它图形分割模型Segment-Anything,简称SAM。当时就想着这个东西用在遥感影像分割上应该效果不错,奈何自己能力有限,没有办法上手实践。偶然间看到有介绍SAM-Geo工具包的文章,决定研究一番ÿ…...
ESP32-Web-Server 实战编程-使用文件系统建立强大的 web 系统
ESP32-Web-Server 实战编程-使用文件系统建立强大的 web 系统 概述 在前述章节我们讲述了在网页端控制多个 GPIO 的案例。当程序开始变得复杂,让一些功能“自动起来”是一个好的选择。 在前面的示例中,我们需要在后端为每个前端代码的 URL 指定一个对…...
kubeadm快速搭建k8s高可用集群
1.安装及优化 1.1基本环境配置 1.环境介绍 (1).高可用集群规划 主机名ip地址说明k8s-master01192.168.2.96master节点k8s-master02192.168.2.97master节点k8s-master03192.168.2.98master节点k8s-node01192.168.2.99node节点k8s-node02192.168.2.100n…...
GoLong的学习之路,进阶,Redis
这个redis和上篇rabbitMQ一样,在之前我用Java从原理上进行了剖析,这里呢,我做项目的时候,也需要用到redis,所以这里也将去从怎么用的角度去写这篇文章。 文章目录 安装redis以及原理redis概念redis的应用场景有很多red…...
Linux重置MySql密码(简洁版)
关闭验证 /etc/my.cnf-->[mysqld]-->skip-grant-tables 重启MySql service mysql restart 登陆MySql mysql -u root 刷新权限 FLUSH PRIVILEGES; 更新密码 ALTER USER rootlocalhost IDENTIFIED BY 123456; 退出MySql exit 打开验证 /etc/my.cnf-->[mysqld]-->skip…...
Ubuntu部署jmeter与ant
为了整合接口自动化的持续集成工具,我将jmeter与ant都部署在了Jenkins容器中,并配置了build.xml 一、ubuntu部署jdk 1:先下载jdk-8u74-linux-x64.tar.gz,上传到服务器,这里上传文件用到了ubuntu 下的 lrzsz。 ubunt…...
如何使用 RestTemplate 进行 Spring Boot 微服务通信示例?
在 Spring Boot 微服务架构中,RestTemplate 是一个强大的工具,用于简化微服务之间的通信。下面是一个简单的示例,演示如何使用 RestTemplate 进行微服务之间的 HTTP 通信。 首先,确保你的 Spring Boot 项目中已经添加了 spring-b…...
新开普掌上校园服务管理平台service.action RCE漏洞复现 [附POC]
文章目录 新开普掌上校园服务管理平台service.action RCE漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 新开普掌上校园服务管理平台service.action RCE漏洞复现 [附POC] 0x01 前言 免责声明:请勿…...
滤波器、卷积核与内核的关系
上来先总结举例子解释 上来先总结 内核(kernel)是一个二维矩阵,长*宽;滤波器(filter)也叫卷积核,过滤器。是一个三维立方体,长 宽 深度, 其中深度便是由多少张内核构成…...
沉默是金,寡言为贵
佛说:“人受一句话,佛受一柱香。”佛教的十善,其中有关口德就占了四样:恶口、妄语、两舌、绮语,可见口德是很重要的。言为心声,能说出真心的话,必然好听;假如说话言不由衷&#x…...
【网络奇遇之旅】:那年我与计算机网络的初相遇
🎥 屿小夏 : 个人主页 🔥个人专栏 : 计算机网络 🌄 莫道桑榆晚,为霞尚满天! 文章目录 一. 前言二. 计算机网络的定义三. 计算机网络的功能3.1 资源共享3.2 通信功能3.3 其他功能 四. 计算机网络…...
量化误差的测量
因为转换的精度有限,所以将模拟值数字化时会不可避免地出现量化误差。量化误差由转换器及其误差、噪声和非线性度决定。当输入信号和计数器时基有区别时就会产生量化误差。根据输入信号的相位和计数器时基的匹配程度,计数器有下列三种可能性:…...
8年测试工程师分享,我是怎么开展性能测试的(基础篇)
📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...
微服务API网关Spring Cloud Gateway实战
概述 微服务网关是为了给不同的微服务提供统一的前置功能;网关服务可以配置集群,以承载更多的流量;负载均衡与网关互相成就,一般使用负载均衡(例如 nginx)作为总入口,然后将流量分发到多个网关…...
uniapp打包ios有时间 uniapp打包次数
我们经常用的解决方案有,分包,将图片上传到服务器上,减少插件引入。但是还有一个方案好多刚入门uniapp的人都给忽略了,就是在源码视图中配置,开启分包优化。 1.分包 目前微信小程序可以分8个包,每个包的最大存储是2M,也就是说你文件总体的大小不能超过16M,每个包的大…...
【笔记+代码】JDK动态代理理解
代码地址 https://github.com/cmdch2017/JDKproxy.git/ 我的理解 我的理解是本身service-serviceImpl结构,新增一个代理对象proxy,代理对象去直接访问serviceImpl,在proxy进行事务的增强操作,所以代理对象实现了接口。如何实现…...
Java八股文面试全套真题【含答案】-Vue篇
以下是一些关于Vue的经典面试题以及它们的答案: 什么是Vue.js?它有什么特点? 答案:Vue.js是一个用于构建用户界面的渐进式框架。它的特点包括双向数据绑定、组件化、虚拟DOM等。什么是Vue.js?它有什么特点?…...
介绍比特币上的 sCrypt 开发平台
最强大的基础设施和工具套件,可轻松构建和扩展您的 dApp 杀手级应用在哪里? 尽管比特币在小额支付、国际汇款和供应链管理等广泛用例中具有颠覆性潜力,但在推出 14 年后,我们还没有看到一款非常受欢迎并被主流采用的杀手级应用。 …...
什么是路由抖动?该如何控制
路由器在实现不间断的网络通信和连接方面发挥着重要作用,具有所需功能的持续可用的路由器可确保其相关子网的良好性能,由于网络严重依赖路由器的性能,因此确保您的路由器不会遇到任何问题非常重要。路由器遇到的一个严重的网络问题是路由抖动…...
2023SICTF-web-白猫-RCE
001 分析题目 题目名称: RCE 题目简介: 请bypass我! 题目环境: http://210.44.151.51:10088/ 函数理解: #PHP str_replace() 函数 <!DOCTYPE html> <html> <body><?php echo str_replace("…...
专业解决方案:Windows 11 LTSC系统一键安装微软商店完整指南
专业解决方案:Windows 11 LTSC系统一键安装微软商店完整指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 LTSC系统以其卓越…...
iPhone上跑Transformer模型?手把手教你用EfficientFormer部署移动端AI应用
iPhone上部署EfficientFormer:移动端Transformer模型实战指南 当苹果在2023年发布会上演示Stable Diffusion在iPhone 15 Pro上实时运行时,整个科技圈都意识到:移动端AI推理的时代已经到来。作为移动开发者,你是否也想过在自己的Ap…...
Qwen2.5-VL-7B-Instruct效果对比:vs InternVL2、LLaVA-1.6在中文场景表现
Qwen2.5-VL-7B-Instruct效果对比:vs InternVL2、LLaVA-1.6在中文场景表现 1. 多模态视觉-语言模型概述 Qwen2.5-VL-7B-Instruct是阿里云推出的新一代多模态视觉-语言模型,专为中文场景优化设计。该模型能够同时理解图像和文本输入,并生成符…...
ShortURL MCP 集成指南
在今天的数字时代,短链接的生成和管理变得越来越重要。Ace Data Cloud 提供的 ShortURL MCP 服务器,利用 MCP (模型上下文协议),允许 AI 模型(如 Claude、GPT 等)通过标准化接口调用外部工具,从而更加便利地…...
网盘直链下载助手:一键获取八大网盘真实下载地址的终极方案
网盘直链下载助手:一键获取八大网盘真实下载地址的终极方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...
Hunyuan-OCR-WEBUI新手入门:3步搞定复杂文档文字识别
Hunyuan-OCR-WEBUI新手入门:3步搞定复杂文档文字识别 1. 引言:为什么选择Hunyuan-OCR-WEBUI? 在日常工作和学习中,我们经常会遇到需要从图片或PDF中提取文字的场景。无论是扫描的合同、手写的笔记,还是复杂的表格文档…...
AI头像生成器效果展示:支持‘敦煌飞天纹样+半透明纱衣+暖光侧逆光’复杂提示
AI头像生成器效果展示:支持敦煌飞天纹样半透明纱衣暖光侧逆光复杂提示 当传统艺术遇见AI技术,会碰撞出怎样的视觉奇迹? 1. 惊艳开场:从想象到现实的艺术跨越 你有没有遇到过这样的困扰:心中有一个绝美的头像创意&…...
璀璨星河在艺术教育落地:中小学美育课AI创作教学案例
璀璨星河在艺术教育落地:中小学美育课AI创作教学案例 1. 引言:当AI艺术遇见美育课堂 在传统的美术课堂上,老师常常面临这样的困境:学生艺术基础参差不齐,创作工具有限,很多有创意的想法难以实现。而今天&…...
别再复制粘贴了!深入理解STM32中IIR滤波器的差分方程与状态变量
从零构建STM32 IIR滤波器:差分方程、状态变量与C语言实现全解析 在嵌入式信号处理领域,IIR(无限脉冲响应)滤波器因其高效的计算特性和优异的频率选择性能,成为STM32等资源受限平台的理想选择。但许多开发者仅仅停留在&…...
SDMatte与CI/CD集成:实现模型服务的自动化部署与更新
SDMatte与CI/CD集成:实现模型服务的自动化部署与更新 1. 引言:当AI模型遇上DevOps 最近遇到一个挺有意思的场景:某设计团队在使用SDMatte进行图像背景去除时,每次模型更新都需要手动重新部署服务,导致新功能上线延迟…...
