Haar wavelet downsampling (HWD) 是一项针对语义分割的创新模块,旨在通过减少特征图的空间分辨率来提高深度卷积神经网络(DCNNs)的性能。该论文的主要贡献在于提出了一种新的下采样方法,能够在下采样阶段有效地减少信息损失。论文的详细信息如下:
HWD 模块的核心创新在于:
HWD 模块的实现方法包括以下几个步骤:
Haar Wavelet Downsampling (HWD) 模块相较于传统下采样方法(如最大池化和步幅卷积)具有多项显著优势:
论文通过一系列综合实验验证了 HWD 模块的有效性,结果显示:
Haar wavelet downsampling 模块为语义分割任务提供了一种简单而有效的下采样解决方案。通过引入 Haar 小波变换,该模块不仅提高了信息保留能力,还通过特征熵指数的引入,为特征重要性评估提供了新的视角。综合实验结果表明,HWD 模块在多种语义分割任务中均表现出色,具有广泛的应用潜力。
from pytorch_wavelets import DWTForward
import torch
from torch import nn
class HWD(nn.Module):
def __init__(self, in_ch, out_ch):
super(HWD, self).__init__()
self.wt = DWTForward(J=1, mode='zero', wave='haar')
self.conv_bn_relu = nn.Sequential(
nn.Conv2d(in_ch * 4, out_ch, kernel_size=1, stride=1),
nn.BatchNorm2d(out_ch),
nn.ReLU(inplace=True),
)
def forward(self, x):
yL, yH = self.wt(x)
y_HL = yH[0][:, :, 0, ::]
y_LH = yH[0][:, :, 1, ::]
y_HH = yH[0][:, :, 2, ::]
x = torch.cat([yL, y_HL, y_LH, y_HH], dim=1)
x = self.conv_bn_relu(x)
return x
if __name__ == "__main__":
# 如果GPU可用,将模块移动到 GPU
device = torch.device("cuda"if torch.cuda.is_available() else"cpu")
# 输入张量 (batch_size, height, width,channels)
x = torch.randn(1,32,40,40).to(device)
# 初始化 HWD 模块
dim=32
block = HWD(dim,dim)
print(block)
block = block.to(device)
# 前向传播
output = block(x)
print("输入:", x.shape)
print("输出:", output.shape)
https://blog.csdn.net/m0_47867638/article/details/136746343
https://blog.csdn.net/m0_47867638/article/details/136861536