Deep Frequency Filtering for Domain Generalization论文阅读笔记

在这里插入图片描述

这是CVPR2023的一篇论文,讲的是在频域做domain generalization,找到频域中generalizable的分量enhance它,suppress那些影响generalization的分量

  • DG是一个研究模型泛化性的领域,尝试通过各自方法使得模型在未见过的测试集上有良好的泛化性。
  • intro部分指出,低频分量更好泛化,而高频分量的拟合则是泛化性和准确率的trade off,当对高频分量拟合得更好,在相同domain的测试集上准确率会越高,但是在不同domian的测试集上准确率则下降。我的理解是,不同domain的差别在高频分量上是很复杂的,从而使得对高频分量进行拟合降低了泛化性。而低频分量上的差距主要是亮度上的差距,总体来说是比较简单的线性映射,很容易泛化。但也有例外,low-light image enhancement主要处理的应该就是低频分量的泛化吧,还得通过实验确定。

方法部分

  • 文章的模型基于Fast Fourier Convolution(FFC)进行修改

  • related works的第二段介绍了很多基于频率域的研究,有时间可以集中看一看

  • 对空间域特征图做傅里叶变换,然后再进行处理,网络结构图如下:
    在这里插入图片描述

  • 首先上述的网络结构图仅仅是示意,并非最终的网络结构图。文章把设计的DFF Module用到了FFC的网络结构上。首先,经过傅里叶变换后的特征图先用1x1的卷积、BN和ReLU处理特征,得到embedding,然后用一个简单的注意力机制提取注意力图,并把得到的注意力图复制到不同的channel和embedding进行element-wise地相乘,得到了最终的频域输出,再反傅里叶变换变回空间域特征。

  • 有两点要注意的,一是注意力机制是可以换的,文章只是用了最简单的注意力机制,先做通道上的maxpooling和average pooling得到两通道的特征图,然后做7x7的卷积接一个sigmoid得到注意力图。二是,从图上看起来好像你一直空间域频率域变来变去有点笨比,一直在频率域处理不就行了,是因为这个图只是示意图,最终其实是在FFC的网络结构上的,这个网络结构是two-branch的,有空间域的卷积也有频率域的卷积,所以才需要一直变来变去。

  • FFC的网络结构大概是这样的,可以直接在普通的卷积神经网络上修改而成(如resnet),文章认为傅里叶频域的特征是全局特征,所以把特征图按通道分了两个branch,一个branch是全局特征branch,一个branch是局部特征branch,然后全局特征branch用傅里叶卷积处理(其实就是先傅里叶变换再卷积再反傅里叶变换),局部特征branch则用普通卷积。同时,还有两个branch之间的交互,交互的处理用普通卷积,因此大概就是如下公式(四个f中3个是普通卷积一个是傅里叶卷积,l是local,g是global):
    在这里插入图片描述

  • 网络的训练则是用了DG的训练方式,两个loss,一个是要预测正确的domain,一个是要预测正确的label(分类任务)

实验部分

  • 实验设置:衡量DG的性能一般是在某个任务上找一些不同domain的数据集,比如N个数据集,选其中N-1个作为训练集,第N个作为测试集,衡量在测试集上的性能。文章选的是两个任务,一个是分类任务,一个是行人重识别任务,
  • 可以看到,消融实验部分,相比FFC,加了DDF的确实是有提高,而且频率域的才有提高也说明了模块确实是按设想的在工作:
    在这里插入图片描述

在这里插入图片描述

  • 还有一个实验,作者可视化了attention map,发现确实如前面所说,低频的注意力比较高,高频的注意力比较低:
    在这里插入图片描述
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
multirate filtering for digital signal processing是一种用于对数字信号进行处理的方法,它利用不同的采样率对信号进行滤波。在MATLAB中,我们可以编写相应的源代码来实现这种滤波算法。 首先,我们需要在MATLAB中读取要处理的数字信号。可以使用`audioread`函数读取音频信号或使用`imread`函数读取图像信号。 然后,我们可以定义一个滤波器来对信号进行滤波。在multirate filtering中,可以使用多个低通滤波器或带通滤波器来对信号进行处理。可以使用`fir1`函数或`designfilt`函数设计滤波器的系数。 接下来,我们需要对信号进行采样率转换。可以使用`resample`函数将信号的采样率转换为我们希望的采样率。此函数可以根据需要增加或减少信号的采样率。 然后,我们可以使用滤波器对信号进行滤波。可以使用`filter`函数将滤波器应用于信号。需要注意的是,滤波器的系数应根据信号和所需滤波效果进行选择。 最后,我们将处理后的信号保存到一个新的文件中。可以使用`audiowrite`函数保存音频信号或使用`imwrite`函数保存图像信号。 以上是关于multirate filtering for digital signal processing的MATLAB源代码的简单介绍。实际使用时,需要根据具体的信号处理需求进行相应的调整和改进。同时,也可以考虑使用其他函数和方法来实现更复杂的信号处理操作。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值