DehazeFormer原理详解:Transformer如何重塑图像去雾技术
DehazeFormer 原理详解Transformer 如何重塑图像去雾技术一、引言图像去雾是计算机视觉中的经典难题。传统方法依赖大气散射模型估计透射率和大气光而深度学习方法如 AOD-Net、FFA-Net基于 CNN感受野有限。DehazeFormer创新地将 Vision Transformer 引入去雾任务利用自注意力机制建模全局依赖关系在多个基准数据集上达到 SOTA。本文将深入解析 DehazeFormer 的架构设计和核心原理。二、大气散射模型回顾在理解 DehazeFormer 之前先回顾雾天成像的物理模型I(x) J(x) × t(x) A × (1 - t(x))其中I(x): 观测到的有雾图像J(x): 需要恢复的清晰图像t(x): 透射率图transmission mapt(x) e^(-β·d(x))A: 全局大气光global atmospheric lightβ: 大气散射系数d(x): 场景深度去雾的目标是从 I(x) 恢复 J(x)需要估计 t(x) 和 A。这是一个欠定问题。三、DehazeFormer 架构详解3.1 整体架构输入: 有雾图像 I ∈ ℝ^(3×H×W) │ ▼ ┌─────────────────────┐ │ Patch Embedding │ Conv 3→C, k3, 产生 patch 特征 │ (无重叠分块) │ └─────────┬───────────┘ │ ▼ ┌─────────────────────┐ │ SK Fusion Layer 0 │ SKFF: 选择性核特征融合 │ (多尺度特征融合) │ ┌─ 3×3 卷积分支 ─┐ │ │ ├─ 5×5 卷积分支 ─┤→ 自适应融合 │ │ └─ 7×7 卷积分支 ─┘ └─────────┬───────────┘ │ ▼ ┌─────────────────────┐ │ DehazeFormer Block │ × N (通常 N4~8) │ × 4 │ │ │ ┌── LayerNorm ──┐ │ │ │ │ │ ┌─────────────────┐ │ │ ┌──────────┐ │ │ │ LayerNorm │ │ ├──│ W-MSA │─┤ → │ └────────┬────────┘ │ │ └──────────┘ │ │ │ │ │ │ │ ┌────────▼────────┐ │ │ ┌──────────┐ │ │ │ W-MSA / SW-MSA │ │ ├──│ MLP │─┤ → │ │ (窗口/移位窗口) │ │ │ └──────────┘ │ │ └────────┬────────┘ │ │ │ │ │ │ └───────────────┘ │ ┌────────▼────────┐ │ │ │ LayerNorm │ │ │ └────────┬────────┘ │ │ │ │ │ ┌────────▼────────┐ │ │ │ FeedForward │ │ 深度可分离卷积 MLP │ │ (DWConv GELU) │ │ │ └────────┬────────┘ │ │ │ │ │ ▼ │ │ 残差 │ └─────────┬───────────┘ │ ▼ ┌─────────────────────┐ │ 重建头 (Refinement) │ Conv → PixelShuffle → Conv │ │ 或直接 Conv 输出 └─────────┬───────────┘ │ ▼ 输出: 去雾图像 J ∈ ℝ^(3×H×W)3.2 核心组件实现3.2.1 窗口多头自注意力W-MSAimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFclassWindowAttention(nn.Module):基于窗口的多头自注意力def__init__(self,dim,window_size,num_heads):super().__init__()self.dimdim self.window_sizewindow_size self.num_headsnum_heads head_dimdim//num_heads self.scalehead_dim**-0.5self.qkvnn.Linear(dim,dim*3,biasTrue)self.projnn.Linear(dim,dim)# 相对位置偏置可学习self.relative_position_bias_tablenn.Parameter(torch.zeros((2*window_size-1)*(2*window_size-1),num_heads))defforward(self,x):B_,N,Cx.shape# [B*num_windows, window_size², C]# QKV 投影qkvself.qkv(x).reshape(B_,N,3,self.num_heads,C//self.num_heads)qkvqkv.permute(2,0,3,1,4)q,k,vqkv[0],qkv[1],qkv[2]# 注意力attn(q k.transpose(-2,-1))*self.scale# 添加相对位置偏置relative_position_biasself.relative_position_bias_table[self.relative_position_index.view(-1)].view(self.window_size**2,self.window_size**2,-1)relative_position_biasrelative_position_bias.permute(2,0,1)attnattnrelative_position_bias.unsqueeze(0)attnF.softmax(attn,dim-1)x(attn v).transpose(1,2).reshape(B_,N,C)xself.proj(x)returnx3.2.2 移位窗口机制SW-MSAW-MSA 只在窗口内计算注意力缺少窗口间的信息交互。SW-MSA 通过将窗口移位来解决defwindow_partition(x,window_size):将特征图划分为窗口B,H,W,Cx.shape xx.view(B,H//window_size,window_size,W//window_size,window_size,C)windowsx.permute(0,1,3,2,4,5)windowswindows.contiguous().view(-1,window_size,window_size,C)returnwindowsdefwindow_reverse(windows,window_size,H,W):窗口恢复为特征图Bint(windows.shape[0]/(H//window_size*W//window_size))xwindows.view(B,H//window_size,W//window_size,window_size,window_size,-1)xx.permute(0,1,3,2,4,5)xx.contiguous().view(B,H,W,-1)returnx3.2.3 SKFFSelective Kernel Feature FusionSKFF 模块融合多尺度特征是 DehazeFormer 的另一个关键创新classSKFF(nn.Module):Selective Kernel Feature Fusiondef__init__(self,channels,num_features32):super().__init__()self.conv3nn.Conv2d(channels,channels,3,1,1,groupschannels)self.conv5nn.Conv2d(channels,channels,5,1,2,groupschannels)self.conv7nn.Conv2d(channels,channels,7,1,3,groupschannels)# 特征选择Squeeze → Excitationself.fc_reducenn.Conv2d(channels*3,num_features,1)self.fc_expand3nn.Conv2d(num_features,channels,1)self.fc_expand5nn.Conv2d(num_features,channels,1)self.fc_expand7nn.Conv2d(num_features,channels,1)defforward(self,x):f3self.conv3(x)f5self.conv5(x)f7self.conv7(x)# 全局平均池化 → 通道选择utorch.cat([f3,f5,f7],dim1)# [B, C×3, H, W]u_gapF.adaptive_avg_pool2d(u,1)# [B, C×3, 1, 1]u_gapself.fc_reduce(u_gap)# 软注意力a3self.fc_expand3(u_gap).sigmoid()a5self.fc_expand5(u_gap).sigmoid()a7self.fc_expand7(u_gap).sigmoid()# 自适应融合outf3*a3f5*a5f7*a7returnoutx四、与 CNN 方法的对比特性CNN 方法FFA-NetDehazeFormer感受野局部受卷积核大小限制全局自注意力特征交互逐层渐进自由长程交互多尺度处理多分支/特征金字塔SKFF 自适应融合参数量~4.5M~2.5M轻量版本PSNR (SOTS-indoor)36.3936.82五、训练要点5.1 损失函数DehazeFormer 使用组合损失classDehazeLoss(nn.Module):def__init__(self):super().__init__()self.l1nn.L1Loss()self.perceptualPerceptualLoss()# VGG 感知损失defforward(self,pred,target):l1_lossself.l1(pred,target)perc_lossself.perceptual(pred,target)returnl1_loss0.04*perc_loss5.2 数据增强随机裁剪 256×256水平/垂直翻转旋转90°、180°、270°色彩抖动六、总结DehazeFormer 将 Swin Transformer 架构成功应用于图像去雾核心创新包括W-MSA/SW-MSA 的窗口注意力机制降低了计算复杂度SKFF 多尺度自适应融合增强了细节恢复能力。相比传统 CNN 方法在全局信息建模和细节恢复上均有显著提升。

