RSPrompter:遥感图像实例分割模型应用及测试

发布时间:2026/11/4 1:45:49
RSPrompter:遥感图像实例分割模型应用及测试 文章目录一、项目介绍核心背景与动机核心思想提示学习Prompt Learning方法架构1. RSPrompter-anchor基于锚点2. RSPrompter-query基于查询关键技术创新对比方法体系实验验证主要结果开源实现局限性与未来方向二、实操复现一环境配置1、新建虚拟环境2、安装GPU版本的 PyTorch3、安装 MMCV2.1.x。4、安装其他依赖项5、安装importlib_metadata6、numpy版本二安装RSPrompter三下载SAM模型四模型应用1、模型训练2、模型测试3、图像预测一、项目介绍RSPrompter 是一项基于SAM针对遥感图像实例分割的模型由北航、上海人工智能实验室和香港大学的团队共同完成发表于 IEEE TGRS 2024。核心背景与动机Segment Anything Model (SAM)是 Meta AI 推出的视觉基础模型基于 1100 万张图像、10 亿掩码的 SA-1B 数据集训练展现出卓越的零样本泛化能力。然而SAM 存在两个关键局限类别无关性SAM 只能进行无类别区分的分割无法识别物体语义类别依赖人工提示需要人工提供点、框或粗粒度掩码作为先验引导无法实现自动化分割特别是在遥感图像领域SAM 的性能尚未得到充分验证且遥感图像具有独特挑战如小目标、密集排列、方向任意性等。核心思想提示学习Prompt LearningRSPrompter 的核心创新是学习生成合适的提示Prompt来驱动 SAM而非依赖人工输入。该方法受自然语言处理中提示学习范式的启发训练一个轻量级的Prompter 网络使其能够自动定位图像中的目标实例推断目标的语义类别生成适合 SAM 解码器的提示嵌入Prompt Embeddings方法架构RSPrompter 包含两个主要变体1. RSPrompter-anchor基于锚点采用传统的锚点机制生成候选区域通过特征增强器聚合 SAM 编码器的中间层特征为每个锚点生成类别相关的提示嵌入2. RSPrompter-query基于查询使用最优传输匹配Optimal Transport Matching替代锚点网络结构更简洁轻量性能更优但收敛速度较慢关键技术创新提示嵌入表示不同于原始 SAM 需要生成点坐标或框坐标这会限制优化空间RSPrompter 直接学习高维提示嵌入可理解为点或框的嵌入表示。这避免了从图像特征到低维坐标再到位置编码的梯度流动问题。冻结 SAM 骨干保持 SAM 的图像编码器和解码器完全冻结仅训练轻量级的 Prompter 模块充分利用 SAM 预训练的知识。对比方法体系论文系统性地提出了几种基于 SAM 的实例分割衍生方案并进行对比方法描述特点SAM-seg在 SAM 编码器后添加实例分割头如 Mask R-CNN、Mask2Former直接利用 SAM 特征SAM-clsSAM 全分割模式生成所有掩码再用分类器如 ResNet18标注类别两阶段流水线SAM-det先用检测器Faster R-CNN生成框再作为提示输入 SAM 生成掩码检测-分割级联RSPrompter学习生成提示嵌入端到端实现类别感知实例分割本文核心方法实验验证在三个典型遥感数据集上进行验证WHU Building光学 RGB 图像建筑物实例分割NWPU VHR-10多类别光学遥感目标检测与分割SSDDSAR 图像舰船检测不同成像模态主要结果WHU 数据集RSPrompter-query 达到72.5/72.5框 AP/掩码 AP超越 Mask R-CNN、Mask2Former 等传统方法跨模态泛化在 SAR 数据的 SSDD 数据集上同样有效证明了方法对不同遥感模态的适应性小数据优势提示学习方法在小数据集上展现出卓越的泛化性能开源实现论文https://arxiv.org/abs/2306.16269源代码https://github.com/KyanChen/RSPrompter源代码国内镜像源https://gitcode.com/gh_mirrors/rs/RSPrompter代码基于 MMDetection 框架实现与 OpenMMLab 生态高度兼容支持 PyTorch 2.x、CUDA 12.1并集成了 AMP 混合精度训练、DeepSpeed、LoRA 高效微调等功能。局限性与未来方向作者指出几个值得改进的方向计算效率SAM 的掩码解码器虽轻量4.1M 参数但基于提示的交互特性导致处理多实例时需多次前向计算如 100 个目标需 100 次解码计算开销较大收敛速度RSPrompter-query 因缺乏显式监督信息收敛较慢提示空间直接在潜在空间学习提示的方法具有通用性可推广至其他基础模型二、实操复现一环境配置1、新建虚拟环境在anaconda或miniconda或miniforge下新建虚拟环境创建一个名为 rsprompter 的虚拟环境并激活它。conda create-n rsprompter python3.10-y conda activate rsprompter2、安装GPU版本的 PyTorchpip install torch2.1.2torchvision0.16.2torchaudio2.1.2--index-url https://download.pytorch.org/whl/cu121以上官方源下载太慢使用以下阿里云国内镜像-pip命令加速pip install torch2.1.2torchvision0.16.2torchaudio2.1.2-f https://mirrors.aliyun.com/pytorch-wheels/cu1213、安装 MMCV2.1.x。MMCV全面功能齐全开箱即用CUDA作。建造需要更长时间。pip install-U openmim mim install mmcv2.1.04、安装其他依赖项pip install-U transformers4.38.1wandb0.16.3einops pycocotools shapely scipy terminaltables importlib peft0.8.2mat4py0.6.0mpi4py5、安装importlib_metadata运行时提示无相关modulepip install importlib_metadata6、numpy版本numpy需要小于1.24.0# 配置环境时候默认版本为2.2.6运行时候报错需要卸载重安二安装RSPrompter下载或克隆 RSPrompter 仓库即可。选择某一文件夹打开git bash输入//github原仓库地址git clone gitgithub.com:KyanChen/RSPrompter.git//国内镜像gitcode仓库地址git clone https://gitcode.com/gh_mirrors/rs/RSPrompter.gitgit clone前请确保本地完成了 Git 的全局配置git config--global user.name userName git config--global user.email userEmail得到完整仓库其中\configs\rsprompter下提供了论文中使用的 SAM-based 模型的配置文件。Config 文件完全与 MMDetection 保持一致的 API 接口及使用方法。三下载SAM模型下载HuggingFace Spaces 上的 SAM 模型作为检查点文件。源码仓库中提供了一个下载脚本。tools/rsprompter/download_hf_sam_pretrain_ckpt.py代码from transformers import SamModel import os # download the pretrained model from huggingface hf_pretrain_namefacebook/sam-vit-base# hf_pretrain_namefacebook/sam-vit-large# hf_pretrain_namefacebook/sam-vit-hugecache_dirf../../work_dirs/sam_cache/{os.path.basename(hf_pretrain_name).replace(-, _)}os.makedirs(cache_dir,exist_okTrue)# download the pretrained model from huggingface,the pretrained model will be savedincache_dir modelSamModel.from_pretrained(hf_pretrain_name,use_safetensorsFalse)model.save_pretrained(cache_dir,safe_serializationFalse)执行后会将模型自动下载到\work_dirs文件夹中。原论文中的数据都是基于vit_huge模型作为主干进行训练的论文中结果最好的模型是rsprompter_query和rsprompter_anchor。四模型应用1、模型训练代码conda activate rsprompter#根目录下激活虚拟环境python tools/train.py configs/rsprompter/rsprompter_query-whu.py#使用rsprompter_query-whu.py作为配置文件其中rsprompter_query-whu.py中code_root和data_root 改成自己的代码和数据路径。未安装DeepSpeed的打开AMP的注释2、模型测试单卡测试这里采用配置文件为configs/rsprompter/rsprompter_anchor-nwpu.py检查点文件为work_dirs/sam_cache/sam_vit_base/pytorch_model.bin代码如下python tools/test.py configs/rsprompter/rsprompter_anchor-nwpu.py work_dirs/sam_cache/sam_vit_base/pytorch_model.bin执行test后输出会有提示wandb: (1) Create a WB accountwandb: (2) Use an existing WB accountwandb: (3) Don’t visualize my resultswandb是网络端可视化工具的配置需要在 wandb 官网上注册账号可以在网络浏览器中查看训练过程中的可视化结果。第一次注册可用github账号关联wandb 官网复制API key若提示 ERROR API key must be 40 characters long, yours was 86需要更新wandb版本pip install --upgrade wandbwandb-0.24.2以下表示登陆成功登录wandb API黏贴问题参考链接3、图像预测代码单张图python demo/image_demo.py data/WHU/imgs/test/image/0.tif configs/rsprompter/rsprompter_query-whu.py--weights work_dirs/sam_cache/sam_vit_huge/pytorch_model.bin--out-dir output--device cpu图像路径data/WHU/imgs/test/image/0.tif权重-模型检查点文件work_dirs/模型路径/你训练好的模型.bin配置文件configs/rsprompter/rsprompter_query-whu.py输出路径outputgithub仓库中作者不提供训练好的模型文件只有配置文件给我们训练使用。所以一定得自己拿数据训练。我这里因为没有训练用的是sam的官方提供的检查点文件work_dirs/sam_cache/sam_vit_huge/pytorch_model.bin但是加上对应的配置文件结果非常不对……还在排查原因目前猜测大概率是要用训练后的模型。预测结果会生成以下文件代码python demo/image_demo.py demo/demo.jpg configs/rsprompter/_base_/samdet.py--weights work_dirs/sam_cache/sam_vit_huge/pytorch_model.bin--out-dir output20260226.7--device cpu原图demo.jpg在vis中生成结果不知道为什么只有person类。有一句报错模型默认使用了COCO类别的person作为预测结果这是因为1.模型检查点中没有保存数据集元信息2.系统默认使用COCO类别其中第一个类别是person总结原因得训练将数据类型替换为自己的数据类型进行使用目前先记录到这里更多内容待后续再更新。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询