跳转至

Domain Adaptive Object Detection via Dual-Stream Bilevel-Cycle Optimization

会议: ECCV 2026
论文: ECCV 原文
领域: 目标检测
关键词: 域自适应目标检测, 循环自训练, 双层优化, 伪标签, Mean Teacher

一句话总结

DSBCO 把图像分类上的循环自训练(Cycle Self-Training, CST)拆成分类与回归两条循环流、并搭在 Mean Teacher 之上,用「特征维岭回归解显式投影 + 源域投影验证」替代不稳定的样本核矩阵求逆,再对回归偏移做标准化,在 Cityscapes→Foggy Cityscapes 上把 FCOS 自训练基线从 41.2 mAP 提到 64.7 mAP。

研究背景与动机

域自适应目标检测(DAOD)要在只有源域标注的条件下把检测器迁移到目标域,最主流的做法之一就是自训练:先用源域训好的模型给目标域打伪标签,再拿源域真值和目标域伪标签一起迭代重训。问题是域偏移让目标域伪标签先天不可靠,伪标签一旦偏,误差就会在迭代中被放大——标准自训练因此有一个明确可见的精度天花板,继续迭代也上不去。循环自训练(CST)在图像分类上给了另一条路:它放松了「源域与目标域共享同一个分类器」的假设,为目标域单独引入一个分类器,并用内层/外层两个循环来约束这个分类器,从而缓解伪标签不可靠;但把 CST 搬到目标检测上,此前基本没有可用的方案。

论文通过实验和理论分析给出了三个具体的障碍。❶ 检测中的伪标签不可靠有三种形态——只分类错、只定位错、以及两者同时错;标准自训练的上限正是被这三类错误共同压住的,而分类任务里只有第一种。❷ 检测是密集预测,一张图里有多个目标、每个位置都同时吐分类和回归两个输出,直接把 CST 套到 FCOS 这类单阶段检测器上会让训练极不稳定,甚至模型崩溃。❸ 回归目标是无界的框偏移,数值范围远比被 softmax 压在 [0,1] 的分类概率宽;把循环一致性直接打到回归上会让损失爆炸,Mean Teacher 在没有归一化时会出现严重的框漂移和模型坍缩。

本文的思路是把 CST 的两点核心(内层学目标域、外层回源域验证)同时扩展到分类和回归两条流,并把稳定性问题从算法层转移到优化层:整个框架搭在 Mean Teacher 上,教师由学生的参数做指数滑动平均(EMA)得到、且只吃弱增强的目标图,用时间上的集成来压住密集预测的方差;回归流里先按目标域统计量把回归偏移标准化到标准分布,再进循环。核心 idea:把域自适应检测写成一个双层优化问题——内层在目标域特征上解出「目标特征 → 教师伪标签」的线性投影,外层把同一个投影搬到源域特征上、要求它还原源域真值,用源域验证把靠背景噪声支撑的伪解筛掉;分类与回归各走一条这样的循环流,回归流额外做标准化以驯服无界坐标。

方法详解

整体框架

DSBCO 以 FCOS(anchor-free,分类与回归解耦为两个逐像素预测头)+ VGG-16 backbone 为基础,整条流水线是一条从左到右、每轮迭代闭合一次的循环。输入是源域图像与目标域图像:教师只接收弱增强(缩放、水平翻转)的目标域图像,输出带有分类概率、定位质量(centerness)和回归偏移的伪标签;学生是唯一可训练的模型,接收源域图像的强增强版本(颜色抖动、高斯模糊、随机擦除)和目标域图像的强增强版本,先用源域真值做有监督训练(Focal 分类损失 + GIoU 回归损失)。第二步是基线自训练,即实例一致性蒸馏:用教师的分类概率与 centerness 双重阈值构造二值掩码,只在掩码圈定的高可信位置上把学生的预测拉向教师的软标签。第三步是本文的核心——特征双层循环优化:在 burn-in 之后,每轮用学生的目标域特征解出一个显式线性投影(内层,Inner Ridge),再把该投影直接应用到源域特征上、要求还原源域真值(外层,Outer Projection);分类和回归各走一条这样的流,回归流在进循环前先做标准化。三路损失加权求和后回传更新学生,教师随之按 EMA 跟进,下一轮教师变了、伪标签变了,内层的外层的一切重算。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["源域与目标域强增强图像"] --> B["Mean Teacher 范式<br/>EMA 教师只吃弱增强目标图"]
    B --> C["实例一致性蒸馏<br/>分类与定位双阈值掩码筛选"]
    C -->|超过 burn-in 后开启| D["分类循环流<br/>目标域解映射,源域做验证"]
    C -->|超过 burn-in 后开启| E["回归循环流<br/>先归一化,再解映射与验证"]
    D --> F["三路损失联合回传<br/>更新学生,EMA 更新教师"]
    E --> F
    F -.->|下一轮重新生成伪标签| B

