LAE: Locate Anything on Earth — Advancing Open-Vocabulary Object Detection for Remote Sensing
- 来源: https://arxiv.org/abs/2408.09110
- 本地Markdown:
../raw/2024-08-17-lae.md - 本地LaTeX:
../raw/2024-08-17-lae-latex/ - 日期: 2024-08-17
- 标签:
open-vocabulary detection,remote sensing,DINO,data engine,dynamic vocabulary - 研究方向: 2D Object Detection → 开放词汇检测 → 遥感目标检测
- 作者: Jiancheng Pan, Yanxing Liu, Yuqian Fu, Muyuan Ma, Jiahao Li, Danda Pani Paudel, Luc Van Gool, Xiaomeng Huang
- 代码: https://github.com/jaychempan/LAE-DINO
- 引用: 49
摘要
问题: 遥感领域缺乏大规模多样化标注数据,现有 OVD 方法都在自然图像上训练/测试,直接迁移到遥感存在巨大域差距。
方案: LAE(Locate Anything on Earth),从数据+模型两方面推进遥感 OVD:
- LAE-Label Engine: 统一 10 个遥感数据集构建 LAE-1M(100 万标注实例,~1600 词汇量)
- LAE-DINO: DINO-based 检测器,含两个新模块:
- DVC(Dynamic Vocabulary Construction):动态选择每 batch 的正负词汇
- VisGT(Visual-Guided Text Prompt Learning):用视觉场景特征引导文本特征
验证: 用 LAE-1M 训练后,在三个 benchmark 上直接测试(零样本迁移,无 fine-tune):
- DIOR(20 类,已有公开数据集):AP50 85.5
- DOTAv2.0(已有公开数据集):mAP 46.8
- LAE-80C(作者自建,80 类):mAP 20.2——构建方式:先保留 DIOR test set 的 20 类图像,再从 DOTAv2.0 test set 补 DIOR 没有的类,再从 FAIR1M/Xview/Condensing-Tower 的 test/val set 补更多类,合并成 80 类评测集。图像和类别都来自各源数据集,LAE-80C 与 DIOR/DOTAv2.0 评测集有图像级重合(DIOR test set 的图同时出现在 DIOR 评测和 LAE-80C 评测中)
1. Introduction
背景:
- OVD 允许检测任意新类别,但当前 SOTA 方法都在自然图像上验证
- 遥感图像分辨率高、风格特殊、语义类别不同,直接迁移非平凡
挑战:
- 遥感缺乏多样化标注数据
- 现有 OVD 检测器(GroundingDINO 等)的词汇构建和图文交互不适用于遥感场景
贡献:
- 提出 LAE 任务定位,构建 LAE-1M 数据集(首个大规模遥感 OVD 数据集,100 万实例)
- LAE-DINO 检测器:DVC 解决大词汇量问题,VisGT 增强图文交互
- 开集+闭集全面实验验证
2. Related Work
2.1 遥感通用目标检测
- 检测方法论发展:单阶段(YOLO,直接在 anchor 上分类+回归)→ 两阶段(Faster R-CNN,先生成 proposal 再精修,更准但更慢)→ Transformer-based(DINO,平衡精度与计算)
- 遥感基础模型:RingMo/SatMAE/Scale-MAE 等(自监督/无监督,从大量无标注遥感图学习基础视觉表征)→ 下游检测 fine-tune
- 多模态融合:CALNet 等融合可见光+红外提升检测
- 共同局限:都是闭集检测——只能检测训练时见过的类别,无法检测新类别
2.2 从少样本学习到开放词汇检测
- FSOD(Few-Shot Object Detection):用少量标注检测新类,分为微调式和元学习式。CD-FSOD 探索跨域(自然→遥感),但仅依赖视觉,对新词汇支持有限
- OVD(Open-Vocabulary Detection):更实用的范式,构建开放视觉-语义空间
- OVR-CNN:首次用 image-caption 预训练获取语言知识
- RegionCLIP / GLIP:统一为 image-text matching 任务,扩大视觉-语义空间
- GroundingDINO:更强检测器结构 + 细粒度多模态融合
- CastDet:半监督 + OVD 结合做航空检测
- 局限:域标注数据不足,开集检测能力弱(CastDet 在闭集上还行但开集弱)
3. LAE Task
3.1 任务定义:Locate Anything on Earth
- LAE 源自 OVD 但专为遥感设计:给定遥感图像 + 文本提示,检测任意类别的目标
- 训练集 D_base = {I, (b, y)_r},其中 I ∈ R^{H×W×C},b ∈ R^4 为框坐标,y ∈ V_base 为类别
- V_base 为训练词汇集(~1600 类),V_Ω 为全语言词汇,V_test 为测试词汇
- 关键设定:V_test 可以是 V_Ω 的任意子集——即测试类别无约束(与 OVD 一致)
- 训练目标:从 D_base 学习,在 D_test 上根据文本提示 T 正确定位和分类
OVD 能检测 V_base 之外类别的原因:
- 文本编码器(BERT)在大规模语料上预训练,能编码任意文本到语义空间——即使 "T junction" 不在 V_base 中,BERT 也知道它的语义
- 模型学到的是视觉特征 ↔ 文本语义的对齐关系,不是死记 1600 个类
- 语义相近的词共享相似的文本嵌入("helipad" ≈ "helicopter" + "airport"),对齐可以泛化
- 但实际评测中,DIOR/DOTAv2.0/LAE-80C 的测试类别大部分都在 V_base 中(因为 DIOR/DOTA/FAIR1M/Xview 就是训练数据),真正 novel 的类只在 HRRSD few-shot 实验中测了 3 个(T junction, crossroad, parking lot)。所以主评测的"open-set"更准确说是"no fine-tune"而非"novel category"。
3.2 LAE-Label Engine(数据引擎)
问题:(1) 人工标注数据集规模小、格式不统一 (2) 大规模无标注数据缺乏目标级标注
3.2.1 LAE-FOD(Fine-grained,细粒度)
- 输入:7 个已有标注数据集(DOTA/DIOR/FAIR1M/NWPU VHR-10/RSOD/Xview/HRSC2016/Condensing-Tower)
- 流程:
- 格式统一:所有标注转为 COCO 格式
- 图像切片:大分辨率图(DOTA/FAIR1M/Xview)切为 1024×1024 子图
- DOTA/FAIR1M:直接使用 MTP(Multi-Task Pretraining, Wang et al. 2024)论文已处理好的切片数据和标注——MTP 在做遥感基础模型时已经把这些大图切好了,LAE 直接复用
- Xview:用 SAHI(Slicing Aided Hyper Inference, Akyon et al. 2022)开源工具切片到 1024——Xview 没有现成切片,需自己处理
- 采样:合并所有数据集
- 结果:
- 图片数:切片后约 135k 张图片(大图切片大幅扩充:DOTA 2,806→17,480,FAIR1M 15,266→64,147,Xview 1,129→26,543;不需切的小图约 27k)
- 实例:~139 万,标注质量高(人工标注),但类别有限
3.2.2 LAE-COD(Coarse-grained,粗粒度)
- 输入:4 个无/弱标注数据集
- 低分辨率场景分类数据(不需切片):AID(31,500 图,28,906 实例)、NWPU-RESISC45(31,500 图,28,906 实例)
- 高分辨率 Google Earth 图像(需切片到 1024):EMS(102 图→2,605 切片,39,013 实例)、SLM(22 图→152 切片,106 实例)
- 半自动标注流程(三步):
- SAM 提取 RoI:对每张图随机取 32 个点作为 SAM prompt → SAM 生成分割掩码 → 保留面积最大的 top-K 个 RoI(1024 分辨率图取 top-10,256 小图取 top-5)。SAM-ViT-H 过滤标准:predicted IoU > 0.86(SAM 的 IoU 预测头直接输出),stability score > 0.92(AMG 管线中后计算——在不同阈值下对 mask logits 二值化,比较所得掩码的 IoU 来衡量一致性)。每张图产生多个 RoI(即多个目标标注)
- 缺陷:只保留面积最大的 top-K,小目标会被丢弃——面积小排不进 top-K → 没标注 → LAE-COD 训练数据偏向大目标,小目标类别缺失
- InternVL 分类:对每个 RoI 的裁剪区域用 InternVL-1.5 零样本识别类别。输入 SAM 裁剪的 RoI 图像 + 特定 prompt,要求输出类别名(引号包围)+ 置信度(0-1)+ 推理过程。例:输入 RoI → InternVL 输出
"Road" with a likelihood of 0.9. The image shows a paved surface...→ 提取类别="Road"、置信度=0.9。不认识则输出 "Unrecognized"。论文发现让 LVLM 输出推理过程能提高分类准确性(CoT 效果),这是 LAE-COD 词汇量能到 ~1600 的原因——InternVL 想出什么类就是什么类,不受人工预定义限制。 - 规则过滤:删除单调图像、"Unrecognized"类别、低置信度预测、冗余同质类别
- SAM 提取 RoI:对每张图随机取 32 个点作为 SAM prompt → SAM 生成分割掩码 → 保留面积最大的 top-K 个 RoI(1024 分辨率图取 top-10,256 小图取 top-5)。SAM-ViT-H 过滤标准:predicted IoU > 0.86(SAM 的 IoU 预测头直接输出),stability score > 0.92(AMG 管线中后计算——在不同阈值下对 mask logits 二值化,比较所得掩码的 IoU 来衡量一致性)。每张图产生多个 RoI(即多个目标标注)
- 结果:~102k 实例,类别丰富但标注质量较低。用户评分调查(1-5 分)显示:类别得分高于框得分——InternVL 识别"这是什么"还行,但 SAM 生成的框经常不够紧(太松/偏移/切掉部分目标)
3.2.3 LAE-1M 合并
- LAE-FOD + LAE-COD = 100 万标注实例,~1600 词汇量
- LAE-COD 贡献词汇多样性(word cloud 显示 COD 类别密集),LAE-FOD 贡献标注质量
- 消融:加 LAE-COD 后 DOTAv2.0 mAP +2.3%
- 总图片数:LAE-FOD ~135k + LAE-COD ~65.8k(AID 31,500 + NWPU-RESISC45 31,500 + EMS 切片 2,605 + SLM 切片 152)≈ ~201k 张图
数据统计:
| 子集 | 数据集 | 实例数 |
|---|---|---|
| LAE-COD | AID | 34,214 |
| NWPU-RESISC45 | 28,906 | |
| SLM | 106 | |
| EMS | 39,013 | |
| LAE-FOD | DOTA | 188,282 |
| DIOR | 192,472 | |
| FAIR1M | ~1.02M | |
| NWPU VHR-10 | 3,651 | |
| RSOD | 6,950 | |
| Xview | ~1M | |
| HRSC2016 | 2,976 | |
| Condensing-Tower | 2,382 |
4. LAE-DINO
4.1 DINO-based 检测器基础
- Backbone: Swin Transformer(图像)+ BERT-base(文本,~110M,12 层 12 头)
- 与 GroundingDINO 共享基础架构,训练方式也一致
- BERT 参与训练(非冻结)——与 CLIP 范式不同:CLIP 冻结文本编码器只做 image-level 对齐;检测需要 region-level 对齐,BERT 端到端训练才能调整文本特征匹配视觉特征
- 类别编码方式:沿用 GroundingDINO 的做法,将所有类别名拼接成一条长文本(原文:"concatenate all categories into a extremely long text")送入 BERT 编码,输出后按类别提取文本特征 F_T^P = [F̃_T1, ..., F̃_Tp] ∈ R^{n_Tp × d}(每类一个 d 维向量,具体提取方式论文未详述)
- DVC 的动机(原文逻辑):BERT 最大 256 token,LAE-1M 约 1600 个类别拼接后远超此上限
- DVC 的方案:每 batch 动态选 N_DV=60 个类别——当前图出现的正类别全部包含,剩余位置从 V_base 随机采样负类别填充。对比 APE 的方案(每个类别独立编码,丢失类别间关联——原文:"discarding the correlation among vocabularies"),DVC 保留多类别在同一次编码中的关联
- 训练流程:图像/文本特征 → Transformer Encoder 融合 → Query Selection 初始化查询 → Transformer Decoder → 检测头输出 (box, class)
4.2 Dynamic Vocabulary Construction (DVC)
- 问题:训练数据含 ~1600 词汇,不可能每个 batch 都放全部词汇
- 方案:每个 batch 动态选择正词汇(当前图中出现的类)+ 负词汇(采样未出现的类)
- 负词汇数量 N_DV = 60
4.3 Visual-Guided Text Prompt Learning (VisGT)
动机:一张图中稀少的几个类别名无法充分表达图像内容。例如图中同时有"飞机"和"车辆",这两个类别共同暗示了"机场"场景——这种场景级信息单靠文本类别名表达不了,需要视觉信息来补充
核心思想:不是 object-level 对齐,而是 image-level 对齐——用视觉特征构造场景表示,映射到语义空间,再反过来增强文本特征
流程(三步):
- 构造文本侧场景特征 s(作为 GT):将当前图所有正类别的文本特征加权平均——s = (1/n_Tp) * Σ(L_i × F̃_Ti),其中 L_i 是第 i 个类别名经 BERT 分词后的 token 数(如 "airplane"=1, "baseball diamond"≈3)。因为 F̃_Ti 是该类别 token 特征的平均,所以 L_i × F̃_Ti 等于该类别所有 token 特征的总和。整体效果:把所有正类别的 token 特征全部加起来再除以类别数,名字长的类别(token 多)贡献更大
- 构造视觉侧场景特征 s_hat(作为预测):将图像视觉特征映射到语义空间
- 第 1 层:对图像所有 token 取平均 → s_hat^1
- 第 2~l 层:MDSA(多尺度可变形自注意力) + FFN 逐层精炼 → s_hat^l
- 最终得到 S_v2t(visual-to-text 的映射特征),表示"从视觉空间转移到文本空间"的特征
- 用 S_v2t 增强文本特征:将 S_v2t 加到 F_T 上(逐元素相加,得到场景增强的文本特征),再和图像特征 F_I 拼成一个 token 序列 [F_T+S_v2t, F_I],送入 Transformer Encoder E_TE 做图文融合
- 为什么有效:原始 F_T 是"图像无关"的——同一类别名在任何图里文本特征都一样,没有当前图像的场景上下文。加上 S_v2t 后,每个类别的文本特征都获得了当前图像的场景信息。例如 F_T("vehicle") + S_v2t("机场场景") → "vehicle" 的文本特征现在蕴含"机场中的车辆"上下文,区别于"公路上的车辆"
约束损失 L_VisGT:对比学习,训练 S_v2t 的映射能力。每个 batch 有 n 张图,每张图有文本侧场景特征 s(GT)和视觉侧场景特征 ŝ(预测)。目标是让同一张图的 ŝ 和 s 靠近,不同图的远离。 这是 image-level 的 loss,不是 instance-level 的。它不约束具体某个框的检测,而是约束"视觉侧能正确推断出这张图是什么场景"。场景推断对了 → S_v2t 质量好 → 加到 F_T 上能提供正确的场景上下文 → 下游检测更准。
举例:一个 batch 有 4 张图——图1(机场)、图2(港口)、图3(住宅)、图4(农田)
- 文本侧 GT:s_1(=airplane+vehicle的特征)、s_2(=ship+harbor的特征)、s_3(=building+road的特征)、s_4(=farmland+vegetation的特征)
- 视觉侧预测:ŝ_1(从图1视觉特征映射来)、ŝ_2(从图2来)、ŝ_3(从图3来)、ŝ_4(从图4来)
- 对每一对 (ŝ_i, s_j) 计算相似度 φ_i,j = ŝ_i^T · s_j,得到 4×4 相似度矩阵
- 损失 = softmax 形式:对第 i 张图,L_i = exp(φ_i,i/τ) / Σ_j exp(φ_i,j/τ)
- 理想情况:对角线(ŝ_1↔s_1, ŝ_2↔s_2, ...)相似度最高,非对角线低
- 即 ŝ_1 应该和 s_1(机场) 最像,和 s_2(港口)、s_3(住宅) 最不像
总损失:L = L_cls + α·L_loc + β·L_VisGT,其中 α=1, β=10(β 大说明 VisGT 约束很重要)
4.4 总损失
L = L_cls + α·L_loc + β·L_VisGT,其中 α=1, β=10
5. Experiments
开集检测
| 方法 | 训练数据 | DIOR AP50 | DOTAv2.0 mAP | LAE-80C mAP |
|---|---|---|---|---|
| GLIP + DVC | LAE-1M | 82.8 | 43.0 | 16.5 |
| GroundingDINO + DVC | LAE-1M | 83.6 | 46.0 | 17.7 |
| LAE-DINO | LAE-1M | 85.5 | 46.8 | 20.2 |
- 自然场景 OVD 方法在遥感上几乎不工作,验证了域差距
- LAE-DINO 在三个 benchmark 上均优于 GroundingDINO
闭集检测
- LAE-DINO 在 DIOR 上 AP50 92.2(fine-tune 全量数据)
- 仅用一半数据 fine-tune 就能达到 AP50 89.1
消融
VisGT 消融(Table 5,DIOR test set):
| 设置 | 方法 | DIOR AP50 |
|---|---|---|
| 开集(LAE-1M 预训练后直接测,无 fine-tune) | PT-baseline(无 VisGT) | 83.6 |
| 开集 | +VisGT | 85.5(+1.9) |
| 闭集(在 DIOR 训练集上 fine-tune 后测) | FT-baseline(无 VisGT) | 89.9 |
| 闭集 | +VisGT(无 LAE-1M 预训练) | 92.0(+2.1) |
| 闭集 | +VisGT(有 LAE-1M 预训练) | 92.2(+2.3) |
PT-baseline = Pre-Training baseline,FT-baseline = Fine-Tuning baseline
VisGT 在开集和闭集上都有提升。闭集场景下,LAE-1M 预训练 + VisGT 的组合效果最好
LAE-1M 消融:加 LAE-COD 后 DOTAv2.0 mAP +2.3%
6. Conclusion
- LAE 任务 + LAE-1M 数据集 + LAE-DINO 模型
- DVC 解决大词汇量训练问题
- VisGT 用场景级视觉特征增强文本特征
- 开集+闭集均 SOTA
与 DisDop 的关系
LAE-DINO 是 DisDop 的直接基座(backbone):
- DisDop 保留 LAE-DINO 的检测头架构,只替换 backbone 为蒸馏后的 Swin-T
- DisDop 在 LAE-1M 数据集上训练
- LAE-DINO 的 DVC 和 VisGT 被 DisDop 继承
- DisDop 额外加入视觉/文本/上下文先验蒸馏,在 LAE-DINO 基础上进一步提升
演进路径: CastDet(首个航空 OVD)→ LAE-DINO(大规模数据+新模型)→ DisDop(域先验蒸馏)
个人评价
核心价值: 遥感 OVD 的奠基性工作。LAE-1M 数据集是目前最大规模的遥感 OVD 数据,DVC 和 VisGT 是实用的技术贡献。
可借鉴点:
- LAE-Label Engine 的半自动标注流水线(SAM + VL 模型 + 规则过滤)
- DVC 动态词汇构建:大词汇量 OVD 训练的实用方案
- VisGT 的场景特征思想:同一图像中目标共同定义场景,用场景级特征桥接视觉和文本
局限性:
- VisGT 的场景特征是简单平均,信息损失较大
- 未利用遥感基础模型(RemoteCLIP/DINOv3)的域先验
- LAE-1M 标注质量参差不齐(半自动标注)
