深度学习去雾方法调研:2023 年部署实测记录

2023 年 9 月 1 日 星期五(已编辑)
/ , , , ,
3
摘要
在传统算法优化完成后,部署实测 RefineDNet、PSD、RIDCP 等 12 种深度学习去雾方法。数据集域差异导致真实素材上均未超越优化后的传统算法,确认了继续走传统路线的判断。

深度学习去雾方法调研:2023 年部署实测记录

编写时间:2023-09

把能跑的深度学习去雾方法在真实监控/道路雾天素材上测了一遍。出发点很简单:现有 CUDA 传统算法能实时,但浓雾区生成感强、颜色有失真、边缘有残雾。想看看深度学习能不能补这些。

查看/下载 PDF 附录:去雾调研原始记录


现有算法的具体问题

传统 CUDA 去雾(基于对比度增强 + 引导滤波)在大多数中轻雾场景表现可以,但在几类典型场景上出问题:

  • 浓雾 / 远处信息不足区域:透射率接近 0,反推公式 J = (I-A)/t + A 会把噪声和压缩伪影一起放大,出现色块和涂抹。
  • 偏色:大气光 A 如果被白色物体或过曝区域误导,整张图会偏色。block 级别的 t 估计在 Resize 和引导滤波之后丢了一些细节,导致局部偏色——白色车变蓝、路面偏紫之类。
  • 边缘残雾:块级透射率对景深突变(建筑边缘、电线杆)照顾不到,引导滤波只能部分缓解。

这些问题是物理模型 + 估计误差共同造成的,不是调参数能根治的。所以开始看深度学习路线有没有更好的答案。


数据集:为什么论文指标和真实效果差这么多

先看一圈数据集,这是理解后续所有问题的关键:

数据集类型规模问题
RESIDE合成配对3w+ 张,最常用室内/室外合成的雾,和真实监控雾差距大
I/O HAZE / NH HAZE真实雾配对各几十张规模太小,只能测试不能训练
MDID真实采集多雾图小规模无配对,只能定性看
BeDDE同场景长时采集+后处理小规模最接近真实但规模太小

RESIDE 是几乎所有方法默认的训练集,但它的问题是:合成雾是均匀的、有 ground truth 的、没有压缩损伤的。真实监控里的雾是非均质的(一团一团)、叠加了 H.264 压缩伪影、曝光在变化、远处信息已经物理上丢失了。

这就解释了一个反复出现的现象:论文指标好 ≠ 真实素材好。模型学的是 RESIDE 的雾,碰到的却是完全不同的东西。


四个路线

大致可以把现有方法分成四类:

Mermaid Loading...
路线代表方法核心思路实际表现
① ASM + DLDehazeNet, AOD-Net, MSCNND网络替代传统方法估计 t/A,再用物理模型反推比传统方法没有明显提升,受限于 ASM 本身
② 端到端FFA-Net, DehazeFormer, gUNet, SFNet跳过物理模型,CNN/Transformer 直接学映射合成数据上最好,真实浓雾几乎无效
③ 非配对RIDCP, RefineDNet, PSD, ZIDGAN / codebook / 自监督,不依赖配对数据最有希望的路线,但生成幻觉是普遍问题
④ 知识迁移PSD合成预训练 backbone → 真实无监督微调思路对,但当前速度太慢

模型实测记录

Mermaid Loading...
方法发表路线部署观感主要问题
RefineDNetTIP 2021非配对 + GAN部署效果最好,颜色自然浓雾/远距离有明显涂抹感,GAN 生成不可靠
MGF-DehazingMTAP 2022传统 + GF色彩偏差较小部分白色细节丢失,matlab → C++ 成本高
PSDCVPR 2021 Oral知识迁移比 RIDCP 好,去雾中等FFA backbone 太慢(4090 也要几秒),偏色明显
CEEFTMM 2021传统增强效果还行,没深度方法那种诡异色块有过增强、偏色、边缘残雾
RIDCPCVPR 2023非配对 codebook部分浓雾样例有效某些场景负优化,模型偏大
DehazeFormerTIP 2022端到端 TransformerRESIDE 上 SOTA真实浓雾几乎无效,端到端的通病
SSIF_CEEFJVCIR 2022传统增强对比度比 CEEF 更强噪点和颗粒感明显增加
gUNetarXiv 2022端到端 U-Net合成数据尚可真实浓雾无效
FFA-NetAAAI 2020端到端 Attention公开数据集上可以真实非均质雾完全不去雾
MSCNNDASM + CNN视觉上接近 CUDAMatlab/CNN 耗时增加太多
SFNetICLR 2023端到端 频域基本没效果可能部署有误,未深挖
ZID零样本想法有趣效果不理想
AECR-Net没深入issue 和部署问题多,跳过

