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

相关文章

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

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

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

基于YOLO8的图片实例分割系统

文章目录 在线体验快速开始一、项目介绍篇1.1 YOLO81.2 ultralytics1.3 模块介绍1.3.1 scan_task1.3.2 scan_taskflow.py1.3.3 segment_app.py 二、核心代码介绍篇2.1 segment_app.py2.2 scan_taskflow.py 三、结语 代码资源:计算机视觉领域YOLO8技术的图片实例分割实

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code = """<iframe srcdoc='<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>My static Spa

安卓实现弹出软键盘屏幕自适应调整

今天,我通过尝试诸多方法,最终实现了软键盘弹出屏幕的自适应。      其实,一开始我想通过EditText的事件来实现,后来发现,安卓自带的函数十分强大,只需几行代码,便可实现。实现如下:     在Manifest中设置activity的属性:android:windowSoftInputMode="adjustUnspecified|stateHidden|adjustResi

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

图像分割分析效果2

这次加了结构化损失 # 训练集dice: 0.9219 - iou: 0.8611 - loss: 0.0318 - mae: 0.0220 - total: 0.8915  # dropout后:dice: 0.9143 - iou: 0.8488 - loss: 0.0335 - mae: 0.0236 - total: 0.8816 # 加了结构化损失后:avg_score: 0.89

UGUI 背景自适应文本框

需求 UGUI背景自适应文本框UGUI背景图片随文本框长度变化 解决方案 仅文本框宽度自适应 背景节点配置: 背景节点下的Text子节点配置: 文本框宽高自适应 将Vertical Fit设置为Preferred Size 将Child Controls Size Height选项勾上

Openharmony 图片自适应全屏显示

前言: Deveco_studio 4.1 release 版本 我们想要图片全屏显示,并且不出现黑白边,可以参考以下代码 这段代码会自适应你的容器大小,你的容器时全屏,图片就会全屏 @Entry@Componentstruct Index {@State message: string = 'Hello World';build() {Column() {}.width('100%'

Cocos2d-x自适应Android屏幕分辨

ndroid下分辨率太多,不太可能为每种分辨率做一套资源,目前一般来说比较流行的是320*480, 800*400, 854*400。当然现在720P的也出来了,但至少目前不是主流机型^_^. 对于不支持的分辨率,我希望的是能够按照屏幕大小按比例缩放,即有了下面的代码。 1:ViewAutoScale 写了一个ViewAutoScale函数,如下:   #include "ViewAuto