FDA: 用于语义分割的傅里叶域自适应

2024-03-19 00:36

本文主要是介绍FDA: 用于语义分割的傅里叶域自适应,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文链接:https://arxiv.org/abs/2004.05498

代码链接:GitHub - YanchaoYang/FDA: Fourier Domain Adaptation for Semantic Segmentation

机构:UCLA

发表于2020CVPR

这篇文章别的地方略读了,主要看看方法,感兴趣自己去翻原文233333

摘要

我们描述了一种简单的无监督域自适应方法,即通过交换源和目标分布的低频频谱来减小源和目标分布之间的差异。我们在语义分割中说明了该方法,其中密集注释的图像在一个领域(例如,合成数据)中很丰富,但在另一个领域(例如,真实图像)中很难获得。目前最先进的方法是复杂的,一些需要对抗性优化,以使神经网络的主干对离散域选择变量保持不变。我们的方法不需要任何训练来执行域对齐,只需要一个简单的傅里叶变换及其逆变换。尽管它很简单,但当集成到相对标准的语义分割模型中时,它在当前基准测试中实现了最先进的性能。我们的结果表明,即使是简单的程序也可以忽略数据中令人讨厌的可变性,而更复杂的方法很难从中学习

背景

我们的方法如图1所示:只需计算每个输入图像的(快速)傅里叶变换(FFT),并在使用源域中的原始注释通过逆FFT (iFFT)重建用于训练的图像之前,将目标图像的低水平频率替换为源图像。

傅里叶域自适应需要选择一个自由参数,即要交换的光谱邻域的大小(图1中的绿色正方形)。我们测试了各种尺寸,以及一种简单的多尺度方法,该方法由不同域尺寸产生的结果平均组成。

我们的方法的动机源于观察到低水平频谱(振幅)可以在不影响高水平语义感知的情况下显著变化。某物是车辆还是人,不应取决于传感器的特性、光源或其他低水平的可变性源。然而,这种可变性对频谱有重大影响,迫使基于学习的模型与其他讨厌的可变性一起“学习它”。如果这种可变性没有在训练集中表现出来,模型就不能泛化。这一点尤其重要,因为网络似乎不能很好地在不同的低级统计数据之间传递[1]。

相关工作

Semantic Segmentation

Domain Adaptation

旨在减少两个分布之间的差距

一种常见的差异度量是MMD(最大平均差异)及其核变体[15,27],由CMD(中心矩差异)扩展[52]到高阶统计量[3,30]。

Adversarial Learning

使用经过训练的鉴别器来最大限度地消除源表示和目标表示之间的混淆,从而减少域差异。‘

这个就是那个用于医学分割的实时Test-time adaption_test time adaptation 去噪-CSDN博客

中的方法了!

方法

2.1. Fourier Domain Adaptation (FDA)

在无监督域自适应(UDA)中,我们得到一个源数据集 ,其中xs ∈ R H X W X3 是个有颜色的图像,而ys ∈ R H X W 是xs的语义图

是目标域数据集

在这里,我们提出傅里叶域自适应(FDA)来减少两个数据集之间的域差距。

让FA,FP:R H X W X3→R H X W X3是对于一个RGB图的傅里叶变换F 的振幅amplitude和相位phase分量

e.g 对于一个单通道图片x我们有↓,这可以使用FFT算法在[13]中有效地实现。相应地,F^-1是将频谱信号(相位和振幅)映射回图像空间的傅里叶反变换。

更多的,我们表示Mβ是一个mask,它的值都是零除了 β∈ (0,1)中心区域↓,其中这里我们假设图像的中心是(0,0)。注意β并没有被以像素衡量,因此 β的选择并没有依赖图片的大小或者分辨率。

给定两个随机采样的图像xs ~Ds; xt ~ Dt,傅里叶域适应可以公式化为↓

