
自动驾驶系统最怕什么?不是复杂的十字路口,不是突然横穿的行人,而是一场突如其来的暴雨或浓雾。当摄像头被雨滴模糊、激光雷达在雪天失灵,再聪明的感知算法也会抓瞎。
现有的解决方案要么需要昂贵的配对数据(同一场景的晴天vs雨天),要么用粗糙的物理模型合成假天气——效果嘛,一眼就能看出是“假的”。而这篇工作提出了Cyclone,一个基于扩散模型的统一天气编辑框架。它不需要任何配对数据,就能在自动驾驶场景中同时完成天气合成(晴天变雨天)和天气去除(雾天变晴天),而且生成的图像足够逼真,能直接提升下游感知任务的表现。
核心痛点:为什么现有方法不够用?
天气编辑本质上是一个图像到图像的翻译问题——输入一张驾驶场景图,输出同一场景在不同天气下的样子。但问题的棘手之处在于,现实世界中你几乎不可能收集到真正的配对数据。你没法让老天爷在同一时刻、同一位置给你表演晴转雨再转雪。
物理建模方法(如基于大气散射模型的去雾)只能给出粗略的近似,难以覆盖真实天气的复杂变化。而近年流行的扩散模型编辑方法,要么依赖反演(如SDEdit)容易不稳定,要么需要大量人工标注的配对数据(如InstructPix2Pix),要么干脆是面向“美学编辑”设计的——用在自动驾驶这种安全关键场景上,结构失真就是致命问题。
更麻烦的是,大多数方法只能做一件事:要么加天气,要么去天气。当你需要同时处理雾、雨、雪、晴四种条件六种转换方向时,传统方案需要为每一对域训练单独的模型。
原理拆解:Cyclone怎么做?
Cyclone的核心思路非常直白:用循环一致性约束保证结构不散架,用教师模型蒸馏防止模型偷懒输出恒等映射,再用CLIP文本引导控制天气语义方向。
训练流程:前向翻译再后向翻译
图2:Cyclone的训练管道,展示了前向翻译(x_0→ȳ)和后向翻译(ȳ→x̃)的循环一致过程,以及教师模型通过EMA更新提供正则化的机制。训练时,对于任意一张输入图像 ,模型先做一次前向翻译:给定目标天气的文本描述 (如“snowy”),把 转换成目标天气下的图像 。然后,模型再做一次后向翻译:以源天气描述 和刚生成的 为条件,尝试重建回原始图像 。
这个重建过程由两个损失函数驱动。重建损失 要求模型能逆转自己的“翻译”——即给定源域条件时,恢复出原始图像。而循环损失 则要求:即使输入是已经“翻译过”的图像 ,只要给出正确的源域文本提示,模型仍然能回到 。
这两个损失本质上在几何上约束了一个事实:不管中间经过了哪个天气域的翻译,只要最终目标是回到源域,输出就应该一致。论文用三角不等式和Jensen不等式给出了一个上界分析,证明这种多域循环一致性隐式地实现了翻译不变性——不需要额外的不变性损失项。
核心创新:为什么需要教师模型?
这里有一个微妙的陷阱。因为不存在真实的 作为监督,模型很容易找到一条捷径:直接忽略天气条件,输出恒等映射——也就是输入什么就输出什么。反正重建损失算的是输出和输入的差异,输出原图损失就是零。
CycleGAN解决这个问题靠的是对抗训练:每个域配一个判别器,逼着生成器输出“像那么回事”的图像。但如果你有四个天气域,就要维护一堆判别器,工程上很快就失控了。
Cyclone的做法更聪明:用一个冻结参数的教师模型作为“分布守门人”。教师模型的权重由学生模型通过指数移动平均(EMA,动量0.9999)更新,因此教师提供的是一个稳定、缓慢演化的参考分布。蒸馏损失 惩罚学生输出 与教师输出 之间的差异——本质上在说:“你的输出不能偏离预训练扩散模型已经学会的真实图像分布太远”。
这相当于用教师模型替代了GAN的判别器,但开销小得多:不需要额外的判别网络,也不需要对抗训练的不稳定性博弈。
文本引导:在CLIP空间找天气方向
最后一个组件是CLIP损失。想法很直接:CLIP模型提供了一个联合的图像-文本嵌入空间。在这个空间里,从“clear”到“foggy”的图像变化向量,应该和从“clear”到“foggy”的文本变化向量方向一致。
公式(7)做的就是这件事:计算图像域的变化方向 和文本域的变化方向 之间的余弦相似度,鼓励两者对齐。这给了模型一个高层语义层面的引导信号——而不仅仅是像素级的重建约束。
完整的学生训练目标:
四个损失各司其职:重建损失保细节,循环损失保结构,蒸馏损失防过拟合,CLIP损失控语义方向。
实验验证:数据说话
SOTA对比
表1:Cyclone与多种基准方法在天气合成和天气去除任务上的定量对比。定量结果来看,Cyclone在FID指标上相比同样使用非配对数据的CycleGAN和CycleNet,有约5-10的显著优势。相比依赖配对数据的大模型如Qwen-Image-Edit,Cyclone参数量少20倍,推理速度快100倍,但多项指标反而领先。
Acc_cls(天气分类准确率)这一项尤其说明问题:如果生成的“雪天”图像能被分类器准确识别为雪天,说明天气效果确实“做进去了”。Cyclone在这个指标上表现突出,意味着它生成的天气效果不仅看起来逼真,而且语义上也站得住脚。
可视化对比:眼见为实
图3:Cyclone与多种基准方法在天气合成和天气去除任务上的可视化对比。图3展示了各方法在不同天气条件下的编辑效果。Histoformer和AWRaCLe这类专用天气恢复方法,在真实场景下泛化很差——输出和输入几乎没区别。BAGEL能加天气但去不掉:潮湿路面、积雪这些“顽固效果”纹丝不动。Qwen-Image-Edit作为大模型,加天气的能力不错,但去除效果明显不行。
最值得对比的是同样是循环一致性路线的CycleGAN和CycleNet。CycleGAN的输出有明显的色偏和伪影,CycleNet则容易发生过拟合——虽然在训练集上表现还行,但本质上是“记住了输入”而不是“学会了转换”。Cyclone则在不同天气条件下都保持了场景结构,同时天气效果的逼真度明显更高。
消融实验:每个组件到底贡献了什么?
表3:消融实验,分析各损失组件对模型性能的影响。移除循环一致性损失后,DINO-Struct(结构保持指标)大幅下降——模型失去了保留输入结构的能力,只能靠文本条件自由发挥,虽然CLIP相似度还行,但场景已经“面目全非”了。
移除蒸馏损失后,DINO-Struct反而不降反升——但这恰恰说明了问题:模型在“偷懒”。没有教师的分布约束,模型倾向于输出和输入高度相似的图像(恒等映射),结构当然保持了,但天气效果根本没加上去——Acc_cls和FID大幅恶化。
移除CLIP损失后,细粒度细节丢失明显——CLIP用全局嵌入表征图像,对像素级细节不敏感,单用它会产生不必要的伪影。但把它和蒸馏损失配合使用时,蒸馏损失提供的细粒度分布约束恰好弥补了CLIP的盲区。
完整模型在结构一致性和文本保真度之间取得了最佳平衡。
图4:消融研究的可视化对比,展示了移除不同组件后的天气效果和场景结构差异。视觉上也能印证:移除recon和cycle组件后,场景结构明显失真;移除distill和CLIP后,天气效果变得含混不清。完整模型同时保持了场景几何和天气效果的保真度。
收敛速度对比
图9:Cyclone与CycleNet在不同训练迭代次数(100到50k)下的雾天转晴天效果对比。图9展示了一个有趣的发现:CycleNet的收敛曲线有明显的“突变”特征——训练5k到10k次迭代间突然收敛,但随后缓慢过拟合,伴随严重的色相偏移。Cyclone则平滑得多,在15-20k迭代内就能生成逼真图像,而且可以安全地训练更长时间而不过拟合。这意味着在实际工程中,Cyclone不需要像CycleNet那样小心翼翼地选择早停点。
应用:不止是好看的图片
天气去除提升感知任务
这才是自动驾驶从业者最关心的问题:去完天气,感知真的变好了吗?
表4:在SHIFT和ACDC数据集上,天气去除对深度估计、语义分割、目标检测任务的影响。答案是肯定的。在SHIFT数据集上,使用Cyclone去除恶劣天气后:
- • 目标检测mAP从24.93提升到28.86(提升15.8%)
在ACDC数据集上同样观察到一致的提升趋势。这说明Cyclone生成的“去天气”结果不仅是视觉上好看,对于下游算法的“理解”能力也有实际帮助。
图6:天气去除前后,深度估计、语义分割、目标检测任务的可视化对比。从图6可以直观看到,去除雨雾后,深度图的轮廓更清晰,分割图中物体的边界更准确,检测框也更完整。
视频级时间一致性
独立处理每一帧会引入闪烁和不一致的问题——雨天转晴天的过程中,同一辆车的颜色可能在相邻帧之间跳变。Cyclone的方案是:用图像模型生成伪配对数据,然后把它作为条件去微调视频扩散模型(SVD),让视频模型学会在保持时间一致性的同时完成天气编辑。
表2:视频编辑的时间一致性定量对比,SVD-ft w/ Cyclone在FVD、TF、MS指标上显著领先。
图10:不同时间点上的视频帧对比,SVD-ft的视频模型展现出更好的时间一致性。从图10可以看到,纯图像模型Cyclone虽然单帧质量不错,但多帧之间会有轻微的色偏和光照不一致;而蒸馏后的视频模型SVD-ft保持了空间细节,时间维度上也更稳定。
多天气灵活转换
Cyclone不局限于简单的“加天气”或“去天气”,它支持八种天气-时间组合(晴/雾/雨/雪 × 白天/夜晚)之间的任意转换。这意味着你可以在夜间雪景和白天晴天之间自由切换。
图5:Cyclone在多种天气和时间条件下的灵活编辑能力。局限与边界:哪些场景还搞不定?
论文坦诚地指出了几个局限性,而不是走过场式地罗列。
失败案例值得关注。图13展示了极端低光照(雨夜)转白天时的失败情况:雨滴作为遮挡物,遮挡区域在被“去雨”后需要恢复被挡住的场景结构——这本身就极困难。此外,路牌和广告牌上的文字往往因VAE压缩而丢失。
图13:极端低光照和文本细节丢失的失败案例。数据质量决定上限。训练数据中排除了高遮挡、低质量渲染和含文本干扰的样本(图7),这意味着模型在遇到这些场景时可能表现不佳——这也是为什么雨夜转晴天时文字会丢。
图7:训练数据中被排除的挑战性样本类型。循环训练的计算开销。每次迭代需要多次前向传播(前向翻译+后向翻译+教师推理),训练复杂度明显高于单次前向的普通扩散模型训练。两天的GPU训练时间对于个人研究者不算轻量。
还无法控制天气强度。目前模型只能生成“有雾”“有雨”,但没法指定“轻度雾”还是“浓雾”——因为训练数据缺少强度标注。这是数据瓶颈,而非方法瓶颈。
这篇工作改变了什么?
无论你是做感知算法、数据增强还是生成模型研究,Cyclone带来的启发都值得关注:
- • 对感知工程师 天气去除作为预处理模块,确实能提升下游感知精度——而且提升幅度是可量化的(mAP +15.8%)。这不是理论推演,是有数据支撑的结论。如果你的模型在恶劣天气下表现不佳,这类框架值得尝试作为数据增强或预处理方案。
- • 对生成模型研究者 循环一致性+教师蒸馏的组合,为“无配对数据下的条件生成”提供了一种更稳定的训练范式。它本质上是用预训练扩散模型的分布知识替代了GAN的判别器,同时保留了循环一致性对结构的约束。
- • 对工程落地者 模型轻量(相比大模型参数量少20倍,推理快100倍)、可蒸馏到视频模型、训练数据容易获取——这些属性对于实际部署是加分项。但要注意极低光照场景下的稳定性问题,以及模型目前无法控制天气强度。
- • 需要保留判断的地方 训练需要2 GPU天,对于快速迭代和超大规模数据可能有压力;视频微调额外需要10 GPU天。另外,所有实验都是在整理后的干净数据集上评估的——真实世界中随手拍的驾驶视频效果如何,还需要更多验证。
🤔 深度思考:循环一致性+教师蒸馏的组合,在不需要配对数据的前提下实现了可控天气编辑。但这种教师-学生蒸馏机制,是否可能限制模型生成“超出教师分布”的新天气效果?换句话说,Cyclone是否天然倾向于生成“安全但保守”的天气,而非更具挑战性的极端天气?欢迎在评论区分享你的看法。
💝 支持原创:如果这篇论文解读让你对天气编辑有了新的理解,欢迎转发给同样关注自动驾驶感知的同事。
🔔 关注提醒:我会持续解读自动驾驶和生成模型领域的前沿工作,不吹不黑,只讲真话和证据。
#AI技术 #深度学习 #自动驾驶 #天气编辑 #扩散模型 #论文解读
参考
Cyclone: Diffusion Model for Cycle-Consistent Weather Editing from Unpaired Driving Data