相关新闻

零样本学习在小数据视觉检测中的工程落地实践

零样本学习在小数据视觉检测中的工程落地实践

1. 项目概述:当数据少得可怜,模型却要看得更准“Empowering Computer Vision with Zero-Shot Learning in the Data-Centric Small Data Age”——这个标题不是学术论文的冷峻宣言,而是我过去18个月在三家不同行业客户现场反复验证后&#xf…

2026/7/21 21:20:45 阅读更多 →
Heapify在算法竞赛中的应用:Dijkstra、Prim等算法的极速实现 [特殊字符]

Heapify在算法竞赛中的应用:Dijkstra、Prim等算法的极速实现 [特殊字符]

Heapify在算法竞赛中的应用:Dijkstra、Prim等算法的极速实现 🚀 【免费下载链接】heapify The fastest JavaScript priority queue out there. Zero dependencies. 项目地址: https://gitcode.com/gh_mirrors/he/heapify 在算法竞赛的世界里&…

2026/7/21 21:19:44 阅读更多 →
Redlock监控与告警:使用Prometheus和Grafana监控分布式锁状态

Redlock监控与告警:使用Prometheus和Grafana监控分布式锁状态

Redlock监控与告警:使用Prometheus和Grafana监控分布式锁状态 【免费下载链接】redlock-rb Redlock is a redis-based distributed lock implementation in Ruby. More than 40 Millions of downloads. 项目地址: https://gitcode.com/gh_mirrors/red/redlock-rb …