关键设计

1. Mean Teacher 范式:用 EMA 把 CST 从训练崩溃里救出来

CST 原本是图像分类算法,其内层/外层循环的推导都建立在「一个样本一个预测」的假设上;直接搬到密集预测的检测器上,训练会剧烈震荡甚至坍缩。DSBCO 的处理不是去改 CST 的循环结构,而是先换一个稳定的优化底座:学生可训练,教师不通过梯度更新,而是学生参数的 EMA,\(\theta_{tea} \leftarrow \alpha \theta_{tea} + (1-\alpha)\theta_{stu}\);同时把两个网络的数据分工固定下来——教师只吃弱增强的目标图,学生吃强增强的源域与目标域图。

这样做的道理是:密集预测在一张图上同时产出上千个位置的分类与回归输出,当前这一步学生给出的伪标签方差极大,直接拿它当监督目标等于在噪声上做自训练;EMA 教师把监督信号在时间上做了积分,弱增强又去掉了输入端额外引入的扰动,伪标签的抖动因此被压住。选 FCOS 而不是 Faster R-CNN 也是为后文服务的:FCOS 把分类与回归解耦成两个独立的逐像素预测头,双流循环优化才能在互不干扰的两套输出上分别做。这一步只解决「训练能不能稳住」,不解决「伪标签对不对」,所以它必须和后面的循环流一起用。

2. 实例一致性蒸馏:先按分类与定位双阈值筛样本,再对齐软标签

教师本身就是跨域出来的,它在目标域上的输出混着大量背景噪声;如果整张图都拿去做一致性约束,等于把背景噪声也当成监督信号固化下来。DSBCO 因此在蒸馏前先构造一个二值掩码 \(M = \mathbb{I}\left(\hat{p}_t > \tau_{cls} \land \hat{c}_t > \tau_{reg}\right)\),只有分类概率与定位质量(centerness)同时超过阈值的位置才被保留,损失只在掩码圈出的有效区域内计算。

掩码内部分两个通道对齐:分类上,教师给的是连续软标签,所以直接用 Quality Focal Loss 把学生的预测拉向教师的软标签,其中的调制因子 β 负责压低「学生已经和教师一致」的易样本的权重,让梯度集中在还没对齐的位置;回归上,用 GIoU 度量学生预测框与教师伪标签框的差异。这里双阈值不是随手加的工程细节,它正对应动机里说的三种伪标签错误形态——只看分类概率挡不住定位错,只看 centerness 挡不住分类错,两个维度同时卡才能把三种形态一次性筛掉,这正是它比「只按置信度筛伪标签」的传统自训练更干净的地方。

3. 分类循环流:把 CST 的样本核矩阵换成特征维岭回归,再用源域做验证

原版 CST 的内层要构造并求逆样本核矩阵,样本一多矩阵就病态、代价也高,而且它作用在图像级分类的输出上,用不到检测器已经解耦出来的特征空间。DSBCO 的内层改沿特征维度构造协方差,解一个代价函数为平方误差加 L2 正则的岭回归,得到把学生目标域特征 \(Z_t \in \mathbb{R}^{N_t\times d}\) 映射到教师伪标签向量 \(\hat{p}_t\) 的最优线性投影 \(W_{cls}\in\mathbb{R}^{d\times C}\)

\[W_{cls} = \left(Z_t^\top Z_t + \lambda I\right)^{-1} Z_t^\top \hat{p}_t\]

