域适应(DA)---域泛化(DG)

域适应(DA)---域泛化(DG)_第1张图片

域泛化数据

  • 分类
    PACS数据集
    PACS\VLCS\office-home 提取码:tmid
    域适应(DA)---域泛化(DG)_第2张图片
    ImageNet-C 衡量分类器对损坏的鲁棒性,包含15种corruption,可分为noise(+3)、blur(+4)、weather(+3)和digital(+5)。
    ImageNet-P 衡量对干扰的鲁棒性。

  • 分割
    GTA5
    SYNTHIA
    BDD100k(Berkeley Deep Drive Segmentation)
    域适应(DA)---域泛化(DG)_第3张图片

论文

1、IBN-Net(Two at Once: Enhancing Learning and Generalization Capacities via IBN-Net)

1、BN提高特征对图像内容的敏感度,降低对风格类变化的鲁棒性
2、IN提高对风格类变化的鲁棒性

IN虽然引入了外观不变性,但是减少了判别力(discriminative power)。因为IN操作损失了特征的均值与标准差信息,而实际上它们不仅表达风格信息,也表达了对任务有用的类别等信息。事实上,随着网络加深,特征的均值与标准差表达的外观信息越来越少,语义信息越来越多。因此,为了引入外观不变性同时尽可能保留判别力。我们在模型前半部分(如ResNet前三组residual groups)引入少量IN,深层保留BN。
域适应(DA)---域泛化(DG)_第4张图片

对此论文中提出的两个准则
1、IN只添加到浅层网络,不添加到深层网络。
因为IN提取的特征降低了样本间差异,不能放在深层影响分类效果
2、浅层BN层也要保留,保证内容相关信息可以顺利被传入深层

IBN-Net提高迁移能力是因为保持内容特征的同时,降低特征对风格类特征的鲁棒性。另外即使是同个样本集合,比如imagenet,其内部不仅仅是内容差异,也是有风格类差异的,所以IBN-Net不仅仅提高网络迁移能力,也提高网络在同一个数据集上的性能。

IBN-Net中有两个出色的模型IBN-a和IBN-b,IBN-a适用于当前域和目标域一致的问题,IBN-b适合使用在当前域和目标域不一致的问题,比如说在行人重识别中,训练数据是在白天收集的,但是想在黄昏的时候使用的时候。这也是为何IBN-Net在行人重识别领域用的非常多的原因。

2、Switchable Whitening自适配白化(Switchable Whitening for Deep Representation Learning)

为了更合理地引入外观不变性以及提升模型对不同任务的适应性,基于以下因素对IBN-Net进行了拓展:

1、图像风格迁移领域的学者发现协方差比标准差更好地编码了图像风格信息;
2、白化(whitening = center + scale + decorrelate)比标准化(standardization = center + scale)有更好的优化性质,即使得SGD更接近NGD(自然梯度)[6];
3、IBN-Net中IN与BN的数量依赖手工设计,并非最优,且不同任务需要的各种normalization数量可能不同。
因此,将各种不同的白化(BW, IW)和标准化(BN, IN, LN)方法统一于一种通用的形式,并且各种方法的比重可以根据特定任务学习,称作自适配白化(Switchable Whitening,SW)。具体而言,这些白化/标准化方法的区别可归纳为均值和协方差的计算方式不同,因此用可学习的权重系数对这些统计量进行加权平均,再用得到的均值和协方差进行白化操作。

3、Prototypical Contrast Adaptation for Domain Adaptive Semantic Segmentation

关键字:无监督域适应、腾讯优图、ECCV2022
域适应(DA)---域泛化(DG)_第5张图片

模型泛化

(1)数据端
数据增强
(2)模型端
模型复杂度、模型结构、正则化、dropout、distilling
(3)训练过程
weight initialization、early stop、cross validation、optimizer selection、loss function
(4)后处理
集成学习

定义