2026/7/21 21:19:44 阅读更多 →

最新新闻

移动端开发核心技术与性能优化实践

移动端开发核心技术与性能优化实践

1. 移动端开发基础概念解析移动端开发与PC端开发存在显著差异,核心区别主要体现在以下几个方面:1.1 视口与像素基础移动端浏览器默认布局视口宽度为980px,这与PC端存在本质区别。理解以下几个核心概念至关重要:物理像素&#xff1…

2026/7/21 23:55:22 阅读更多 →
单片机IO口扩展:74HC595芯片原理与应用实战

单片机IO口扩展:74HC595芯片原理与应用实战

1. 为什么需要扩展单片机IO口?在嵌入式系统开发中,IO口资源紧张是工程师经常遇到的痛点问题。以常见的51单片机为例,标准型号通常只有32个IO口(4个8位端口),当我们需要驱动多个外设时,比如同时控…

2026/7/21 23:55:22 阅读更多 →
UE5登录界面开发实战:从UMG基础到网络交互与用户体验优化

UE5登录界面开发实战:从UMG基础到网络交互与用户体验优化

1. 项目概述:为什么要在UE5里折腾登录界面?如果你和我一样,是个常年泡在虚幻引擎里的开发者,可能第一反应是:一个登录界面,用Web前端或者移动端原生UI做不香吗,干嘛非要在UE5这个“庞然大物”里…

2026/7/21 23:55:22 阅读更多 →
Spring Boot校园二手交易平台:半天快速上手与核心实现剖析

Spring Boot校园二手交易平台:半天快速上手与核心实现剖析

在实际的校园开发场景中,毕业设计和课程设计往往时间紧、任务重,选择一个功能完整、技术栈主流且易于上手的项目作为基础,是快速完成高质量作品的关键。一个基于Spring Boot的校园二手物品交易平台,恰好融合了Web开发、数据库设计…

2026/7/21 23:55:22 阅读更多 →
Python语言基础:5_条件控制_完整详细教程

Python语言基础:5_条件控制_完整详细教程

Python 条件控制完整超详细教程(新手专用,超多例子、逐行讲解) 目录 Python 条件控制完整超详细教程(新手专用,超多例子、逐行讲解) 一、什么是条件控制 前置必记规则(写错直接报错&#xf…

2026/7/21 23:55:22 阅读更多 →
Precision与Recall取舍决策:从业务代价到动态阈值的实战框架

Precision与Recall取舍决策:从业务代价到动态阈值的实战框架

1. 项目概述:为什么“选哪个”比“怎么算”更难?在模型上线前的最后三小时,我盯着屏幕上并排的两个混淆矩阵发呆:模型A的精确率(Precision)是89%,召回率(Recall)只有62%&…

2026/7/21 23:54:20 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