共计 1274 个字符,预计需要花费 4 分钟才能阅读完成。
技术背景与挑战
图像去雾旨在从雾霾退化的图像中恢复清晰场景,是低层计算机视觉中的经典问题。传统方法主要基于大气散射模型:

$$I(x) = J(x)t(x) + A(1-t(x))$$
其中 $I(x)$ 为观测图像,$J(x)$ 为清晰场景,$A$ 为大气光,$t(x)$ 为透射率图。基于物理模型的方法(如暗通道先验)存在两个主要局限:
- 对浓雾或非均匀雾况适应性差
- 依赖人工设计的先验知识,泛化能力有限
门控融合网络核心设计
多尺度特征提取架构
网络采用编码器 - 解码器结构,关键创新在于:
- 金字塔池化模块 :在编码器不同阶段插入 ASPP(Atrous Spatial Pyramid Pooling),以不同膨胀率捕获多尺度上下文
- 跳跃连接增强 :通过 1 ×1 卷积对齐特征图通道数,避免直接拼接导致的特征冲突
门控融合机制
门控单元采用 sigmoid 激活生成 0 - 1 的权重掩码:
$$G = \sigma(W_g * [F_{low}, F_{high}] + b_g)$$
其中 $F_{low}$ 为浅层特征,$F_{high}$ 为深层语义特征。最终融合特征计算为:
$$F_{fusion} = G \odot F_{high} + (1-G) \odot F_{low}$$
联合损失函数
损失函数包含三部分:
- L1 重建损失 :$\mathcal{L}{rec} = |J – J|_1$
- 感知损失 :使用 VGG16 提取特征后计算差异
- 边缘保持损失 :Sobel 算子强化边缘一致性
PyTorch 实现详解
class GatedFusionBlock(nn.Module):
def __init__(self, channels):
super().__init__()
self.conv_gate = nn.Sequential(nn.Conv2d(2*channels, channels, 3, padding=1),
nn.Sigmoid())
def forward(self, x_low, x_high):
gate = self.conv_gate(torch.cat([x_low, x_high], dim=1))
return gate * x_high + (1-gate) * x_low
# 关键训练参数
batch_size = 16 # 显存不足时可降低
learning_rate = 1e-4 # 使用 Adam 优化器
num_epochs = 100 # 早停机制建议设为 30
实验与优化
性能对比(RESIDE 测试集)
| Method | PSNR ↑ | SSIM ↑ | Time(s) ↓ |
|---|---|---|---|
| DCP | 16.62 | 0.817 | 0.25 |
| AOD-Net | 19.06 | 0.850 | 0.08 |
| Ours | 23.41 | 0.901 | 0.12 |
部署优化技巧
- TensorRT 加速 :FP16 模式可提升 30% 推理速度
- 内存优化 :
- 对 4K 图像采用分块处理(建议 512×512)
- 使用梯度检查点技术
- 失败案例 :
- 夜间图像去雾效果差 → 增加合成数据的光照变化
- 运动模糊导致伪影 → 联合去模糊模块
总结展望
门控融合网络通过自适应特征融合显著提升了去雾效果,后续可探索方向包括:
- 与语义分割任务联合训练
- 轻量化设计(如深度可分离卷积)
- 无监督域适应应对真实场景
完整实现代码已开源在 GitHub,包含预训练模型和测试脚本。
正文完
发表至: 未分类
近一天内