对于泛化任务上有许多不同的研究子领域,根据训练和测试集的数据的不同,以及对测试集可见性的不同,可以分成不同的子任务(多任务学习、迁移学习、域适应、元学习、终生学习、零样本学习、域泛化),具体总结如下:域适应(DA)---域泛化(DG)_第6张图片
在机器学习中训练的数据和测试数据的分布应该尽可能一致,这样才符合要求。但是实际应用中不可避免遇到训练数据无法将所有情况下(色调变化,明暗变化 )的数据都收集到,所以如何提升模型对图像外观变化的适应性、如何提高模型在不同域之间的泛化能力也是一个非常值得研究的课题。

卷积神经网络通过激活与标签相关的显性特征来进行图像分类。当训练和测试数据处于类似的分布时,它们的主导功能类似,导致不错的测试性能。尽管如此,在用不同的分布测试时,性能仍然是未满足的,导致跨域图像分类中的挑战。

域适应(DA)侧重于使源域分布适应目标域的分布,但它需要访问目标域中的样本,这限制了它们的适用性。
域泛化(DG)克服了这一限制提高DNN对任意不可见区域的健壮性。通常,大多数DG方法通过学习跨多个源域的共享表示来实现这一点。然而,收集这样的多域数据集成本高、劳动强度大,而且性能很大程度上依赖于源数据集的数量。

最近的一项研究表明,DG问题可以通过利用实例归一化层来解决,而不是依赖于多个源域,从而导致简单且具有成本效益的训练过程。实例归一化只对特征进行标准化,而没有考虑通道之间的相关性。然而,许多研究声称特征协方差包含特定领域的风格,如纹理和颜色,这意味着将实例归一化应用于网络可能不足以用于领域泛化,因为没有考虑特征协方差。白化变换是一种去除特征相关性并使每个特征具有单位方差的技术。已经证明,特征白化有效地消除了图像平移、样式转移和域自适应中所示的特定于域的样式信息,从而可以提高特征表示的泛化能力,但在DG中尚未被充分挖掘。然而,简单地采用白化变换来提高DNN的健壮性并不简单,因为它可能会同时消除域特定的样式和域不变的内容

特征对齐 Feature Alignment

模型一般由特征提取器和分类器两部分组成。特征提取器将输入数据映射到特征空间。我们一般在特征空间中实现分布对齐。DA由于知道部分目标域数据,有两种方式对齐。一种是直接将源域的分布对齐到目标域分布,另一种是寻找一个公共的分布(也称为domain-invariant/agnostic feature),将源域和目标域数据都对齐到这个分布上。DG由于不知道目标域数据,一般是找到公共的分布。

利用距离度量作为Loss训练特征提取器:直接将分布的距离作为Loss训练特征提取器。常用的距离度量公式有MMD,各类散度等。

利用GAN训练特征提取器:将特征提取器作为生成器,外加一个判别器。特征提取器的目标是生成不能被分辨来自哪个domain的特征,判别器的目标是判别特征数据是属于哪个domain。最终生成不能被判别器正确判别的特征,就认为特征提取器提取的特征是domain invariant的。由于GAN使用JS散度来度量分布的距离,可以说GAN也是利用距离度量作为Loss训练特征提取器,只不过网络结构增加了判别器的部分。
域泛化方法 | 通过Domain Alignment实现域泛化

特征解耦Feature Disentanglement

主要的想法是将提取到的特征进行解耦,尽可能的分解成领域相关和领域无关的一些特征。在预测分类时,是仅使用领域无关的特征 ,而在重建数据的情况下,会额外使用到领域相关的一些特征。

域随机化Domain Randomization

在源域上进行训练时,通过一组随机参数在源域上进行各种采样以得到各种各样的数据分布,然后通过在目标域上的测试结果来调整随机参数,进而学习到能够更好的泛化到目标域上的采样策略。
区别于传统的方法,增加了更多的人工设计的一些增强方法 :改变物体的位置以及纹理,改变物体的数量与形状,修改透明度以及相机角度,增加不同的随机噪音等等。
数据增广往往是在目标域数据的基础上进一步扩充数据规模的,而域随机化最大的不同是没有目标域数据。