逐个方法展开

RefineDNet(TIP 2021)

做法是两阶段:先用暗通道先验(DCP)粗去雾,再用 GAN 做非配对真实图像域的精炼。关键洞察是:DCP 保证了一定的物理合理性,GAN 只负责补"看起来更真"的细节。

实测去雾效果确实是这批方法里最好的,颜色也比 PSD/FFA 自然。但问题是——GAN 生成的信息不可靠。浓雾区、远距离建筑边缘、树林和天空交界处有明显的涂抹感,像油画。单帧看还行,视频里连续帧的涂抹位置会漂,闪烁很明显。

MGF-Dehazing(MTAP 2022)

非深度学习,用多尺度引导滤波生成透射图来抑制信息损失。实测色彩偏差比深度方法小,但部分白色细节被抹掉了,整体偏暗。bad case 和现有 CUDA 算法接近,工程迁移(matlab → C++)成本高。

PSD / Principled S2R(CVPR 2021 Oral)

思路是这批方法里比较完整的:合成数据预训练 → 用物理先验做无监督微调。backbone 用 FFA-Net。实测比 RIDCP 好一些,去雾效果中等,但有两个硬伤:FFA backbone 在 4090 上也要几秒一帧,没法实时;偏色仍然明显。

CEEF(TMM 2021)& SSIF_CEEF(JVCIR 2022)

CEEF 是非深度学习方法,把去雾拆成对比度增强 + 曝光融合两步:gamma 校正 + CP-AHE 拉对比度,再通过结构块分解融合。Matlab 实现。效果比预想的好,有过增强和偏色但没有深度方法那种诡异的色块。SSIF_CEEF 是改进版,加了平滑-锐化滤波(SSIF),对比度更强了但噪点也明显加重,颗粒感很强。

RIDCP(CVPR 2023)

思路值得单说:用 VQGAN 从大规模清晰图像(DIV2K, Flickr2K)学一个高清码本,再训练编码器把退化图映射到码本做重建。退化管线考虑了雾、模糊、颜色偏移、JPEG 压缩。想解决的核心问题是"合成数据不够真"。实测:部分浓雾样例有效果,但有些场景是负优化——把正常区域也改了,而且模型偏大。

端到端路线(FFA-Net / DehazeFormer / gUNet / SFNet)

这几个放一起说,因为问题高度一致:在 RESIDE 上指标都很好(DehazeFormer 甚至是 SOTA),但碰到真实浓雾素材基本不去雾。问题不在网络设计,在训练数据和测试数据的域差异太大。端到端路线如果不解决训练数据问题,结构再 fancy 也没用。


阶段判断

深度学习去雾最大的问题不是"论文指标不够好",而是工程输入和论文输入不一致。公开数据集通常是配对、合成或相对规整的雾图,真实监控视频里的雾则是非均质、局部遮挡、压缩损伤、曝光不稳、远处信息缺失一起出现。

Mermaid Loading...

本轮实测下来的排序大致是:RefineDNet > MGF > PSD / CEEF > RIDCP(仅指真实监控素材上的观感,不是论文指标)。

但即使效果最好的 RefineDNet,也不能直接替代现有 CUDA 算法。视频去雾不只是单帧问题——GAN 生成的细节在连续帧之间不稳定,闪烁比传统方法的边缘残雾更难接受。更深一层的问题是:不是哪个模型更好,而是整个监督训练范式在真实去雾上很难成立。配对数据无法大规模获取,合成数据又差距太大。

可能方向

  1. 非配对 / 弱监督 + 物理先验(PSD 路线):用物理模型做约束,不让网络瞎生成。
  2. GAN / 生成式做精炼而不是做主干(RefineDNet 路线):传统方法保证结构,GAN 只补纹理。但 GAN 幻觉需要更可靠的约束。
  3. 深度信息参与:如果能有可靠的深度估计,可以修正 airlight mask 和透射图,特别是远景和天空区域。但深度估计本身也有成本。
  4. 更好的合成数据:UE5 或仿真管线生成可控雾天场景,比 RESIDE 更接近真实非均质雾。

这轮调研的结论不是"深度学习不行",而是当前阶段的工程输入和论文输入差太远。在更可控的合成数据或更强的物理约束出现之前,继续优化传统算法的估计过程和 CUDA 实现是更可靠的路径。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...