CastDet: Toward Open Vocabulary Aerial Object Detection with CLIP-Activated Student-Teacher Learning
- 来源: https://arxiv.org/abs/2311.11646
- 本地Markdown:
../raw/2023-11-20-casdet.md - 本地LaTeX:
../raw/2023-11-20-casdet-latex/ - 日期: 2023-11-20
- 标签:
open-vocabulary detection,student-teacher,CLIP,aerial detection,pseudo-label - 研究方向: 2D Object Detection → 开放词汇检测 → 航空目标检测
- 作者: Yan Li, Weiwei Guo, Xue Yang, Ning Liao, Dunyun He, Jiaqi Zhou, Wenxian Yu (ECCV 2024)
- 引用: 32
摘要
问题: 航空图像的开放词汇检测(OVD)此前无人研究。传统航空检测器只能检测预定义类别,无法泛化到新类别。直接迁移自然场景 OVD 方法在航空图像上效果差(类间相似性高、背景杂乱)。
方案: CastDet,CLIP-Activated Student-Teacher 框架:
- CLIP 作为外部知识源分类伪标签,而非直接做教师
- Dynamic Label Queue 动态存储和迭代更新 CLIP 生成的伪标签
- 混合训练:标注数据 + 教师生成伪标签 + CLIP 动态队列
验证: VisDroneZSD HM 40.0,超越 Detic/ViLD 26.9/21.1
1. Introduction
背景:
- 航空图像目标检测受限于闭集类别,无法检测训练外新类
- OVD 方法分两线:(1) 大规模图文训练 (2) 蒸馏 VL 模型知识
- VL 模型(CLIP/ALIGN)的零样本迁移能力是 OVD 的基础
挑战:
- 航空图像中目标尺度小、类间相似性高、背景杂乱
- 直接用 CLIP 做教师有两个问题:(1) CLIP 分类精度有限(尤其小目标)(2) 单教师缺乏鲁棒性
贡献:
- 首个面向航空图像的 OVD 方法 CastDet
- CLIP-Activated 机制:CLIP 做分类器而非直接教师,结合 Soft Teacher 做回归
- Dynamic Label Queue:动态存储/更新伪标签,解决标签不平衡
- 混合训练策略
2. Method
3.1 问题设定
- 标注数据 L(base 类别)+ 无标注数据 U(可能含 novel 类别)
- 目标:训练能检测 C_base ∪ C_novel 的检测器
3.2 开放词汇检测器
架构:基于 Faster R-CNN,三个模型协作——student + 定位教师 + 外部教师(RemoteCLIP)
语义分类器:student 的分类头不是传统 FC 层,而是用 RoI 视觉特征与类名的文本嵌入(RemoteCLIP 文本编码器生成)算余弦相似度 → softmax → 分类分数。换类名即可测新类别,网络结构不用变。但换类名 ≠ 能检测到——分类只解决"这是什么",定位问题(RPN 提框)才是 OVD 的瓶颈
类别无关回归头:bounding box 回归分支所有类别共享参数,预测通用框坐标(4 维),而非每类各预测一版(4×|C| 维)。简化模型,适配类别数不固定的场景
初始化:student 用预训练的 Soft Teacher(Xu et al., ICCV 2021)权重初始化——COCO 上半监督训练的 Faster R-CNN,已有通用物体检测能力。定位教师初始权重 = student(θ'_0 = θ_0),之后 EMA 更新
飞轮效应:(1) RPN 是类别无关的,初始就能提出部分 novel 类候选框(召回率低 48%)(2) 候选框送 CLIP 分类 → 部分 novel 类被正确识别 → 伪标签 (3) 伪标签训练 student(反向传播改善 RPN)(4) student 变强 → EMA 教师也变强 → RPN 提出更多更好的框 (5) 更多框送 CLIP → 更多伪标签 → 循环。CLIP 伪标签是"种子",启动后正反馈增强
3.3 定位教师
EMA 更新:θ't = 0.999·θ' + 0.001·θ_t。教师 = student 过去几千步参数的加权平均,比当前 student 更强:(1) 集成效应——几百个模型快照的加权平均 (2) 平滑噪声——抹平 SGD 波动 (3) 正则化——防止确认偏差
一致性训练:无标注图分别做弱增强(给教师)和强增强(给 student),鼓励 student 预测与教师一致
框筛选策略:教师生成候选框后,需要筛选高质量框送 RemoteCLIP 分类。对比三种策略:
- RPN Score:按前景置信度筛选(最常用)
- Box Jittering Variance (BJV):在框附近随机抖动多次,看回归方差——方差小说明框稳定
- Regression Jittering Variance (RJV):迭代把预测框放回回归分支精修,看精修后方差——本文选择,比 RPN Score 高 4.5% mAP_novel
3.4 动态伪标签队列
生成伪标签:定位教师生成 proposal → RJV 筛选 → 裁剪 → 送 RemoteCLIP 分类 → 概率超过阈值 p_0=0.8 的 (图, 框, 类别) 作为伪标签
队列维护:
- 伪标签队列:存图元数据(路径、标签、框)
- 索引字典:{类别 → [图ID列表]},按类别平衡采样
- 同一图的伪标签会被覆盖更新,随模型变强伪标签质量逐步提升
为什么用队列而非直接训练:(1) 类别平衡采样——novel 类样本少,直接训练容易被 base 类淹没 (2) 累积效应——随着训练进行,定位教师越来越强,proposal 越来越准,CLIP 分类后生成的新伪标签会覆盖旧的,队列中伪标签质量逐步提升 (3) 历史保留——早期发现的伪标签不会丢失,即使后续该图没被选中也能保留在队列中
3.5 混合训练
三个数据流并行训练:
- 标注数据流(L_s):标注图 → student 预测 → 分类 + 回归损失。base 类有标签正常训,novel 类目标无标签被当作背景
- 无标注数据流(L_u = L_u^cls + L_u^reg):无标注图 → 定位教师生成伪框 → student 学习。分类损失中负样本加权(早期对 novel 类假阴性容忍),回归损失只算高质量框
- 队列数据流(L_d^cls):从动态队列按类别平衡采样 → student 只算分类损失。目的是给 student 注入 novel 类知识
总损失:L = L_s + α·L_u + β·L_d
4. Experiments
数据集
遵循 VisDrone2023 零样本检测挑战的 base/novel 类别划分。这种 GZSD 设定类似早期自然图像 OVD 的 COCO base/novel 评估(如 ViLD 把 COCO 80 类分成 48+17),但当前主流自然图像 OVD(GLIP/GroundingDINO 等)已转向大规模预训练→零样本迁移的范式,不再依赖固定 base/novel 划分。在遥感 OVD 中,仅 CastDet 用了 GZSD,LAE-DINO 之后也转向了 open-set 评估——LAE-1M 有 ~1600 类,open-set 评估更贴近实际——真实场景中你不会预知哪些类见过、哪些没见过。
- VisDroneZSD:VisDrone 零样本检测子集,无人机视角,800px 宽。训练集 13k 张标注图(只标注 16 个 base 类别)+ 3k 张无标注图(含 4 个 novel 类别的目标但训练时不可见其标签)。测试时评估全部 20 类(16 base + 4 novel: airport, basketball court, track field, windmill——这些是高空俯瞰才能看到的场景级目标,不像 base 类是低空街景小目标,尺度和场景差异大)。CastDet 和 ViLD/OV-DETR 用 DIOR 的 8726 张无标注检测图作为外部数据(给教师模型生成伪标签),而 Detic/GLIP/GroundingDINO/YOLO-World 用 NWPU-RESISC45 分类数据集(有类别标签无框,做弱监督)——两者外部数据类型不同,不是完全公平对比。另外,这些对比方法原始论文都在自然图像(COCO 等)上做实验,VisDroneZSD 上的结果均为本文作者自行适配/复现(ViLD 明确标注为作者实现并替换 CLIP 为 RemoteCLIP),仅 MultiModel 的结果来自 VisDrone2023 挑战赛排行榜。
- NWPU VHR-10:超高分辨率遥感,~1000px,650 张标注图 + 150 张背景图,10 类(8 base + 2 novel)。205 张无标注图。
- DOTA:原始 2806 张航拍大图(分辨率 800~4000),15 个类别。作者裁为 800×800 patches(overlap=100)得 15194 张图。13 base + 2 novel 的划分是作者自行设定,原文未在主文中说明哪 2 类为 novel(详见附录)。
注:CastDet 的数据集划分和 GZSD 评估体系未被后续工作沿用。LAE-DINO / DisDop 转向 DIOR + DOTAv2.0 + LAE-80C 的 open-set 评估(不再划分 base/novel),训练数据也从 VisDroneZSD 升级为 LAE-1M。
评估方式:GZSD(Generalized Zero-Shot Detection)——测试时同时评估 base 和 novel 类别,指标为 mAP_base、mAP_novel 和 HM = 2·mAP_base·mAP_novel / (mAP_base + mAP_novel)。 HM 是调和均值,严惩短板——只要 base 或 novel 任一项很低,HM 就高不了,强制要求模型两边都不能太差,避免"偏科"。举例:
| 方法 | mAP_base | mAP_novel | 算术均值 | HM |
|---|---|---|---|---|
| A | 80 | 5 | 42.5 | 9.4 |
| B | 40 | 40 | 40.0 | 40.0 |
算术均值下 A 看起来更好(42.5 > 40),但 A 在 novel 类上几乎废了。HM 暴露了这个问题——A 的 HM 只有 9.4,远低于 B 的 40.0。
注:HM 仅在 GZSD 设定(区分 base/novel)下有意义。LAE-DINO / DisDop 改用 open-set 评估(不划分 base/novel),直接报整体 mAP/AP50,不再使用 HM。
数据集使用说明(GZSD 设定下的具体用法)
以 VisDroneZSD 为例,假设 16 个 base 类是 pedestrian, car, van, truck...,4 个 novel 类是 airport, basketball court, track field, windmill:
训练阶段:
- 13k 标注图:和 3k 无标注图来自同一数据集(VisDroneZSD),都是无人机街景,区别只是标注状态(原文 Table 1:13067 labeled + 3000 unlabeled)。图中有 pedestrian、car 等目标 → 有框+类别标签;图中如果出现了 airport → airport 的目标客观存在,但标签被抹掉。标注图走监督训练流,不经过 CLIP——所以 RPN 可能检测到 airport 是前景目标,但没有 ground truth 匹配,训练时被当作背景/假阳性处理,模型实际上被"惩罚"了检测 novel 类的行为。这正是需要无标注流 + CLIP 补偿的原因
- 3k 无标注图:图中可能有 base 类目标也可能有 novel 类目标 → 全部没有标签(base 类也不标)。定位教师(student 的 EMA)生成 proposal → 筛选高质量框 → 从原图裁剪 → 送 RemoteCLIP 在 20 个类名的文本嵌入上匹配分类 → 高置信度伪标签推入动态队列 → 队列采样训练 student(只算分类损失)。EMA 教师 = student 过去几千步参数的加权平均(θ't = 0.999·θ' + 0.001·θ_t),比当前 student 强因为:(1) 集成效应——相当于几百个模型快照的加权平均,类似 ensemble (2) 平滑噪声——抹平 SGD 单步更新的波动 (3) 正则化——提供更稳定的伪标签目标,防止半监督训练中的确认偏差。类比:单个天气预报有误差,30 天滑动平均更稳
- DIOR 8726 张:同样无标注,作为额外数据给教师模型生成更多伪标签
测试阶段:
- 测试集 3337 张图,对所有 20 个类别评估 mAP,得到 mAP_base(16 类平均)和 mAP_novel(4 类平均),再算 HM
NWPU VHR-10 同理:10 类中 8 base + 2 novel,标注图只标注 8 个 base 类,205 张无标注图给教师生成伪标签
DOTA 同理:15 类中 13 base + 2 novel,DOTA 自身没有无标注图,但 CastDet 用 DIOR 的 8726 张图作为通用无标注数据源——三个数据集共享这批 DIOR 图给教师模型生成伪标签
GZSD 设定的初衷:模拟"已有 base 类标注,想扩展到 novel 类但不想重新标注"的现实需求——验证 CLIP + 半监督能在标注不足时帮助发现新类。
GZSD 设定的局限:
- novel 类需要预先知道:airport、windmill 的类名在训练时就要告诉 RemoteCLIP 做匹配,不是真正的"开放"——你得事先知道要检测什么
- base/novel 划分人为:16+4 的划分没有唯一性,换一种划分结果可能差很多
- novel 和 base 场景差异大:低空街景训出来的模型检测高空机场,更像是域迁移问题
- "无标注"其实是假装的:VisDrone 全集有标注,训练时故意不用来模拟半监督——和真实无标注场景有距离
- novel 类恰好都是大目标:airport、basketball court、track field、windmill 都是场景级大目标,抠图后信息充足 CLIP 还能认。如果 novel 类是小目标(如 2×2 像素的车),抠图几乎无信息,CLIP 分类基本靠猜,伪标签噪声会严重误导 student。这也是 DisDop 引入上下文先验蒸馏的核心动机——融合全局场景信息辅助小目标分类(如路边的小方块,单看像噪声,结合道路和房屋就能推断是车)
这也是 LAE-DINO / DisDop 转向 open-set 评估的原因——不划分 base/novel,直接在 LAE-1M 上训,测所有类别,更贴近实际
关键结果
- VisDroneZSD HM 40.0(仅用 1/3 标注数据),超 Detic 26.9、ViLD 21.1
- CLIP-activated 分类比直接用 teacher 分类更准
- Dynamic Queue 有效缓解 novel 类别标签稀缺
5. Conclusion
- 首个航空 OVD 方法
- CLIP 作为外部知识源 + Soft Teacher 做定位 + 动态队列迭代更新
- 在多个航空数据集上显著超越自然场景 OVD 方法
与 DisDop 的关系
CastDet 是 DisDop 在 Introduction 中明确对比的前置工作:
- 相同点:都面向航空 OVD,都利用 CLIP/RemoteCLIP
- 不同点:
- CastDet 用 CLIP 做伪标签分类器(浅层利用),DisDop 系统蒸馏多级域先验(深层利用)
- CastDet 基于 Soft Teacher + 半监督范式,DisDop 基于 LAE-DINO + 知识蒸馏范式
- CastDet 未利用遥感基础模型的视觉/文本/上下文先验
- DisDop 明确指出 CastDet "only takes it as a classifier for generating pseudo category labels, failing to systematically distill the multi-level domain priors"
个人评价
核心价值: 首个航空 OVD 工作,开创性强。CLIP-activated 的思路(CLIP 做分类器而非直接教师)解决了 CLIP 直接做教师的精度问题。
可借鉴点:
- Dynamic Label Queue:迭代更新伪标签的机制,随模型变强标签质量提升
- 混合训练三数据流的设计
局限性: 对 CLIP 的利用较浅(仅分类),未挖掘基础模型中的视觉/文本先验。在 DOTAv2.0/LAE-80C 等更大数据集上性能不如 LAE-DINO 和 DisDop。