最大均值差异(MMD,Maximum Mean Discrepancy)

MMD常被用来度量两个分布之间的距离,是迁移学习中常用的损失函数。

简单地理解就是计算两堆数据的均值距离,但是实际比较难计算。就将两个分布映射到另一个空间(再生希尔伯特空间)计算距离。计算距离的方法是,计算分布上每一个点映射到另一空间的距离然后求和。

最大均值差异还可以用来测试两个样本,是否来自两个不同分布p和q,如果均值差异达到最大,就说明采样的样本来自完全不同的分布。

经验风险最小化(ERM, Empirical risk minimization)

拟合参数的一个方法是求解目标函数使训练误差最小,这个过程叫做经验风险最小化。

机器学习的目的就是根据一些训练样本,寻找一个最优的函数,使得函数对输入X的估计Y’与实际输出Y之间的期望风险(可以暂时理解为误差)最小化。期望风险最小化依赖于样本的输入X与其输出Y之间的函数映射关系,而这个映射关系,在机器学习系统中,一般指代先验概率和类条件概率。然而,这两者在实际的应用中,都是无法准确获取的,唯一能够利用的就只有训练样本的输入X及其对应的观测输出Y。而机器学习的目的又必须要求使得期望风险最小化,从而得到需要的目标函数。不难想象,可以利用样本的算术平均值来代替式理想的期望。利用已知的经验数据(训练样本)来计算得到的误差,被称之为经验风险。用对参数求经验风险来逐渐逼近理想的期望风险的最小值,就是我们常说的经验风险最小化(Empirical risk minimization,ERM)原则。

不变风险最小化(IRM,Invariant Risk Minimization)

2019年Martin Arjovsky等人提出的一种用于跨域图像分类的新方法,其提出的背景是当我们使用机器学习方法完成图片分类任务时,训练模型所使用的数据集与真实情况的数据集可能存在差别(数据集分布偏移),造成这种分布偏移的原因有很多,目前大部分解决的方法是减小跨域分布偏差或者提取不变特征。而Martin提出的方法与之前很多跨域分类方法不同之处在于:为了提高机器学习的可解释性,并从根本上解决跨域分类问题,Martin考虑从数学方面推导出特征与标签预测的内在因果关系,即特征与标签之前存在与域无关的内在因果关系。

OoD 数据偏移

现实生活中 OoD (Out of Distribution)数据集广泛存在的 correlation shift 和 diversity shift 数据偏移问题,OoD 泛化算法的目标是提取这些训练的不变性表征,假设这种不变性表征也能在未知的测试环境中保持。
域适应(DA)---域泛化(DG)_第7张图片

  • 多样性偏移diversity shift
    标志是仅出现在训练环境,没有出现在测试环境中的特征(或者相反)。例如在 PACS 里,照片中的色彩在速写中完全消失。
  • 相关性偏移correlation shift
    标志是同时出现在训练和测试环境中的特征,但这些特征在不同环境下所体现的统计信息是不同的。例如在 Colored MNIST 上,颜色和数字的关联在两个环境之间就是不一样的。

域适应

DA解决的是源域和目标域存在分布差异的问题
(1)特征空间不同,标签空间相同——同构DA在这里插入图片描述
(2)特征空间不同,标签空间也不同——异构DA
在这里插入图片描述

域泛化

DG与DA的最大区别是:DA在训练时可以拿到少量目标域数据,这些目标域数据可能是有标签的(有监督DA),也可能是无标签的(无监督DA),但是DG在训练时看不到目标域数据。

现在对DG的研究主要分为单源域DG和多源域DG,一般定义多源域DG每个源域内部的数据是同分布的。现有的很多DG方法都是仅利用源域的特征信息进行模型学习。

