新闻详情

新闻详情

首页 / 资讯中心 / 详情

【注意力机制】ICIP | HWB:半小波注意力模块,频域双注意力机制让暗光增强细节零丢失!

发布时间:2026/7/8 4:54:09
【注意力机制】ICIP | HWB:半小波注意力模块,频域双注意力机制让暗光增强细节零丢失!
论文: Half Wavelet Attention on M-Net+ for Low-light Image Enhancement作者: Chi-Mao Fan, Tsung-Jung Liu, Kuan-Hsien Liu发表: ICIP 2022论文链接: https://arxiv.org/abs/2203.01296代码链接: https://github.com/FanChiMao/HWMNet一、引言低光照图像增强是计算机视觉中一个经典且极具挑战的任务,其目标是将暗光环境下拍摄的图像恢复至正常的亮度水平。由于光照不足导致的低对比度、噪声、颜色失真等问题,使得该任务本质上是一个高度不适定的逆问题。近年来,基于深度卷积神经网络的方法在该领域取得了显著进展,超越了传统的基于直方图均衡化或Retinex理论的算法。然而,现有方法大多在空间域中设计网络结构,忽略了频域信息中蕴含的丰富结构特征。图像的频域分解能够将不同频率的成分分离,其中低频分量对应平滑区域,而高频分量则包含了边缘、纹理等关键细节信息。针对这一问题,本文提出了一种半小波注意力模块(Half Wavelet Attention Block, HWB),将其嵌入到改进的M-Net+架构中,构建了HWMNet(Half Wavelet Attention Network),在LOL和MIT-Adobe FiveK数据集上取得了具有竞争力的性能。二、核心动机传统注意力机制(如通道注意力CA、空间注意力SA)虽然在空间域中有效,但存在一个共同局限:它们仅在单一域中进行特征重标定,无法利用频域中的结构先验信息。小波变换能够将图像分解为不同的频率子带(LL低频近似、HL水平高频、LH垂直高频、HH对角高频),这些子带天然地分离了图像的结构信息与纹理细节。受此启发,作者提出在小波域中同时施加空间和通道双注意力,让网络不仅关注"哪些通道重要",还关注"哪些空间位置重要",从而实现更精细的特征增强。三、方法3.1 Half Wavelet Attention Block (HWB)HWB是HWMNet的核心构建模块,其设计思路非常巧妙:将输入特征分为两路——小波变换路径和恒等映射路径,在小波域中进行双注意力增强后,与原始特征融合。模块结构拆解HWB的完整前向过程如下:classHWB(nn.Module):def__init__(self,n_feat,o_feat,kernel_size,reduction,bias,act):super(HWB,self).__init__()self.dwt=DWT()# 二维离散小波变换self.iwt=IWT()# 二维逆小波变换modules_body=[conv(n_feat*2,n_feat,kernel_size,bias=bias),act,conv(n_feat,n_feat*2,kernel_size,bias=bias)]self.body=nn.Sequential(*modules_body)self.WSA=SALayer()# 小波域空间注意力self.WCA=CALayer(n_feat*2,reduction,bias=bias)# 小波域通道注意力self.conv1x1=nn.Conv2d(n_feat*4,n_feat*2,kernel_size=1,bias=bias)self.conv3x3=nn.Conv2d(n_feat,o_feat,kernel_size=3,padding=1,bias=bias)self.activate=act self.conv1x1_final=nn.Conv2d(n_feat,o_feat,kernel_size=1,bias=bias)defforward(self,x):residual=x# Step 1: 将输入沿通道维度切分为两半wavelet_path_in,identity_path=torch.chunk(x,2,dim=1)# Step 2: 小波变换路径 — 频域双注意力增强x_dwt=self.dwt(wavelet_path_in)# DWT分解为4个子带res=self.body(x_dwt)# 频域特征提取branch_sa=self.WSA(res)# 空间注意力branch_ca=self.WCA(res)# 通道注意力res=torch.cat([branch_sa,branch_ca],dim=1)res=self.conv1x1(res)+x_dwt# 残差连接wavelet_path=self.iwt(res)# IWT重建回空间域# Step 3: 与恒等路径拼接后输出out=torch.cat([wavelet_path,identity_path],dim=1)out=self.activate(self.conv3x3(out))out+=self.conv1x1_final(residual)returnout3.2 离散小波变换 (DWT) 与逆变换 (IWT)小波变换的核心是使用哈尔小波基将特征图分解为四个子带。代码实现非常简洁:defdwt_init(x):x01=x[:,:,0::2,:]/2x02=x[:,:,1::2,:]/2x1=x01[:,
网站建设 高端定制 企业官网