论文分享:Exact Feature Distribution Matching for Arbitrary Style Transfer and Domain Generalization


论文:Exact Feature Distribution Matching for Arbitrary Style Transfer and Domain Generalization

论文地址: Exact Feature Distribution Matching for Arbitrary Style Transfer and Domain Generalization

代码地址: https://github.com/YBZh/EFDM

以往一些领域泛化(Domain generalization)和风格迁移(Arbitrary style transfer)的工作都假设特征符合高斯分布,因此传统特征分布匹配算法通常使用均值和方差来进行匹配。但是现实场景中的数据分布通常要比高斯分布更加复杂,仅仅使用一阶和二阶的统计量不能很好地进行匹配。

在下面这张图是作者统计了四种不同风格的图片的特征分布,可以看出真实场景中特征的分布并不是严格地符合高斯分布。

在这里插入图片描述

在这篇论文中,作者提出了一种通过使用精确直方图匹配(Exact HistogramMatching (EHM))来对图片特征的经验累积分布函数(empirical Cumulative Distribution Functions (eCDFs))进行匹配的Exact Feature Distribution Matching (EFDM)。

Exact Feature Distribution Matching (EFDM)

在介绍本文使用的EHM之前,为了进行对比,首先介绍两个比较常用的匹配方法,AdaIn和HM。

Adaptive instance normalization (AdaIN)

假设 x x x y y y分别为输入的特征和要匹配的目标特征(风格特征), o o o为匹配的输出特征。

在AdaIn方法中直接使用均值和方差来对特征进行匹配:

o = x − μ ( x ) σ ( x ) σ ( y ) + μ ( y ) \Large o = \frac{x-\mu(x)}{\sigma(x)}\sigma(y)+\mu(y) o=σ(x)xμ(x)σ(y)+μ(y)

其中 μ ( ⋅ ) \mu(\cdot) μ() σ ( ⋅ ) \sigma(\cdot) σ() 分别代表特征的均值和标准差,通过AdaIN后输出特征 o o o中包含了 x x x的内容信息,以及蕴含在 y y y的均值和方差中风格和领域信息。

Histogram matching (HM)

简单来说,HM的做法就是将 x x x与目标特征 y y y的eCDF进行匹配,然后y中相匹配的值作为输出。具体地,首先计算 x x x y y y的经验累积函数eCDFs:

F ^ X ( x ) = 1 n ∑ i = 1 n 1 x i ≤ x , F ^ Y ( y ) = 1 m ∑ i = 1 m 1 y i ≤ y , \large \hat{F}_{X}(x)= \frac{1}{n}\sum^n_{i=1}\mathbf{1}_{x_i \le x},\\ \hat{F}_{Y}(y)= \frac{1}{m}\sum^m_{i=1}\mathbf{1}_{y_i \le y}, F^X(x)=n1i=1n1xix,F^Y(y)=m1i=1m1yiy,

其中 1 A \mathbf{1}_A 1A 是一个示性函数,当 A A A事件满足的时候为1,否则为0。

然后对于 x x x 中的每一个元素 x i x_i xi ,找到满足 F ^ X ( x i ) = F ^ Y ( y i ) \hat{F}_X(x_i)=\hat{F}_Y(y_i) F^X(xi)=F^Y(yi) y i y_i yi 来作为单个元素的一个映射: H ( x i ) = y i H(x_i) = y_i H(xi)=yi

Exact HistogramMatching (EHM)

首先,使用快速排序算法分别对 x x x y y y 进行排序:
在这里插入图片描述
其中 { x τ i } i = 1 n \{ x_{\tau_i}\}^n_{i=1} {xτi}i=1n { y k i } i = 1 n \{ y_{k_i}\}^n_{i=1} {yki}i=1n 是分别对 x x x y y y 按照值进行升序排列后的结果。

然后,直接将进行排序后与 x τ i x_{\tau_i} xτi 相对应的 y k i y_{k_i} yki 作为新的输出:

o τ i = y k i \Large o_{\tau_i} =y_{k_i} oτi=yki

相比于HM,EHM通过排序找到 x x x y y y相对应的像素值并使用了一个像素级别的转换,这可以使输出的特征与目标特征拥有相同的高阶统计信息。

下图是作者使用了一个实例来说明AdaIN,HM 和 EHM在计算和结果上的差别。从图中可以看出,在使用了AdaIN,和HM后, o o o y y y 的高阶统计量没有很好地进行匹配,而高阶的统计量中通常蕴含了样本的风格和领域的信息。相反,由于EHM只是改变 y y y 的顺序后作为输出的特征,因此很好地保存了 y y y 中的各种高阶的信息。
在这里插入图片描述

在任意风格迁移(AST)和领域泛化(DG)中使用EFDM

为了使深度模型在使用了EFDM后可以反向传播,作者对EFDM的公式进行了修改:

E F D M ( x , y ) : o τ i = x τ i + y k i − ⟨ x τ i ⟩ \large EFDM(x,y):o_{\tau_i}=x_{\tau_i}+y_{k_i}-\langle x_{\tau_i}\rangle EFDM(x,y):oτi=xτi+ykixτi

其中 ⟨ ⋅ ⟩ \langle \cdot \rangle 表示梯度停止操作。这篇论文中提出的EFDM可以在神经网络中仅仅通过几行代码来即插即用,其Pytorch形式的伪代码可以表示为:
在这里插入图片描述

在AST中使用EFDM

这一部分使用了一个简单的编码解码结构,作者将一个经过预训练的VGG-19的前几层进行固定后作为编码器 f f f。对于输入的内容图片(content image) X X X 和风格图片(style image) Y Y Y ,首先使用 f f f 来将它们映射到特征空间,然后使用EFDM获得经过风格转换后的特征 S S S:

S = E F D M ( f ( X ) , f ( Y ) ) S = EFDM(f(X),f(Y)) S=EFDM(f(X),f(Y))

然后使用一个经过随机初试化的解码器 g g g 来将 S S S 映射回归图像空间,获得经过风格变换的图片 g ( S ) g(S) g(S)

在论文中,作者将内容损失 L c \mathcal{L}_c Lc和风格损失 L s \mathcal{L}_s Ls进行组合后来对网络进行训练:

L = L c + ω L s \mathcal{L} = \mathcal{L}_c + \omega \mathcal{L}_s L=Lc+ωLs

其中 ω \omega ω 是一个权衡两个损失的超参数。具体地,内容损失函数通过风格变换图像的特征 f ( g ( S ) ) f(g(S)) f(g(S))和经过风格转换后的特征 S S S之间的欧氏距离来计算:

L c = ∥ f ( g ( S ) ) − S ∥ 2 . \mathcal{L}_c = \|f(g(S))-S\|_2. Lc=f(g(S))S2.

风格损失通常用来衡量变换风格后的图像 g ( S ) g(S) g(S) Y Y Y之间的分布散度,本文使用了一种将转换风格图片的特征 ϕ i ( g ( S ) ) \phi_i(g(S)) ϕi(g(S))和它的风格转换特征 E F D M ( ϕ i ( g ( S ) ) , ϕ i ( Y ) ) EFDM(\phi_i(g(S)),\phi_i(Y)) EFDM(ϕi(g(S)),ϕi(Y))的欧氏距离进行求和:

L s = ∑ i = 1 L ∥ ϕ i ( g ( S ) ) − E F D M ( ϕ i ( g ( S ) ) , ϕ i ( Y ) ) ∥ 2 . \mathcal{L}_s = \sum^L_{i=1}\|\phi_i(g(S))-EFDM(\phi_i(g(S)),\phi_i(Y))\|_2. Ls=i=1Lϕi(g(S))EFDM(ϕi(g(S)),ϕi(Y))2.

其中作者将 { ϕ } i = 1 L \{\phi\}^L_{i = 1} {ϕ}i=1L 实例化为VGG-19中的relu1_1,relu2_1,relu3_1和relu4_1层。

在DG中使用EFDM

由于不同域的数据在特征分布上存在较大差异,在面对一些需要跨域的场景时,模型的泛化能力往往是一个不得不考虑的问题。通过使用EFDM,特征中的高阶信息可以很好地进行匹配,因此作者在这篇论文中使用EFDM设计了一种适用于邻域泛化的跨分布特征增强方法。为了生成更多不同风格混合的增强特征,作者将EFDM延伸为对排序后的特征进行差值,得到了精确地特征分布混合(Exact Feature Distribution Mixing (EFDMix)):

E F D M i x ( x , y ) : o τ i = x τ i + ( 1 − λ ) y k i − ( 1 − λ ) ⟨ x τ i ⟩ . EFDMix(x,y):o_{\tau_i}=x_{\tau_i}+(1-\lambda)y_{k_i}-(1-\lambda) \langle x_{\tau_i} \rangle. EFDMix(x,y):oτi=xτi+(1λ)yki(1λ)xτi.

其中 λ \lambda λ不同样本的混合权重,论文中从Beta分布: λ ∼ B e t a ( α , α ) \lambda \sim Beta(\alpha,\alpha) λBeta(α,α)中对 λ \lambda λ进行采样, α ∈ ( 0 , ∞ ) \alpha \in (0,\infty) α(0,)

实验

如下图所示是EFDM同其他方法在风格迁移上的效果对比,可以发现,在使用了EFDM后,图像在经过风格变换后保留了原图更多的结构和细节信息。相反,其他的方法可能会引入许多视觉伪影和图像失真。
在这里插入图片描述

下图显示在了特征分布混合EFDMix中改变 λ \lambda λ 时图像风格的变化。
在这里插入图片描述

下面是图像在多个不同风格之间进行插值的一个可视化,可以发现,通过这种方式可以得到图像很多新的风格。

在这里插入图片描述

在下面的表格中,作者在领域泛化的两种不同的实验设置中同其他方法进行了对比,其中leave-one-domain-out setting 使用多个源域的数据训练网络,然后在一个未知的领域上进行测试,single-source setting 仅仅使用一个源域的数据训练网络,然后在多个未知的领域身上进行测试。从表中可以看出在这两种实验设置下,论文中提出的方法都达到了较好的分类效果。

在这里插入图片描述

在行人重识别的两个数据集MarKet1501和GRID上的测试同样达到了较好的效果。
在这里插入图片描述

更多关于EFDM的细节,请参考原论文。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
It seems that you are encountering an error while trying to install the "imutils" package. This error commonly occurs when the package is not found in the Python Package Index (PyPI) or when there is a typo in the package name. To resolve this issue, you can try the following steps: 1. Double-check the package name: Make sure you have spelled "imutils" correctly. Typos in the package name can lead to this error. 2. Check PyPI for package availability: Visit the PyPI website (https://pypi.org/) and search for "imutils" to verify if the package exists. If it does not exist, you may need to consider an alternative package or check if the package has a different name. 3. Update pip and setuptools: Ensure that you have the latest versions of pip and setuptools installed. You can do this by running the following commands: ``` pip install --upgrade pip pip install --upgrade setuptools ``` 4. Check your Python environment: If you are using a virtual environment, make sure it is activated before installing the package. Additionally, check if you are using the correct Python version for the package. 5. Use alternative installation methods: If the package is not available on PyPI, you may need to search for alternative installation methods provided by the package developer, such as downloading and installing the package manually. If none of these steps solve your issue, please provide more information about your environment and the exact command you are using to install the package so that I can assist you further.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独木春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值