(1)增强模型的泛化能力一个最常用的方式就是数据增强,即把训练数据转换为各种各样的形式使得模型在训练阶段就见过各种各样的数据分布,从而提高模型的泛化能力。但是寄希望于数据增强能够使得转换后的训练数据覆盖所有测试数据的分布是不现实的。因此,数据增强的方式来增强模型的泛化能力具有其固有的缺陷。

(2)另一个方向来增强泛化能力的方式是使用Normalization 和 Whitening,该方向的方法利用实例归一化(Instance Normalization, IN)或实例白化(Instance Whitening,IW)对不同样本的特征分布进行标准化。IN分别对单个图像的每个通道的特征进行标准化归一化,以减轻由于样式变化引起的特征不匹配。使用IN只实现了特征分布的中心对齐,但是无法对齐特征的联合分布。由于IW 可以消除各通道特征间的线性相关性,所以使用 IW 后可以形成均匀分布的良好聚类特征。

分布外泛化OODG

OODG与DG研究的是同一个问题

分布外检测OODD

检测测试集中在训练集中没出现的标签的样本 ,OODD根据源域的数量,源域和目标域标签空间的重叠程度分为:Anomaly Detection, Novelty Detection, Open Set Recognition, Out-of-Distribution Detection这几类。
因此OODD和OODG的差别主要有两点:

  • OODG研究的是泛化问题,OODD研究的是检测问题
  • OODG在特征空间和标签空间都可能存在Domain Shift,OODD一般研究的是标签空间存在差异
    域适应(DA)---域泛化(DG)_第8张图片
    Generalized Out-of-Distribution Detection: A Survey
    Towards Out-Of-Distribution Generalization: A Survey

开放集域适应

OS主要也是研究分布差异的问题,但它关注的是标签空间分布差异的问题。与它相对的概念是Close Set。Close Set也就是源域和目标域标签空间完全重叠,OS源域的标签空间可能包含于目标域的标签空间,也可能是和目标域的标签空间有部分重叠

域偏移Domain Shift

首先需要知道著名的贝叶斯公式:
p ( x,y ) = p ( x∣y ) p ( y ) = p ( y∣x ) p ( x )
Domain Shift主要有三种情况,分别是由于输入的边缘概率分布p ( x ) 、输出标签的边缘概率分布p ( y ) 、对应的条件概率分布p ( x∣y ) 或者p ( y∣x )后验分布)不一致导致的。

1、Covariate Shift:输入的边缘概率分布不同,其他相同。以领域自适应为例,源域S,目标域T,即ps ( x ) ≠ pt ( x ) ,但是条件概率分布相等,ps ( y∣x ) = pt (y∣x ) ,输出标签的边缘概率分布也相等,ps ( y ) = pt ( y ) 。这个很好理解,就是数据采样方式不同,导致输入数据的分布压根就不一样。

2、Prior Shift(即Label Shift):从名字也可以看出,输出的边缘概率分布(先验分布)不同,即ps ( y ) ≠ p t ( y ) ,对应的条件概率分布相等,即ps ( x∣y ) = pt ( x∣y ) 。这种偏移属于先天类型的偏移,是由于源域数据和目标域数据每个标签的数据出现的频率不一样导致的,比如标签为猫的数据在源域中占了80%,而在目标域中只有30%。

3、Concept Shift:两个边缘概率分布都相同,即ps ( x ) = pt ( x ) ,但是后验分布不同,即ps ( y∣x ) ≠ pt ( y∣x ) 。这种比较奇怪,我感觉就是模型的问题。比如面对同样的目标域样本,然后域适应模型分类错误的概率比纯粹在目标域样本上训练的模型高,就是说模型能力不行。还有个例子是:输入数据类型分布相同,但是学习的任务发生了变化;比如在水处理系统的传感器时间序列异常检测中,因为上游放水,一段维持较高水位,但是并不能和其余时间一样被认定为是报警事件。但这种学习任务发生变化的不太可能在训练过程中发生。

你可能感兴趣的:(计算机视觉,深度学习,pytorch)