外层(Outer Projection)把在目标域上学到的这个显式映射头直接搬到源域特征 \(Z_s\) 上,要求投影结果对得上源域真实标签,\(L_{cstcls} = \left\|Z_s W_{cls} - y_s\right\|_F^2\)

关键在于这是一个「目标域学映射、源域做验证」的循环。一个真正学到了物体语义的映射,应该同时能把源域特征映射到源域标签;反过来,如果这个映射只是靠目标域的背景相关性凑出来的伪解——正是论文 Theorem 2 所说的标准自训练会收敛到的那种解——它在源域上就会产生很大的重构误差,于是被这一项直接惩罚掉。源域的有标注项在这里扮演了一个免费的正确性检验器,不需要额外的判别器、也不需要对抗训练。这也是它和 DANN 一类全局对抗特征对齐的根本区别:对抗对齐只要求两个域的特征分布「看起来一样」,对「对齐的是不是噪声和背景」不设防,而循环对齐带明确的监督方向,且分类与回归分开各自对齐。

4. 回归循环流:先把偏移标准化,再做循环一致性

回归目标是无界的框偏移,数值范围比分类概率宽得多;直接把循环一致性打到回归上会让损失爆炸、出现大范围框漂移。DSBCO 在回归流里加了一层标准化:内层先统计教师输出的目标域回归偏移 \(\hat{\delta}_t\) 的均值 \(\mu_t\) 与标准差 \(\sigma_t\),把偏移标准化到标准分布 \(\tilde{\delta}_t = (\hat{\delta}_t - \mu_t)/(\sigma_t + \epsilon)\),在这个标准空间里解出回归投影 \(W_{reg}\in\mathbb{R}^{d\times 4}\);外层则用同一组目标域统计量把源域真实标注也标准化成 \(\tilde{y}_s\),再计算 \(L_{cstreg} = \left\|Z_s W_{reg} - \tilde{y}_s\right\|_F^2\)

归一化之所以是必需的而不只是「让数值好看」:如果内层在标准化空间解、外层在原始坐标空间比,这个一致性约束就变成了两个不同量纲空间里量的比较,既不收敛,也会把无界坐标的大梯度直接放大回传。统一到标准空间后,回归循环的梯度尺度与分类循环可比,训练才稳;论文把这一步记为「把大范围回归值映射到一个稳定空间」,并用 Theorem 1 给出了回归任务的泛化上界推导,说明目标域定位误差被源域循环重构误差、学生-教师不一致和回归非鲁棒性三项共同控制(⚠️ 缓存版公式有乱码,公式的具体形式与常数项以原文及补充材料 Section A 为准)。

一个完整示例

以 burn-in 结束后的一轮迭代为例,看「cycle」到底在哪里闭合成环:

  1. 教师拿到弱增强的目标域图,逐位置输出分类概率 \(\hat{p}_t\)、centerness \(\hat{c}_t\) 和回归偏移 \(\hat{\delta}_t\),大部分位置被掩码 \(M\) 判为低可信而丢弃,只有双阈值同时过关的少数位置成为有效监督;
  2. 学生同时吃强增强的源域图与目标域图,算出有监督损失 \(L_{sup}\) 与掩码内的蒸馏损失 \(L_{distill}\)
  3. 内层:取学生的目标域特征 \(Z_t\)(列数即特征维度,行数是有效位置数),与教师的软标签做闭式岭回归,一次 \(d\times d\) 规模矩阵求逆就解出 \(W_{cls}\);回归流先用 \(\mu_t,\sigma_t\) 标准化偏移,再同理解出 \(W_{reg}\)
  4. 外层:把这两个在目标域学到的投影原封不动搬到源域特征 \(Z_s\) 上,分类结果与源域标签比、回归结果与标准化后的源域标签 \(\tilde{y}_s\) 比,得到 \(L_{cstcls}\)\(L_{cstreg}\)
  5. 三路损失加权求和回传,更新学生参数;教师按 EMA 跟随学生;
  6. 下一轮教师的参数变了 → 伪标签和掩码都变了 → \(Z_t\)\(\mu_t\)\(\sigma_t\) 和两个投影矩阵全部重算。

