论文笔记:Conditional Coupled Generative Adversarial Networks for Zero-Shot Domain Adaptation

本文探讨了一种新颖的零样本领域适配(ZSDA)学习策略,通过无关任务的对齐来提升模型的泛化能力。介绍了CoCoGAN及其条件变体在不同任务间的共享与差异化特性,提出Representation Alignment来解决目标域数据缺失问题,确保模型在未见过的领域中仍能保持良好性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文提出了一个比较有趣的 ZSDAZSDAZSDA(zero-shot domain adaptation) 的学习策略。

  • 假如现在我们有两个 UIT(Style Transfer)UIT(Style~Transfer)UIT(Style Transfer) 的任务,
    在这里插入图片描述
  • 原本我们可以构建两个 CycleGANCycleGANCycleGAN 就可以解决上面的问题,或者把数据混合在一起,训练一个更高鲁棒性的 CycleGANCycleGANCycleGAN.
  • 但实际上,有时候我们并没有右下角的目标域的图像,这时候我们希望基于上面的 gray num.gray~num.gray num.color num.color~num.color num. 数据集训练一个 UITUITUIT 模型,它也能够应用到下面的 gray letter→color lettergray~letter \rightarrow color~lettergray lettercolor letter,但现实中,本质上仍旧是统计学的深度学习算法并不能有这样的泛化能力。
  • 但如果我们知道了 gray num.∼gray lettergray~num.\sim gray~lettergray num.gray letter 之间的某种对应关系 AlignsAlign_sAligns,那么,color num.∼color lettercolor~num.\sim color~lettercolor num.color letter 之间也必然存在某种对应关系 AligntAlign_tAlignt。我们可以利用这样的对应关系来作为监督信息,代替缺失的 color lettercolor~lettercolor letter 数据。因为存在:[gray letter]→[Aligns]→[gray num.]→[UIT]→[color num.]→[Alignt]→[color letter] [gray~letter]\rightarrow [Align_s] \rightarrow [gray~num.]\rightarrow [UIT]\rightarrow[color~num.]\rightarrow[Align_t]\rightarrow[color~letter] [gray letter][Aligns][gray num.][UIT][color num.][Alignt][color letter]

所以,理论上,这两个对应关系的限制是充分的。


1. CoCoGAN

首先,我们需要了解 CoGAN
在这里插入图片描述

  • 其基本思想是,除去样式,两个域在 content 方面是共享的,因此有两个生成器,起始于同一个 content latent space,同时两个网络共享底层(深层特征 content),异于高层(浅层特征 appearance);同样有两个鉴别器,异于底层,共享高层。
  • 因此,其目标函数为:
    max⁡g1,g2min⁡f1,f2V(f1,f2,g1,g2)≡Ex1∼px1[−log⁡f1(x1)]+Ez∼pz[−log⁡(1−f1(g1(z)))]+Ex2∼px2[−log⁡f2(x2)]+Ez∼pz[−log⁡(1−f2(g2(z)))] \max_{g_1,g_2} \min_{f_1,f_2} V(f_1,f_2,g_1,g_2)\equiv \Bbb E_{x_1\sim p_{x_1}}[-\log f_1(x_1)]+\Bbb E_{z\sim p_z}[-\log (1-f_1(g_1(z)))] + \Bbb E_{x_2\sim p_{x_2}}[-\log f_2(x_2)]+\Bbb E_{z\sim p_z}[-\log (1-f_2(g_2(z)))] g1,g2maxf1,f2minV(f1,f2,g1,g2)Ex1px1[logf1(x1)]+Ezpz[log(1f1(g1(z)))]+Ex2px2[logf2(x2)]+Ezpz[log(1f2(g2(z)))] 其中,gig_igi 是生成器/解码器,fif_ifi 是鉴别器,i=1,2i=1,2i=1,2

