English | 简体中文
本项目为 IEEE TGRS 见刊论文 "DeSPAR: Depth-Guided Semantic-Prompted Adaptive Refinement for ORSI Salient Object Detection" 的官方 PyTorch 实现与工程部署仓库。
在光学遥感图像(ORSI)显著目标检测中,目前面临两大核心挑战:
- 空间感知受限: 仅依赖 RGB 模态在极端成像条件下(如图 a 和图 b),难以敏锐感知目标的几何凸起与空间布局,导致提取的目标空间结构表征不够鲁棒。
- 语义特征混淆: 遥感图像中目标与复杂背景的特征高度耦合,单模态方法极易发生类别混淆(如图 c 中,MRBINet 将纹理与形态相近的道路误检为显著建筑)。
为打破这一瓶颈,我们提出了 DeSPAR —— 一种创新的几何–语义解耦渐进式精炼框架。该框架针对性地引入深度几何先验以突破空间感知局限,并结合类别语义提示来彻底消除特征混淆。为了完美融合这两种异构信息,DeSPAR 摒弃了传统的联合训练,采用了渐进式的解耦特征提取策略,最终实现了极具鲁棒性的精准检测。
性能表现: DeSPAR 在 3 个公开的 ORSI-SOD 基准测试(ORSSD, EORSSD, ORSI-4199)中超越了 26 种 SOTA 方法。
在同时引入深度几何先验与语义约束时,最直观的做法是采用端到端(End-to-End)联合训练。然而,这种方式存在极其严重的优化冲突:由于骨干网的预训练优势,强烈的语义分类信号会极快收敛并主导梯度的更新方向,导致网络“走捷径”而忽略脆弱的几何基础构建。
为了解决这一冲突,DeSPAR 巧妙地将特征学习过程拆分为两个渐进阶段:
-
💠 高效的视觉骨干网: 采用 PVTv2 作为编码器,利用其空间降维注意力机制,在有效提取全局上下文的同时,合理控制了高分辨率遥感图像的计算复杂度。
-
🧱 Stage 1: 深度引导几何学习 (DGL): 专注于构建通用几何基础。通过新颖的轻量级深度引导精炼器 (DGR),利用 RGB 特征引导伪深度去噪,并反向注入纯净的几何线索,极大增强了模型对目标空间结构的表征能力。
-
🎯 Stage 2: 深度引导语义自适应精炼 (DSR): 专注于施加类别特定的语义约束。在继承 DGL 几何地基(权重)的前提下,借助构建的语义提示库 (Semantic Prompt Bank),通过提示引导机制自适应地优化不同类别目标的特征,有效化解了形态差异带来的语义特征混淆。
本仓库不仅提供了学术复现代码,还专门针对算法落地与端侧部署进行了全面重构:
-
⚡ 极致轻量与高帧率: 模型参数量仅为 26.4M,在原生 PyTorch 下推理速度可达 161 FPS,极具端侧落地潜力。
-
📦 ONNX 零门槛部署: 完整支持动态轴的 ONNX 静态计算图导出,通过底层
Monkey Patch解决pixel_unshuffle算子兼容性问题,并内置误差< 1e-4的双盲精度对齐测试。 -
🔗 鲁棒的级联推理引擎: 推理 Demo 脚本内置单目深度估计接口(借力 Depth-Anything-V2)。即便在无深度图输入的盲测场景下,DeSPAR 依然能凭借 DGR 模块强大的去噪与抗干扰能力输出精准预测。
本项目基于 PyTorch 1.8+ 构建,核心依赖极简。请运行以下命令配置环境:
conda create -n despar python=3.8
conda activate despar
pip install -r requirements.txt为了保证极其丝滑的开箱体验,我们已将数据集的分类标签(annotations/*.npy)内置于本仓库中。您只需要下载图像文件与相关的模型权重:
- 下载模型权重:
- DeSPAR 核心权重: 下载 weights.zip,下载完成后解压至项目根目录。
- Depth-Anything 权重 (仅盲测推理需要): 下载 depth_anything_v2_vitb.pth 并将其放置在
Depth-Anything-V2/checkpoints/目录下。
- 下载数据集: 请从 Link 获取
ORSI-4199的核心图像数据(包含 Image, GT, Depth)。 - 合并目录: 确保您的项目根目录结构如下所示:
📂 点击展开查看项目目录结构
DeSPAR/
├── assets/
│ └── examples/ # Demo 测试图像
├── configs/ # 配置文件 (stage1/stage2)
├── data/
│ └── ORSI-4199/ # ORSI-4199 数据集目录
│ ├── annotations/ # 类别标签文件 (已内置于 GitHub)
│ │ ├── ORSI-4199_train_cls.npy
│ │ └── ORSI-4199_test_cls.npy
│ ├── train_Image/
│ ├── train_GT/
│ ├── train_Depth/
│ ├── test_Image/
│ ├── test_GT/
│ └── test_Depth/
├── datasets/
├── Depth-Anything-V2/
│ └── checkpoints/
│ └── depth_anything_v2_vitb.pth # 用于盲测推理的深度估计权重
├── models/ # 核心网络架构
├── outputs/ # 推理结果存放目录 (深度图、掩码图、叠加图)
├── tools/ # 训练、测试、推理脚本
├── weights/ # 预训练权重存放目录
│ ├── pvt_v2_b2.pth
│ ├── prompt_centers_ORSI-4199.npy
│ ├── stage1_ORSI-4199/
│ │ ├── despar_stage1_best.pth
│ │ └── despar_stage1.onnx # 导出的 ONNX 部署模型
│ └── stage2_ORSI-4199/
│ ├── despar_stage2_best.pth
│ └── despar_stage2.onnx # 导出的 ONNX 部署模型
└── requirements.txt
我们提供了极其强大且开箱即用的 demo.py 推理脚本,内置了智能路由与盲测级联机制:
- 智能路由: 当输入指定
--label时,脚本将自动加载 Stage 2 (DSR) 模型进行语义自适应精准检测;若未提供标签,则自动回退加载 Stage 1 (DGL) 模型,进行类别无关的通用显著性检测。 - 无深度盲测: 即使不提供
--depth深度图输入,脚本也会无缝调用内置引擎(借力 Depth-Anything-V2)生成伪深度,完美应对真实业务场景。
在使用 Stage 2 进行语义引导推理时,支持以下 11 种遥感显著目标类别:
stadium (体育场), aircraft (飞机), road (道路), oil_tank (油罐), car (汽车), urban_landmark (城市地标), ship (船舶), river (河流), rural_building (乡村建筑), lake (湖泊), bridge (桥梁)。
我们在 assets/ 目录下为您预置了涵盖所有类别的测试图像。您可以直接复制以下命令体验极其精准的分割效果(脚本会自动保存预测结果与可视化叠图):
模式 A:语义引导精准检测 (调用 Stage 2 - 推荐)
python tools/demo.py --img 'assets/examples/2013.jpg' --label aircraft
python tools/demo.py --img 'assets/examples/2198.jpg' --label road
python tools/demo.py --img 'assets/examples/cars_MSO_ (41).jpg' --label car
python tools/demo.py --img 'assets/examples/2229.jpg' --label ship(注:assets/ 目录下还包含了 stadium, oil_tank, river, rural_building, urban_landmark, lake, bridge 等各类图像,您可自由替换上述命令进行全面体验。)
模式 B:类别无关/零样本检测 (调用 Stage 1) 当您面对未知类别的遥感图像时,直接忽略标签参数,测试模型的通用泛化能力:
python tools/demo.py --img 'assets/2198.jpg'推理结果: 脚本运行完成后,生成的深度图、显著性掩码以及可视化叠加图(原图 + 掩码)将自动分类保存在 outputs/ 目录下。
为了打通端侧部署的最后一公里,我们提供了标准的工业级导出与验证流程,完美支持 Stage 1 和 Stage 2 模型的动态轴导出。
步骤 1:模型导出
使用以下命令,将训练好的 PyTorch 权重无缝导出为 .onnx 计算图:
python tools/export_onnx.py --stage 1 # 导出 Stage 1 通用几何检测模型
python tools/export_onnx.py --stage 2 # 导出 Stage 2 语义引导精炼模型步骤 2:双盲精度对齐测试 导出后,强烈建议使用我们提供的验证脚本,测试 PyTorch 与 ONNXRuntime 在相同输入下的输出误差,确保算子级对齐:
python tools/verify_onnx.py --stage 1
python tools/verify_onnx.py --stage 2在我们的测试环境中,PyTorch 与 ONNX 的最大绝对误差(Max Absolute Difference)均远低于 1e-4 级别,实现了完美的无损转换。
本项目采用渐进式解耦训练范式,请严格按照以下三个步骤执行:
Step 1: 训练 Stage 1 (DGL 几何地基构建)
python tools/train.py --config configs/stage1_dgl.yamlStep 2: 提取语义提示中心 (关键步骤) 利用 Stage 1 训练好的权重,提取数据集中各层级的语义聚类中心:
python tools/build_prompt_bank.pyStep 3: 训练 Stage 2 (DSR 语义自适应精炼)
python tools/train.py --config configs/stage2_dsr.yaml模型评估 (Evaluation)
python tools/test.py --config configs/stage2_dsr.yamlDeSPAR 在三大公开基准测试中均展现出了卓越的性能。为了验证模型的鲁棒性,我们进行了极其详实的对比实验:在经典的 ORSSD 和 EORSSD 数据集上,我们与 26 种 现有 SOTA 方法进行了对比;同时,在更具挑战性的大规模数据集 ORSI-4199 上,我们与 17 种 顶尖开源方法进行了全面评估,均取得了最先进的指标。
如果本项目对您的研究或工程落地有帮助,欢迎引用我们的论文,并给本仓库点个 ⭐ Star!
@article{zhang2026despar,
title={DeSPAR: Depth-Guided Semantic-Prompted Adaptive Refinement for ORSI Salient Object Detection},
author={Zhang, Xiaoli and Liufu, Ping and Hu, Xihang and Li, Xiongfei and Jia, Chuanmin and Ma, Siwei},
journal={IEEE Transactions on Geoscience and Remote Sensing},
year={2026},
publisher={IEEE}
}本项目的成功离不开开源社区的无私贡献。我们在此特别感谢以下优秀开源工作提供的基石与灵感:
- 💠 PVTv2: 为本项目提供了极其高效的视觉骨干网络。
- 🌊 Depth-Anything-V2: 为本项目的无深度图盲测推理演示提供了强大的单目深度估计支持。