这一圈正是「伪标签 → 解映射 → 源域验证 → 更新模型 → 生成新伪标签」的循环:伪标签不只是被当作监督目标被动接受,它每一轮都要经过源域那一侧的验证才算数。

损失函数 / 训练策略

总目标是源域有监督损失、实例级一致性蒸馏损失、特征级循环对齐损失三者之和:

\[L_{total} = L_{sup} + \lambda_{unsup} L_{distill} + \lambda_{cycle}\left(L_{cstcls} + \eta L_{cstreg}\right)\]

其中 \(L_{sup}\) 由 Focal 分类损失与 GIoU 回归损失构成(用 GIoU 而非 L1,是为了避免尺度敏感与标准 IoU 的梯度消失,这对 anchor-free 模型的早期稳定性很关键);\(L_{distill}\) 在掩码圈定的有效区域内把分类与回归两路一致性损失取平均;\(\lambda_{unsup}\)\(\lambda_{cycle}\) 平衡无监督信号,\(\eta\) 单独控制回归循环的相对权重。训练分三段:源域上 30k 次有监督预训练,随后 90k 次自适应迭代,SGD,学习率 0.004,单张 RTX 3090;自训练基线中教师过滤置信度低于 0.45 的预测;双层循环优化在 \(t > T_{burn}\) 之后才开启(先靠蒸馏把教师喂稳,再启动循环)。消融出的最优超参为 \(\lambda_{cycle}=0.5\)\(\lambda_{unsup}=0.01\)\(\eta=0.01\)

实验关键数据

主实验

四个标准跨域场景,指标为 IoU=0.5 下的 mAP(Cityscapes / Foggy Cityscapes / BDD100K 报所有共享类,KITTI→Cityscapes 与 Sim10K→Cityscapes 报 Car 的 AP):

场景 数据集(源 → 目标) 指标 DSBCO 之前最强 FCOS 方法 提升
恶劣天气 Cityscapes → Foggy Cityscapes mAP 64.7 HT 50.4 +14.3
合成源 Sim10K → Cityscapes Car AP 68.6 HT 65.5 +3.1
不同相机 KITTI → Cityscapes Car AP 62.2 HT 60.3 +1.9
多样场景 Cityscapes → BDD100K mAP 41.9 HT 40.2 +1.7

同一个表里还给出了一批非 FCOS 检测器的方法作为参照(Faster R-CNN 的 AT+REACT / CMT+DSD-DA、Def DETR 的 MRT / MTM、RetinaNet 的 MGCAMT)。以 Foggy Cityscapes 为例,DSBCO 的 64.7 mAP 比全表第二好的 MGCAMT(55.9)高 8.8,比 FCOS 系第二好的 HT(50.4)高 14.3;逐类看,提升集中在难类:Truck 58.1(HT 32.7)、Train 62.2(HT 49.1)、Motor 58.8(HT 40.1),Person/Car 这类主类的提升相对温和。

需要说清楚的一点:论文的「exceeds all existing FCOS detector methods」严格说是限定在 FCOS 检测器内的结论。跨检测器看,BDD100K 上 MGCAMT(RetinaNet)的 44.8 高于本文的 41.9,KITTI→Cityscapes 上 MGCAMT 与本文同为 62.2;本文在四个场景里对 FCOS 基线一致领先,但不是所有检测器口径下的全场最优。

双层优化的开销(论文 Table 5,\(N\) 为样本数,\(T\) 为标准 ST 的单位训练时间,\(M\) 为朴素双层的内部梯度步数,通常 \(M\approx50\)):

优化策略 复杂度 训练时间
标准 ST \(O(N)\) \(T\)
朴素双层优化 \(O(N\cdot M)\) \(\approx M\cdot T\)
DSBCO(本文) \(O(N)\) \(\approx 1.2\cdot T\)

标准双层优化在检测上不可用,是因为密集框样本会反复构造大规模 Hessian,既慢又不稳;DSBCO 用紧凑的特征维协方差估计替代样本核矩阵求逆,并且因为岭回归有闭式解,直接跳过了内层的迭代求解,训练时间只比标准自训练多约 20%。

消融实验

在 Cityscapes → Foggy Cityscapes 上的增量消融(mAP %):