其次,我们可以理解 CoCoGAN
在这里插入图片描述
同样的,所谓的 ConditionalConditionalConditional 是指加了一个 ccc 用于决定让模型处理哪一个任务。

  • 我们称 gray num.→color num.gray~num.\rightarrow color~num.gray num.color num. 是一个(与目标任务)无关的任务(irrelevant task/IRIRIR
  • 我们称另一个 gray letter→color lettergray~letter\rightarrow color~lettergray lettercolor letter 是目标/相关任务(relevant task/RRR
  • c=0c=0c=0 时,处理 IRIRIRc=1c=1c=1 时,处理 RRR.

假如我们四个域的图像数据都有:Xsir,Xtir,Xsr,Xtr{X_s^{ir},X_t^{ir},X_s^r,X_t^r}Xsir,Xtir,Xsr,Xtr,那么可以直接使用 CoGAN 的对抗 loss,即,我们使用
max⁡gs,gtmin⁡fs,ftV(fs,ft,gs,gt)≡Exs∼pxs[−log⁡fs(xs,c)]+Ez∼pz[−log⁡(1−fs(gs(z,c),c))]+Ext∼pxt[−log⁡ft(xt,c)]+Ez∼pz[−log⁡(1−ft(gt(z,c),c))] \max_{g_s,g_t} \min_{f_s,f_t} V(f_s,f_t,g_s,g_t)\equiv \Bbb E_{x_s\sim p_{x_s}}[-\log f_s(x_s,c)]+\Bbb E_{z\sim p_z}[-\log (1-f_s(g_s(z,c),c))] + \Bbb E_{x_t\sim p_{x_t}}[-\log f_t(x_t,c)]+\Bbb E_{z\sim p_z}[-\log (1-f_t(g_t(z,c),c))] gs,gtmaxfs,ftminV(fs,ft,gs,gt)Exspxs[logfs(xs,c)]+Ezpz[log(1fs(gs(z,c),c))]+Extpxt[logft(xt,c)]+Ezpz[log(1ft(gt(z,c),c))] 但实际上,第三项 Ext∼pxt[−log⁡ft(xt,c)]E_{x_t\sim p_{x_t}}[-\log f_t(x_t,c)]Extpxt[logft(xt,c)] 只能取到 c=0c=0c=0,那么这样的训练是不充分的,结果是 gtg_tgt 过分偏向于 gray num.→color num.gray~num.\rightarrow color~num.gray num.color num.,对于 c=1c=1c=1 的时候,要么 gt(z,1)g_t(z,1)gt(z,1) 也是 彩色数字,要么就什么也不是,而不是理想的彩色字母。

因此,我们需要增加新的限制——

2. Representation Alignment

在高层表征中,如 encoderencoderencoderdecoderdecoderdecoder 之间。

rs(Xsir,c=0)≡rt(Xtir,c=0)⏟real data        ≈rt(T(Xsir),c=0)⏟fake data \underbrace{r_s(X_s^{ir},c=0) \equiv r_t(X_t^{ir},c=0)}_{real~data} ~~~~~~~~\approx \underbrace{r_t(T(X_s^{ir}),c=0)}_{fake~data} real datars(Xsir,c=0)rt(Xtir,c=0)        fake datart(T(Xsir),c=0) rs(Xsr,c=1)≡rt(Xtr,c=1)⏟real data        ≈rt(T(Xsr),c=1)⏟fake data \underbrace{r_s(X_s^{r},c=1) \equiv r_t(X_t^{r},c=1)}_{real~data} ~~~~~~~~ \approx \underbrace{r_t(T(X_s^{r}),c=1)}_{fake~data} real datars(Xsr,c=1)rt(Xtr,c=1)        fake datart(T(Xsr),c=1) 假如我们认为下面的对齐存在:rs(Xsir,c=0)∼rs(Xsr,c=1) r_s(X_s^{ir},c=0) \sim r_s(X_s^{r},c=1) rs(Xsir,c=0)rs(Xsr,c=1) 则必然会有: rt(Xtir,c=0)∼rt(Xtr,c=1) r_t(X_t^{ir},c=0) \sim r_t(X_t^{r},c=1) rt(Xtir,c=0)rt(Xtr,c=1) 即在两个源域 IRSIR_SIRSRSR_SRS 以某种方式对齐,则其对应的目标域 IRTIR_TIRTRTR_TRT 必定也以某种方式对齐。
但是由于我们没有:rt(Xtr,c=1)r_t(X_t^{r},c=1)rt(Xtr,c=1),所以需要近似地在合成图像 fake datafake~datafake data 上去对齐
那如果我们现在希望用 task classifier\rm task~classifiertask classifier 去表达这种限制,可以有:

l(.)l(.)l(.) 为 logistics 函数
在源域上有:max⁡hsLs≡Exs∼pXsir[l(hs(xs))]+Exs∼pXsr[l(hs(xs))]⏟Align: real data in S+Ez∼pz[l(hs(gs(z,c=0)))]+Ez∼pz[l(hs(gs(z,c=1)))]⏟Align: fake data in S \max_{h_s} L_s \equiv \underbrace{ {\Bbb E}_{x_s\sim p_{X_s^{ir}}}[l(h_s(x_s))] + {\Bbb E}_{x_s\sim p_{X_s^{r}}}[l(h_s(x_s))] }_{{\rm Align}:~real~data~in~S} + \underbrace{ {\Bbb E}_{z\sim p_z}[l(h_s(g_s(z,c=0)))] + {\Bbb E}_{z\sim p_z}[l(h_s(g_s(z,c=1)))]}_{{\rm Align}:~fake~data~in~S} hsmaxLsAlign: real data in SExspXsir[l(hs(xs))]+ExspXsr[l(hs(xs))]+Align: fake data in SEzpz[l(hs(gs(z,c=0)))]+Ezpz[l(hs(gs(z,c=1)))] 同时,在目标域上有:max⁡htLt≡Ext∼pXtir[l(ht(xt))]⏟Align: real data in T+Ez∼pz[l(ht(gt(z,c=0)))]+Ez∼pz[l(ht(gt(z,c=1)))]⏟Align: fake data in T \max_{h_t} L_t \equiv \underbrace{ {\Bbb E}_{x_t\sim p_{X_t^{ir}}}[l(h_t(x_t))]}_{{\rm Align}:~real~data~in~T} + \underbrace{ {\Bbb E}_{z\sim p_z}[l(h_t(g_t(z,c=0)))] + {\Bbb E}_{z\sim p_z}[l(h_t(g_t(z,c=1)))]}_{{\rm Align}:~fake~data~in~T} htmaxLtAlign: real data in TExtpXtir[l(ht(xt))]+Align: fake data in TEzpz[l(ht(gt(z,c=0)))]+Ezpz[l(ht(gt(z,c=1)))]


这里有个疑问,既然在这里有 a×b≤a2+b22≤a+b2a\times b \le {{a^2+b^2}\over{2}} \le {{a+b}\over{2}}a×b2a2+b22a+b,不应该是最大化 ababab 则必然 最大化 a+ba+ba+b?为什么这里使用的是加法而不是乘法?
此外就是,上面的两条式子是为了好看,实际上只有 Align: real data in S{\rm Align}:~real~data~in~SAlign: real data in SAlign: fake data in T{\rm Align}:~fake~data~in~TAlign: fake data in T 是起作用的。这就是我们要对齐的东西。

这里也给出了,当我们试图对齐两个分布的时候,可以通过引入 task classifier 来拉近,目标是让两个分布的输入趋近于同一个值(在这里是 logistics 值都 →1\rightarrow 11),
但是这样会容易导致分类器对任何输入都输出是 111 ,这是不对的,从作者的设置来看,这个分类器的 loss 是不对的,只用在了鉴别器的优化。即:
(fs^,ft^,hs^,ht^)=arg min⁡fs,ft,hs,htV(fs,ft,gs^,gt^)−(Ls+Lt) (\hat{f_s},\hat{f_t},\hat{h_s},\hat{h_t})=\argmin_{f_s,f_t,h_s,h_t} V(f_s,f_t,\hat{g_s},\hat{g_t})-(L_s+L_t) (fs^,ft^,hs^,ht^)=fs,ft,hs,htargminV(fs,ft,gs^,gt^)(Ls+Lt) (gs^,gt^)=arg max⁡gs,gtV(fs^,ft^,gs,gt)(\hat{g_s},\hat{g_t})=\argmax_{g_s,g_t} V(\hat{f_s},\hat{f_t},g_s,g_t)(gs^,gt^)=gs,gtargmaxV(fs^,ft^,gs,gt) 但无论如何,本文提出了一个比较好的 DADADA 的学习策略,通过另外一组无关的任务,构建一个 aligementaligementaligement 来作为额外的限制。


这一节我们带大家系统认识一下几个手写数据集:
在这里插入图片描述
总共四个数据集({DM,DF,DN,DE}\{ D_M,D_F,D_N,D_E \}{DM,DF,DN,DE}),但是,实际上每个数据集只有 GrayGrayGray 版本,我们称之为 G−DomainG-DomainGDomain(第1行),我们需要制作不同 style 的其他 3 个 版本/domains。

  • 制作 ColorColorColor 版本(第2行)C−DomainC-DomainCDomain

对于每一张灰度图 I∈Rh×w×1I\in\Bbb R^{h\times w\times 1}IRh×w×1,从彩色图像数据集 BSDS500 中选择一张图像,随机 crop 出一个块 P∈Rm×n×3P\in \Bbb R^{m\times n\times3}PRm×n×3,然后合并:Ic=∣I−P∣I_c=|I-P|Ic=IP

  • 制作 EdgeEdgeEdge 版本(第3行)E−domainE-domainEdomain

对彩色图像使用 Canny edge detector
Ie=canny(Ic)I_e=canny(I_c)Ie=canny(Ic)

  • 制作 NegativeNegativeNegative 版本(第4行)N−DomainN-DomainNDomain

In=255−II_n=255-IIn=255I


这一节我们介绍实验

1. baseline
  • ZDDAZDDAZDDA 这是另外一个唯一使用 DL 于 ZSDA 任务的方法
  • CoCoGAN w/o TCoCoGAN~w/o~TCoCoGAN w/o T 不使用对应关系作为额外限制的 CoCoGANCoCoGANCoCoGAN
2. 模型评价指标

同样以最开始的例子讲述:

  • 得到训练后的模型 gs,gtg_s, g_tgs,gt
  • c=1c=1c=1,随机采取一些随机数 zzz,获取 x~sr=gs^(z,c=1)\widetilde{x}_s^r=\hat{g_s}(z,c=1)xsr=gs^(z,c=1)x~tr=gt^(z,c=1)\widetilde{x}_t^r=\hat{g_t}(z,c=1)xtr=gt^(z,c=1),我们认为 x~sr,x~tr\widetilde{x}_s^r,\widetilde{x}_t^rxsr,xtr 是同一个字母。
  • 利用已有的 XsrX_s^rXsr 的数据集训练一个字母分类器 Cs(xsr)C_s(x_s^r)Cs(xsr)
  • 用这个分类器 Cs(xsr)C_s(x_s^r)Cs(xsr) 去对 {x~sr}\{\widetilde{x}_s^r\}{xsr} 做识别,也就得到了 {x~tr}\{\widetilde{x}_t^r\}{xtr} 的标签
  • 用这些标签信息去训练一个字母分类器 Ct(x~tr)C_t(\widetilde{x}_t^r)Ct(xtr)
  • 用这个鉴别器去对 XtrX_t^rXtr 作分类,根据该数据集本身的 GTGTGT 计算 Ct(xtr)C_t(x_t^r)Ct(xtr) 分类的准确度
3. 实验结果

在这里插入图片描述
结果当然是碾压对方其他两个 baselinesbaselinesbaselines.

### 使用条件生成对抗网络进行图像去雨的方法 #### 条件生成对抗网络简介 条件生成对抗网络(Conditional Generative Adversarial Networks, cGANs)是一种扩展版本的生成对抗网络(GAN),它允许模型根据给定的条件生成数据。对于图像去雨任务,cGAN被用来学习从有雨水痕迹的图像到干净背景图像之间的映射关系。 #### 架构组成 该架构由两部分构成:生成器和判别器。生成器负责创建尽可能真实的无雨图片;而判别器的任务是对真实样本与伪造样本做出区分[^2]。 #### 生成器设计 生成器采用了密集连接的设计理念,这种结构有助于提高特征传播效率并缓解梯度消失问题。具体来说,在处理每一层时都会将其输出直接传递给后续所有层次作为输入的一部分,从而形成一种跳跃式的连接模式。这样的设计可以使得深层神经元能够接收到浅层的信息,进而增强了整个网络的学习能力[^3]。 #### 判别器特性 为了更好地评估生成效果的好坏,判别器不仅考虑整张图片的整体性质,还会关注局部区域内的细节差异。这意味着它可以更精确地区分自然场景中的细微差别以及人工合成出来的瑕疵之处。这种方法有效地提高了系统的鲁棒性和准确性。 #### 损失函数定义 除了标准的对抗损失外,研究者们还引入了一个专门针对此应用场景定制化的细化损失项。这一措施意在进一步抑制可能由于训练过程不稳定而导致的艺术品现象的发生,确保最终得到的结果既逼真又不失真实性。 ```python import torch.nn as nn class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() # Define the generator architecture here def forward(self, x): pass class Discriminator(nn.Module): def __init__(self): super(Discriminator, self).__init__() # Define the discriminator architecture here which leverages both local and global info. def forward(self, x): pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值