其中源图像FA(xs)的振幅低频部分被目标图像xt的振幅低频部分所取代。然后,在相位分量不变的情况下,将修改后的xs的光谱表示映射回图像xs!t,其内容与xs相同,但会类似于Dt样本的外观。这个过程在Fig1中解释,其中Mβ表现为绿色

β的选择

当β = 0的时候 xs→t和xs是一样的,β = 1 的时候  xs→t 和xt是一样的

图2解释了这样的一个过程,但也有可见的伪影(artifacts),从图2的放大区域可以看到。

然而,在table1中我们展示了β 多种选择得到效果以及结果模型的平均值,类似于简单的多尺度池化方法

2.2. FDA for Semantic Segmentation

给一个已经适应过的原数据集Ds→t,我们可以训练一个语义分割网络Øw,与参数w,通过减少下面的交叉熵损失

由于FDA将这两个领域结合在一起,因此UDA成为一个半监督学习(SSL)问题。SSL的关键是正则化模型。我们使用决策边界的惩罚作为标准来跨越未标记空间中的聚类。

假设类分离,这可以通过惩罚决策边界遍历由数据点密集填充的区域来实现,这可以通过最小化目标图像上的预测熵来实现。然而,如[45]所述,这在低熵区域是无效的。我们没有在像素上设置任意阈值来施加惩罚,而是使用鲁棒加权函数来实现熵最小化,即↓,

 其中是沙博尼耶罚函数(Charbonnier penalty function)。 它对高熵预测 > 0.5的惩罚大于对低熵预测的惩罚,如图所示

将其与自适应源图像上的分割损失相结合,我们可以使用以下总体损失来训练语义分割网络Øw

Self-Supervised training

是通过使用高度自信的伪标签来提高SSL性能的一种常见方法。在没有正则化的情况下,这个实践是自我引用的,所以我们关注正则化。

如文献[42]所述,均值教师mean teacher通过平均模型权重来提高半监督学习绩效,这在学习过程中提供了正则化。在这里,我们提出使用多个模型预测的平均值来正则化自学习。

然而,与一次使用相同的损失训练多个模型不同,有一个明确的散度项,我们直接训练多个Øwβ 在 FDA过程中,不需要显式强制模型发散。我们实例化M=3分割网络

它们都是使用(6)从头开始训练的,对于某一目标图像xti的均值预测可以通过:

注意,网络的输出是softmax激活,因此平均值仍然是K个类别的概率分布。使用M模型生成的伪标签,我们可以训练Øwβ利用下面的自监督训练损失得到进一步的改进↓,其中 D^t是Dt用伪标签y^ti 扩充了

因为我们的训练细节与β的在FDA操作中不同,我们把利用不同分割网络的均值预测的自监督训练称为Multi-band Transfer(MBT)。我们的FDA语义分割网络的完整训练过程包括使用Eq.(6)从头开始对M个模型进行一轮初始训练,以及使用Eq.(8)进行另外两轮自监督训练,我们将在下一节中详细介绍。

实验

数据集

GTA5

SYNTHIA

CityScapes

Segmentation Network

实验结果

 

 

 

这篇关于FDA: 用于语义分割的傅里叶域自适应的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824225

相关文章

全解析CSS Grid 的 auto-fill 和 auto-fit 内容自适应

《全解析CSSGrid的auto-fill和auto-fit内容自适应》:本文主要介绍了全解析CSSGrid的auto-fill和auto-fit内容自适应的相关资料,详细内容请阅读本文,希望能对你有所帮助... css  Grid 的 auto-fill 和 auto-fit/* 父元素 */.gri

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

Python中__new__()方法适应及注意事项详解

《Python中__new__()方法适应及注意事项详解》:本文主要介绍Python中__new__()方法适应及注意事项的相关资料,new()方法是Python中的一个特殊构造方法,用于在创建对... 目录前言基本用法返回值单例模式自定义对象创建注意事项总结前言new() 方法在 python 中是一个

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多