配置 \(L_{distill}\) \(L_{cstcls}\) \(L_{cstreg}\) mAP
Standard ST 41.2
+ Instance Consistency 48.3
+ Classification Cycle 54.5
+ Regression Cycle 50.9
DSBCO(完整) 64.7

超参敏感性(论文 Fig. 4 / Fig. 5):\(\lambda_{cycle}=0.5\)\(\lambda_{unsup}=0.01\)\(\eta=0.01\) 时最优,基础学习率在 0.004 时最好。

关键发现

  • 实例一致性蒸馏是收益最大的一块地基:41.2 → 48.3(+7.1),说明「双阈值筛样本 + 软标签对齐」本身就比朴素自训练强不少;这也符合动机,标准 ST 的上限主要就是被不可靠伪标签压住的。
  • 两条循环流的贡献不对称,且组合后明显超加:只加分类循环到 54.5(+6.2),只加回归循环到 50.9(+2.6),两条一起上到 64.7,比最好的单流配置还高 10.2,远超两者单独增益之和。语义对齐看来是主要收益来源,回归循环单独用收益有限,但它在场时能把分类流的效果再往上顶一截。⚠️ 论文没有解释这个超加性从何而来,我倾向于认为是「语义分类被对齐后,回归流的标准空间才真正同分布」——即回归归一化依赖分类流先把类内特征聚拢,两者互为前提;这属于我的推断,不是原文结论。
  • 场景差异很说明问题:提升最大的是恶劣天气(+14.3),最小的是 BDD100K(+1.7)。Foggy Cityscapes 的退化主要是可见度下降导致的定位漂移,恰好是回归循环流直接针对的问题;BDD100K 的域差异更多来自场景布局与地理位置,不是单靠坐标空间标准化能解决的。极端场景下 Sim10K→Cityscapes 的合成到真实纹理鸿沟上也有 +3.1 的收益,说明方法不是只对某一种域偏移有效。
  • 特征空间可视化:t-SNE 下 DSBCO 的类簇比标准 ST 更紧、边界更清(Person 与 Rider 聚得更紧,Bicycle/Motor、Train/Bus 之间的间隔更明显),与「循环对齐把语义特征拉齐」的说法一致。
  • 失败案例有明确模式:夜间低能见度下的远处车辆漏检、白天运动模糊下的近处行人漏检、夜间高速行驶时的严重模糊漏检,以及夜间把 Train 误判成 Car。前三个都是小目标 + 成像退化的组合,最后一个说明类间语义在极低照度下仍会串。

亮点与洞察

  • 「内层目标域学映射、外层源域验证」是把 CST 迁移到检测的关键抽象:它把伪标签筛选题变成了一个可闭式求解的验证题——源域标注本身就是检验器,不需要额外判别器或对抗训练,也不用调一个容易崩的对抗平衡系数。任何「源域有标注、目标域无标注」的回归/结构化预测任务都能借用这个形状。
  • 用特征维协方差替代样本核矩阵是一箭双雕:原版 CST 的样本核矩阵随样本数增长且容易病态,换到特征维度后矩阵规模只取决于特征通道数,是固定的,加上岭回归有闭式解,直接把朴素双层的 \(O(N\cdot M)\) 压回 \(O(N)\)、训练时间只贵约 20%。这是「把双层优化做得能用」而非「做得更花哨」的典型工程取舍。
  • 回归归一化是让 cycle 在回归上成立的前提,而非锦上添花:分类概率被 softmax 压在有界区间,框偏移是无界的,两侧量纲不对齐时一致性约束会直接把大梯度放大回传。这个观察朴素但常被忽视,论文还配了 Theorem 1 的回归上界说明三个误差项如何被控。
  • 理论部分给出了「标准 ST 为什么会失败」的正面解释(Theorem 2:背景相关性主导伪标签时标准 ST 收敛到伪解、目标域误差存在不可约下界 ε),而不只是证明自己的方法有界;这为「源域验证能拒绝伪解」(Theorem 3)提供了动机,理论叙事和方法设计是咬合的。⚠️ 缓存版公式排版损坏严重,公式的确切形式请以原文及补充材料为准。
  • 可迁移的设计:任何用伪标签迭代的任务(半监督分割、自训练式关键点检测、域自适应深度估计)都可以套「内层在目标域解一个轻量显式映射 + 外层在有标注域上验证」这套结构,代价是每步一次 \(d\times d\) 求逆,通常远小于反向传播本身。

