DNS2020 盲测集 结果不一致
您好,我测试noisy的结果如下 这里和各种论文中的DNS2020测试集数据应该是一致的。我看了您提供的代码,测试程序中使用的pesqwb,pesqnb,stoi,都是一致的,另外配置方式也一致。所以应该可以排除测试程序的问题。 我这边拆解了github上的代码,并且在缓存中加载了FRCRN的模型权重。enhane了官方提供的测试noisywav,效果和官方一致。 但是从模型中,1.没有看出使用了CBAM结构,2.另外这个模型似乎是两个Unet级联,3.从SElayer实现来看,似乎是一个非因果模型,似乎论文中没有提到这个模块。所以,我很疑惑是不是提供的模型和模型权重有问题。 这里贴出SElayer的代码
class SELayer(nn.Module):
def __init__(self, channel, reduction=16):
super(SELayer, self).__init__()
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.fc_r = nn.Sequential(
nn.Linear(channel, channel // reduction), nn.ReLU(inplace=True),
nn.Linear(channel // reduction, channel), nn.Sigmoid())
self.fc_i = nn.Sequential(
nn.Linear(channel, channel // reduction), nn.ReLU(inplace=True),
nn.Linear(channel // reduction, channel), nn.Sigmoid())
def forward(self, x):
b, c, _, _, _ = x.size()
x_r = self.avg_pool(x[:, :, :, :, 0]).view(b, c)
x_i = self.avg_pool(x[:, :, :, :, 1]).view(b, c)
y_r = self.fc_r(x_r).view(b, c, 1, 1, 1) - self.fc_i(x_i).view(
b, c, 1, 1, 1)
y_i = self.fc_r(x_i).view(b, c, 1, 1, 1) + self.fc_i(x_r).view(
b, c, 1, 1, 1)
y = torch.cat([y_r, y_i], 4)
return x * y
赞0
踩0