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

article/2025/8/25 18:56:23

在这里插入图片描述

这是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,发现确实如前面所说,低频的注意力比较高,高频的注意力比较低:
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/jsVD4EGQ.shtml

相关文章

读Multiscale Vessel Enhancement Filtering笔记

1.Introduction 通常对CTA和MRA的血管成像方法中,可视化3维血管结构的方法是MIP。但是MIP的缺点是会将非血管结构展现出来并且对于对比度比较低的小血管展现不太好。这也正是TOF-MRA的缺点。 这篇论文的目的是为了增强血管结构,最终达到血管分割的目的。…

Maven Resources Plugin的Filtering功能的Bug

Maven Resources Plugin的Filtering功能是非常强大的,是构建中非常重要的一项必备特性,但是最近发现了Filtering在过滤复杂文本(例如Shell脚本)时,会有一些问题,简单记录一下。以下是一段Shell脚本&#xf…

Neural Collaborative Filtering

目录 2 PRELIMINARIES3. NEURAL COLLABORATIVE FILTERING3.1 通用框架3.2 广义矩阵分解(GMF)3.3 MLP3.4 GMF和MLP的聚合—NeuMF 4 EXPERIMENTSQ1 NCF的效果比其他SOTA的隐式CF好吗?Q2 带有负采样的log loss(这个优化框架)是否适用于RS&#x…

图像处理中滤波(filtering)与卷积(convolution)的区别

图像处理中滤波和卷积是常用到的操作。很多人认为卷积就是滤波,两者并无区别,其实不然。两者在原理上相似,但是在实现的细节上存在一些区别。这篇博文主要叙述这两者之间的区别。 1、滤波(或者叫相关) 简单来说&#…

MAVEN中filtering的作用是什么?

FILTERING的作用 MAVEN提供了一种过滤机制,这种机制能够在资源文件被复制到目标目录的同时,当filtering true时替换资源文件中的占位符;当filtering false时不进行占位符的替换。 写在前面 如下所示filtering的用法,它对资源…

在Navicat premium上实现两个数据库同步

问题:有两个数据库A和B,现需要将数据库A的数据同步到数据库B上。 法一:使用备份 首先在数据库A上生成备份 然后将数据库A的备份拷贝到存储数据库B的备份的文件夹下,然后点击还原备份 方法二:使用工具中的同步操作 点击工具->结构同步 选…

Otter实现数据库同步

Otter工作原理 原理描述: 基于Canal开源产品,获取数据库增量日志数据。典型管理系统架构,manager(web管理)+node(工作节点) a. manager运行时推送同步配置到node节点 b. node节点将同步状态反馈到manager上基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作…

【愚公系列】2022年12月 数据库-关系数据库同步框架Dotmim.Sync的使用

文章目录 前言1.移动智能的三种模式2.混合模式模式的瓶颈3.数据同步的解决方案 一、关系数据库同步框架Dotmim.Sync的使用1.包介绍2.SqlServer到Sqlite同步测试基本使用3.SqlServer到Sqlite同步测试Web API代理3.1 服务端设置SqlServer同步服务3.2 客户端设置SqlLite同步服务3.…

django mysql数据同步_[django自动同步数据库]Django数据库同步操作技巧详解

同步数据库: 使用上述两条命令同步数据库 1.认识migrations目录: migrations目录作用:用来存放通过makemigrations命令生成的数据库脚本,里面的生成的脚本不要轻易修改。 要正常的使用数据库同步的功能,app目录下必须要…

SQLSERVER数据库同步

SQLSERVER数据库数据同步 1、实现方法2、实现发布3、实现订阅 1、实现方法 使用的是SQL自带的发布与订阅功能,SQL Server版本是2008,一台发布,一台订阅,实现数据库的数据同步。 2、实现发布 打开复制,右击本地发布&…

MySQL第九讲 MySQL集群主从搭建指定数据库同步数据

1、全库同步与部分同步 之前提到,我们目前配置的主从同步是针对全库配置的,而实际环境中,一般并 不需要针对全库做备份,而只需要对一些特别重要的库或者表来进行同步。那如何 针对库和表做同步配置呢? 首先在Master端…

Python数据库同步神器(一键同步)

1.背景: 最近公司项目的用户中心模块经常出现线上问题,测试人员需要将线上真实数据导入到测试环境中去复现Bug。公司有3套测试环境,来回切换并校验数据比较麻烦,于是就有了如下的数据库同步神器。 2.界面: 3.源代码&…

分布式数据库同步

分布式部署时数据库之间的数据同步 数据的同步原理就是同步binlog日志到需要复制的其他的数据库上,其他数据库根据binlog日志里面的ddl和dml语句,执行该语句同步到当前数据库,就能保证多个数据库的数据的一致性。 Binlog日志主要是的数据库执行的ddl、…

异构数据库同步方案

目录 1 概述 2 原理 3 参数 1 概述 为减轻生产库负载,避免在其上直接运行分析应用拖垮系统,需要将生产系统产生的业务数据实时同步到大数据分析平台。 凭借异构(主从库不同类型、主从对象不同属主模式)数据处理能力&#xff…

IDEA 之because it is included into a circular dependency循环依赖的解决办法

问题场景: 今天启动项目的时候突然遇到这个错误导致无法启动 Information:2019/8/26 11:34 - Compilation completed with 1 error and 0 warnings in 6 s 52 ms Error:Cannot build artifact aws_multi_branch_1.0.0:war exploded because it is included into a…

Maven dependencyManagement 详解

dependencyManagement(以下简称:《依赖管理器》) 《依赖管理器》简介 Maven中的《依赖管理器》元素提供了一种管理依赖版本号的方式。在《依赖管理器》元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包…

Maven之dependencyManagement

1. 父项目的dependencyManagement 最开始,知道dependencyManagement是管理jar包版本的,如果在父项目中的该节点下声明了包的版本,子项目中在Dependencies中引用该包时就不需要声明版本了,这样保证多个子项目能够使用相同的包版本…

dependency-track 初始化源码解析

因项目的关键因素,需查看dependency-check源码流程。个人学习用。自己读代码可以根据web.xml的几个listener来debug。 1、org.dependencytrack.RequirementsVerifier 校验java版本,内存等运行时环境。 2、org.dependencytrack.upgrade.UpgradeInitiali…

Maven中的dependencyManagement 详解

Maven中的dependencyManagement 详解 大家好,我是酷酷的韩金群~ 1.作用: 在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。 2.pom.xml文件中,jar的版本判断的两种途径: (1)如果dependencies里的dependency自己…