局限与展望

  • 作者承认的局限:把这种双流优化扩展到 Transformer 架构(DETR 系)还需要进一步研究;固定的双阈值筛选机制在复杂背景噪声下可能失效,未来要做自适应策略。
  • 我看到的局限:实验只在 FCOS + VGG-16 一种骨架上做,没有 ResNet / Transformer backbone 的对照,无法判断收益有多少来自骨架选择;跨检测器的表述比数字更自信(BDD100K 与 KITTI→Cityscapes 上并没有全面最优);理论部分给出的是上界与收敛性陈述,实验里没有验证这个界是否紧、也没有测各误差项的实际数值;效率对比只报了训练时间和复杂度阶数,没有报显存与推理开销,而内层每步的矩阵求逆在 \(d\) 较大时的常数开销被 \(O(N)\) 的记号掩盖了。
  • 可改进方向:把固定阈值换成基于不确定性的自适应筛选,让掩码在背景噪声强的场景(如夜间 BDD100K)不至于过松或过紧;把双流扩展到 DETR 系,但需要注意 DETR 的预测不是逐像素解耦的,内层解 \(W\) 的形式必须重新设计;补一组每类 AP 的对照,把收益到底来自定位还是分类拆开,也顺带验证文中「Bus 等刚性结构上的增益来自回归循环」这类解释。

相关工作与启发

  • vs CST(Liu et al., NeurIPS 2021): 原版 CST 在图像级分类上放松共享分类器假设、用内层/外层循环缓解伪标签不可靠;本文做了两处必要改造才让它适用于检测——把不稳定的样本核矩阵求逆换成特征维协方差 + 岭回归闭式解(效率从 \(O(N\cdot M)\) 降到 \(O(N)\)),并新增一条带归一化的回归流,把 CST 从「分类器层面」下沉到「特征空间层面」。
  • vs Mean Teacher / 一致性蒸馏类(Tarvainen & Valpola;AT、CMT 等): 它们只做实例级一致性,教师软标签基本被无条件信任(或仅按置信度过滤),上限仍受伪标签质量约束;DSBCO 把 MT 只当作稳定底座,在其之上再叠一层带源域验证的特征级循环损失,这也是消融里 48.3 → 64.7 的那段差距。
  • vs DANN / 对抗特征对齐: 对抗对齐是让判别器分不出两个域,属无差别的全局约束,噪声和背景会被一起对齐;本文的循环对齐有明确监督方向(要求映射在源域上还原标签),且分类与回归两条流分开对齐,避免了对齐目标被回归量主导。
  • vs HT(Harmonious Teacher)/ SIGMA / SIGMA++: 同样基于 FCOS,但走的是教师和谐化、语义图匹配的路线;DSBCO 与它们的差距主要体现在 Foggy Cityscapes 的难类上(Truck 58.1 vs HT 32.7、Motor 58.8 vs 40.1),提示「把伪标签当监督目标」与「把伪标签当待验证映射」是两种不同的收益来源。

评分

  • 新颖性: ⭐⭐⭐⭐ 把图像级 CST 真正迁移到检测并给出双流 + 归一化的必要改造,「源域验证投影」的思路比单纯加一致性损失更有想法。
  • 实验充分度: ⭐⭐⭐ 四个基准 + 增量消融 + 效率对比,覆盖够用;但只有一种骨架、缺跨 backbone 对照,理论界未做实验验证。
  • 写作质量: ⭐⭐⭐ 方法与动机的逻辑链清楚,同时明确列出四个 Theorem 与消融;不足是跨检测器的结论表述比数字更自信,理论与实验之间缺少验证环节。
  • 价值: ⭐⭐⭐⭐ 给出了一套开销可控、可复用的「双层/循环自训练用于密集预测」模板,且暴露了标准自训练在检测上的失败模式,对后续 DAOD 工作有直接的借鉴价值。