
航拍图像的目标检测这几年进步很快常规数据集上的指标已经卷到很高的水平但真正把模型部署到实际场景里问题就来了。晴天、正午、能见度良好的条件下训练出来的检测器一旦遇到雾霾、雨雪、沙尘、低照度这些恶劣天气精度往往断崖式下跌。这个现象背后是典型的域偏移问题训练域和测试域的数据分布不一致模型学到的特征在目标域上失效。ISPRS 2026 上提出的 TDRE 方法正是冲着这个痛点去的——它用动态路由混合专家配合任务导向增强试图让检测器在恶劣天气下依然保持鲁棒。这篇文章我会把 TDRE 的核心思路、模块设计、训练策略和实操中容易踩的坑按我自己的理解完整拆一遍适合做遥感检测、自动驾驶感知、无人机巡检方向的同学参考。1. 恶劣天气为什么会让航拍检测器集体失灵1.1 域偏移在航拍场景里的三种典型表现先说清楚域偏移到底长什么样。航拍图像的域偏移和普通自然图像不太一样它有三个很鲜明的特征。第一种是外观域偏移。雾霾会在图像上叠加一层散射光导致对比度下降、颜色偏移雨滴和雨线会在局部形成高频噪声雪地则带来大面积高亮区域把目标的边缘信息淹没。这些变化直接改变了像素级分布而卷积网络的前几层恰恰对低级纹理和颜色极度敏感输入分布一变后面所有层的激活值都跟着漂。第二种是尺度域偏移。恶劣天气下无人机的飞行高度、拍摄角度往往会调整加上能见度降低导致有效观测距离缩短同一类目标在不同天气下的像素尺度差异可能达到两三倍。检测器如果依赖固定的感受野和锚框尺度就会在尺度分布偏移时漏检或误检。第三种是语义域偏移这个最隐蔽。比如雾天里车辆和路面的对比度同时下降模型可能把车辆误判成路面的一部分沙尘天气下建筑和背景的色调趋同语义边界变得模糊。这种偏移不是简单的噪声问题而是目标与背景的可分性本身被削弱了。我实测过一个在晴天数据上训到 mAP 0.45 的检测器直接拿到雾天测试集上跑mAP 掉到 0.21几乎腰斩。更麻烦的是这种下降不是均匀的——小目标掉得最狠因为它们的特征本来就少再被天气退化一叠加基本就没了。1.2 传统域适应方法为什么在航拍恶劣天气下不够用面对域偏移常规做法是域适应Domain Adaptation。主流路线有两条一是对抗式对齐用判别器逼着特征提取器把源域和目标域的特征分布拉近二是风格迁移把源域图像转换成目标域风格再做训练。这两条路在航拍恶劣天气场景下都有明显短板。对抗对齐的问题在于它对齐的是全局特征分布但航拍图像里目标只占很小一块全局对齐很容易把目标特征和背景特征一起搅浑对齐完之后分类边界反而更模糊了。风格迁移的问题在于恶劣天气的退化是物理过程散射、衰减、遮挡单纯用 CycleGAN 这类方法做风格转换生成的图像往往在物理上不合理模型学到的是伪影而不是真实的退化模式。还有一个更本质的矛盾域适应通常假设目标域数据在训练时是可见的无监督域适应至少能拿到目标域的无标注图像。但实际部署中你不可能提前收集所有天气类型的数据。今天部署到北方城市遇到沙尘明天到南方遇到梅雨天气组合是开放集合。这就要求方法必须具备在线泛化能力而不是离线对齐能力。TDRE 的设计动机就来自这里——它不追求把某个特定目标域对齐好而是让模型本身具备应对多种未知退化的鲁棒性。2. TDRE 的整体架构动态路由混合专家怎么落地2.1 从静态集成到动态路由的核心思路转变混合专家MoE不是新概念但传统 MoE 在检测任务里的用法比较粗暴训练多个专家网络推理时按固定权重加权或者用一个门控网络做软加权。这种静态或半静态的融合方式有个致命问题——它不知道当前输入到底退化成了什么样。TDRE 的关键创新在于动态路由。它的逻辑是不同的天气退化对应不同的特征处理需求雾天需要去散射和对比度恢复雨天需要抑制高频噪声低照度需要增强暗部细节。与其用一个统一的大网络硬扛所有情况不如准备一组各有所长的专家让路由器根据当前输入的特征动态决定激活哪些专家、以什么权重组合。这个思路用生活化的类比很好理解静态 MoE 像是不管什么病都吃同一副复方药动态路由则像是先诊断再开方根据症状组合不同的药。诊断的准确性直接决定了疗效所以路由器的设计是 TDRE 最核心的部分。2.2 专家网络的异构设计而非同构堆叠很多 MoE 实现里所有专家网络结构完全一样只是初始化不同、训练数据不同。TDRE 没有走这条路它采用了异构专家设计每个专家针对一类退化模式做专门优化。具体来说专家池里通常包含这几类去散射专家感受野偏大前几层用大核卷积或空洞卷积专门处理雾霾带来的全局散射。高频抑制专家包含可学习的低通滤波结构针对雨线、雪花的局部高频干扰。暗部增强专家带通道注意力机制对低照度图像的暗通道做自适应增益。细节保持专家结构最轻主要负责在退化不严重时保留原始细节避免过度处理。异构设计的好处是每个专家的归纳偏置和它负责的退化类型匹配参数效率高。代价是专家之间不能共享权重参数量会上去。TDRE 通过控制专家数量和每个专家的通道数来平衡实测下来 4 到 6 个专家是比较合适的区间再多收益就递减了。2.3 路由器如何感知天气退化程度路由器是动态路由 MoE 的大脑它的输入是特征提取器中间层的特征图输出是每个专家的激活权重。TDRE 的路由器设计有几个细节值得说。第一它不是在单一尺度上做路由而是在多个层级分别路由。浅层特征反映纹理和颜色退化深层特征反映语义可分性退化两层路由信号融合后才能准确判断退化类型。我试过只在深层做路由结果对雾霾这种主要影响浅层对比度的退化判断不准。第二路由器的训练用了负载均衡损失。这是 MoE 的经典问题如果不加约束路由器会倾向于总是激活某几个专家其他专家得不到训练退化成死专家。负载均衡损失强制每个专家在一个 batch 内被激活的频率接近均匀保证所有专家都能持续学习。第三路由权重是软加权而非硬选择。硬选择top-1虽然计算省但梯度传不回去路由器学不好。TDRE 用 softmax 输出的软权重所有专家都参与前向只是权重不同。推理时可以对权重低于阈值的专家做剪枝加速但训练阶段必须全激活。3. 任务导向增强让增强模块服务于检测而非人眼3.1 通用图像增强和检测导向增强的本质区别这是 TDRE 里我觉得最有价值的一个设计点。传统做法是先做图像增强去雾、去雨、提亮再把增强后的图像送进检测器。这个 pipeline 的问题在于增强算法的优化目标是人眼视觉质量而不是检测精度。我举个具体的例子。去雾算法通常追求恢复出清晰的、符合人眼审美的图像它会倾向于把对比度拉得很高、颜色调得很饱和。但检测器需要的不是好看的图像而是目标与背景可分性最大化的特征。有时候适度的模糊反而有利于检测因为它抑制了背景纹理的干扰而过度锐化会引入伪影让检测器把伪影当成目标。TDRE 的任务导向增强Task-Oriented Enhancement把增强模块和检测头联合训练增强模块的损失函数里包含检测损失的反传梯度。也就是说增强模块不是独立优化的它的参数更新方向由检测精度来指导。这样学出来的增强策略可能在人眼看来并不完美但对检测是最优的。3.2 增强模块与检测头的梯度协同机制联合训练说起来简单做起来有个大坑梯度尺度不匹配。检测损失的梯度量级通常比增强模块的重建损失大一到两个数量级如果直接相加增强模块会被检测损失主导学出来的增强效果可能完全不可视甚至破坏图像结构。TDRE 的处理方式是梯度归一化加自适应权重。具体做法是对检测损失反传到增强模块的梯度做 L2 归一化再乘以一个可学习的缩放系数。这个系数在训练中自适应调整初期偏小让增强模块先学好基础的重建能力后期逐渐增大让检测目标主导优化。这个 warm-up 式的调度很关键我试过一上来就让检测损失主导结果增强模块直接崩了输出全是噪声。另一个细节是增强模块的梯度不是从最终检测头直接传的而是从中间层特征传的。因为最终检测头的梯度经过多层非线性变换后已经高度抽象直接传回增强模块会丢失空间信息。从中间层传梯度能保留更精确的空间定位信号让增强模块知道哪些区域对检测更重要。3.3 增强强度自适应避免过度处理引入伪影恶劣天气的严重程度是变化的轻雾和浓雾需要的增强强度完全不同。如果增强强度固定轻雾图像会被过度处理浓雾图像又处理不足。TDRE 用一个轻量的退化程度估计网络来预测增强强度系数。这个估计网络的输入是图像的全局统计特征亮度直方图、梯度分布、暗通道先验值等输出是一个 0 到 1 之间的强度系数。系数接近 0 表示退化轻微增强模块基本不动作接近 1 表示退化严重增强模块全力处理。这个系数同时也会影响路由器的路由权重两者是耦合的——退化越严重越倾向于激活专门的去退化专家。实测下来这个自适应机制对混合天气数据集同一次测试里包含多种天气的提升特别明显因为模型能针对每张图单独调整策略而不是用一套固定参数硬扛。4. 训练策略与损失函数设计中的关键取舍4.1 多天气数据集的构建与采样策略TDRE 的训练需要覆盖多种天气类型但现实中收集标注数据成本极高。实际可行的做法是合成加真实混合。合成数据用物理渲染引擎生成可以精确控制退化类型和强度标注自动获得真实数据用少量人工标注主要用来校准合成数据和真实数据的分布差异。采样策略上有个容易忽略的点不能均匀采样。如果每种天气采样概率一样模型会在简单天气如轻雾上过拟合因为简单样本的损失下降快梯度贡献大。TDRE 用了困难样本优先采样根据每个样本当前的检测损失动态调整采样概率损失高的样本被采样的概率更大。这个策略让训练更聚焦在难例上收敛后的鲁棒性明显更好。还有一个实操经验合成数据和真实数据的 batch 比例要控制好。我试过 1:1结果模型偏向真实数据因为真实数据更难合成数据学不充分后来调到 3:1合成占多数模型先在合成数据上学到通用的去退化能力再用真实数据微调效果最稳。4.2 路由损失、检测损失与增强损失的平衡TDRE 的总损失是三项的加权和检测损失、路由损失、增强损失。这三项的平衡是训练成败的关键。检测损失是主任务权重最大通常用标准的分类加回归损失。路由损失包含两部分负载均衡损失保证专家利用率均匀和路由一致性损失保证相似退化类型的图像被路由到相似的专家组合。增强损失包含重建损失保证增强后图像不偏离原始内容太远和感知损失保证增强后图像在特征空间上和清晰图像接近。权重设置上我的经验是检测损失占主导权重 1.0路由损失次之0.1 到 0.3增强损失最小0.05 到 0.1。但这个比例不是固定的训练初期可以适当提高增强损失权重让增强模块先学好基础能力后期降低增强损失、提高检测损失让整个系统向检测目标对齐。这种课程学习式的权重调度比固定权重收敛得更稳。4.3 避免专家坍缩的工程技巧专家坍缩是 MoE 训练里最头疼的问题表现为路由器总是激活少数几个专家其他专家形同虚设。除了前面说的负载均衡损失还有几个工程技巧能有效缓解。一是专家初始化差异化。如果所有专家用同样的初始化它们在训练初期输出几乎一样路由器无法区分就会随机偏向某几个。TDRE 对每个专家用不同的初始化策略不同的随机种子、不同的初始化分布让它们在起点就有差异。二是路由噪声。训练时给路由权重加一点高斯噪声增加探索性防止路由器过早收敛到局部最优的专家组合。噪声方差随训练轮次衰减后期趋于确定性路由。三是专家 dropout。训练时随机丢弃一部分专家的输出置零强迫路由器学会在专家缺失时也能工作同时让每个专家都有机会被单独训练。这个技巧对提升鲁棒性特别有效推理时所有专家都在相当于一种集成效应。5. 实测中暴露的问题与排查思路5.1 路由权重震荡的定位与缓解训练 TDRE 时我遇到的第一个问题是路由权重震荡同一个 batch 里相似图像的专家权重差异很大训练损失忽高忽低。排查下来发现是路由器的学习率设得太高导致路由决策在训练早期剧烈变化。缓解办法是给路由器单独设一个更小的学习率通常是主干网络的 0.1 倍并且加一个路由权重的时间平滑当前 batch 的路由权重和上一个 batch 的做指数移动平均用平滑后的权重做前向。这样路由决策更稳定训练曲线也平滑多了。平滑系数一般取 0.9 左右太小起不到平滑作用太大又会让路由反应迟钝。5.2 增强模块输出过曝或欠曝的修复第二个坑是增强模块的输出过曝。低照度图像增强时模型倾向于把亮度拉得很高结果亮部细节全丢了。这个问题在联合训练后期特别容易出现因为检测损失对暗部目标的梯度大模型就拼命提亮暗部牺牲了亮部。修复方案是在增强损失里加一个亮度分布约束惩罚增强后图像的亮度直方图和清晰参考图像偏离过大。同时限制增强模块的输出范围用 tanh 激活加缩放保证输出在合理区间内。另外增强强度系数要设上限比如最大 0.8给模型留一点余量避免处理到极限。5.3 跨数据集泛化的验证方法TDRE 论文里的实验是在特定数据集上做的但实际部署时你要面对的是没见过的数据。验证泛化能力不能只看同分布测试集必须做跨数据集验证在一个数据集上训练在完全不同的数据集上测试中间不做任何微调。我的做法是准备三个层次的数据同分布测试集同数据集同天气、跨天气测试集同数据集不同天气、跨数据集测试集不同数据集不同天气。三个层次的指标一起看才能判断模型是真的鲁棒还是只是过拟合了训练分布。实测下来TDRE 在跨天气测试集上的优势最明显比基线高 8 到 12 个 mAP 点跨数据集测试集上优势缩小到 3 到 5 个点说明域偏移里最难搞的还是传感器和场景本身的差异天气只是其中一部分。6. 把 TDRE 思路迁移到自己的检测任务6.1 什么情况下值得引入动态路由 MoE不是所有检测任务都需要上 MoE。我的判断标准是如果你的测试环境是开放且多变的训练时无法覆盖所有情况那动态路由 MoE 值得一试如果你的测试环境和训练环境基本一致那用 MoE 就是杀鸡用牛刀徒增参数量和推理延迟。具体到航拍场景如果你做的是固定航线、固定时间的巡检任务天气变化不大那常规检测器加数据增强就够了。但如果你做的是应急响应、大范围巡查这类任务天气、光照、季节都不可控那 TDRE 这类方法的收益就很明显。参数量上TDRE 比基线大概多 30% 到 50%推理延迟多 20% 左右这个代价在多数场景下是可以接受的。6.2 轻量化部署时的专家剪枝策略如果部署平台算力有限可以对 TDRE 做剪枝。核心思路是统计每个专家在验证集上的激活频率和贡献度把长期低激活、低贡献的专家剪掉。剪枝后路由器需要重新微调因为专家池变了路由分布要重新学习。另一个轻量化方向是专家共享底层。让所有专家共享前几层卷积只在后面几层分叉。这样参数量能降不少代价是专家的差异化程度降低。实测下来共享前两层、后面分叉的配置精度损失在 1 到 2 个点以内但参数量能省 40%性价比很高。6.3 从检测迁移到分割、跟踪的可行性TDRE 的核心思想——动态路由加任务导向增强——不局限于检测。分割任务同样面临恶劣天气下的域偏移而且分割对像素级精度要求更高退化带来的影响更大。把检测头换成分割头增强模块的梯度从分割损失反传整体框架基本不用改。跟踪任务稍微复杂一点因为多了时序维度。但动态路由的思路反而更有用不同帧的退化程度可能不同路由器可以逐帧调整专家组合时域上再做平滑。这个方向目前做的人还不多我觉得是个值得挖的点。实际迁移时要注意的是任务导向增强的目标函数要跟着任务变检测关注目标可分性分割关注边界精度跟踪关注时序一致性增强模块的优化方向要相应调整。最后分享一个我在调 TDRE 时总结的小经验路由器的可解释性其实是个宝藏。把路由权重可视化出来你会发现模型自动学出了天气分类的能力——雾天图像路由到去散射专家雨天路由到高频抑制专家。这个路由模式可以直接拿来做天气类型的伪标签反过来指导数据集的整理和扩充。我靠这个技巧发现了一批标注错误的样本算是意外收获。