- 首先,我们先来了解一下Fusion Gan,Fusion Gan即融合生成对抗网络,该网络生成具有输入图像x的身份和输入图像y的形状的融合图像。(如图1)
-
Fusion Gan网络可以以无人监督的方式同时训练两个以上的图像数据集。 我们定义一个身份损失LI来捕捉图像x的身份和一个形状损失LS来获得y的形状。 此外,我们提出了一种名为Min-Patch训练的新型训练方法,将发生器集中在图像的关键部分,而不是整个部分。
我们的工作目标是学习一种映射函数,该函数根据多个未标记集合提供的两个输入图像生成融合图像。 通过从第一输入图像x获得身份并从第二输入图像y获得形状,我们可以生成组合输出图像。 我们用同一性Ix和形状Sx表示图像x,如x =(1x,Sx)。 当我们的网络有两个输入图像x =(Ix,Sx)和y =(Iy,Sy)时,我们的目标是生成以下新的融合图像:
因此,输出是融合图像,其具有与x相同的身份,并且具有与y相同的形状。 当给出两个输入时,生成器G可以自动从x获得标识,并从y形状(图1)。 我们的网络不仅限于两个图像集之间的过渡,而是可以用于多个未标记的图像集,我们在这里提到的身份和形状可以是任何特征,具体取决于图像集和任务。 通常,身份可以被视为集合中的所有图像共享的集合级特征,并且形状可以被视为可以区分集合中的每个单个图像的实例级特征。
(1)身份损失LI
为了获得图像x的身份,我们需要使输出图像的分布类似于第一输入图像x所属的图像集的分布。 为此,我们使用一对鉴别器D来区分输入对是真对还是伪对。 我们表达身份损失:
其中x和y是两个网络输入,xˆ是与x具有相同标识的另一个图像,即 Ix = Ixˆ。 xpdata(x)和ypdata(y)表示数据分布。 这种身份损失包括G和D,我们应用对抗训练来实现目标。 G试图生成期望的图像G(x,y)~pdata(x),而D旨在区分真实对(x, xˆ)和假对(x,G(x,y))。 也就是说,D试图最大化LI和G的目的是最小化它。 在对抗训练之后,生成输出G(x,y)以具有与输入x相同的身份。 我们网络的整个架构如图2所示。生成的输出作为输入x的一对输入到鉴别器。
我们使用L2损失而不是负对数似然。 现在,LI(G,D)被以下等式代替。 我们训练G以使LI和D最大化以使LI最小化。 取代身份损失LI是
(2)形状损失LS
如果我们仅使用目标LI训练网络,我们得到一个x的标识随机图像,它与y无关。 因此,我们需要设计另一个从第二个输入图像y中提取形状的目标。 由于我们使用的是未标记的多个没有形状标签的图像集,因此很难定义生成的图像 应该是什么。 CycleGAN 和DiscoGAN 使用输入图像必须在经过两次连续翻译后返回到原始输入图像的丢失。 这些作品中的形状保持能力是通过这样的损失来实现的,该损失促使图像返回其原始输入。 由于没有直接训练来保持形状并且可以学习第一平移的逆映射而不能完美地保持形状,因此存在形状保存不足的风险。
我们提出了另一种通过形状损失函数的新颖设计来保持形状的有效方法。 如果两个输入图像具有相同的标识怎么办? 然后,第二输入图像y应该是输出图像G(x,y)。 使用这个想法,我们设计了以下损失来从第二个图像中提取形状。 然后,即使不存在地面实况,网络也可以生成目标图像。 形状损失的简单说明在图3中描述。对于具有相同标识的两个输入图像x和y,即
形状损失 定义为:
由于这是简单的L1损失,如果我们仅使用LS1(G),则生成器的学习可以仅关注于获得第二图像。 因此,我们增加了两个具有与上述相同概念的损耗,但尝试从发生器的第一个输入获取信息。 在人的情况下,让我们说人x和y分别属于集A和B. 如果G(x,y)按我们想要的那样出现,那么G(x,y)将是x的数字冒充y。 那么如果生成的图像再次通过y发生了什么呢? 如果G(x,y)与y一起构成y,那么G(x,y)应该出来,因为它已经具有y的姿势。 如果y重新组合G(x,y)的姿势,那么y应该出来。 这有助于学习形状,同时防止发生器偏向输入的一侧。 对于以下损失,两个输入不需要具有相同的标识。 对于具有不同身份的两个输入图像x和y,即, ,额外的形状损失定义为:
必须最小化形状损失以实现我们的发电机产生第二输入形状的目标。 然后,整体形状损失LS变为这些LS1,LS2a和LS2b的总和:
因此,我们使用的整体损失函数是:
其中α和β是超参数。
(3)训练算法
(4)Min-Patch训练
GAN中的原始鉴别器产生单个输出,一次观察整个图像。 最近,PatchGAN 已被用于关注图像的每个部分斑块。 PatchGAN生成输出特征映射D(x)∈Rh×w而不是单个输出值,并使用该特征映射中所有输出值的总和。 它通过全面观察所有部分补丁来区分图像。 然而,当人类观察图像时,我们并不关注它的每一小部分。 即使大多数部分看起来很逼真,如果图像的一小部分很奇怪,我们觉得图像是假的。 因此,当我们生成逼真的图像时,最好将注意力集中在图像中最奇怪的部分。
建议使用Min-Patch训练,当我们训练G时,它会在PatchGAN鉴别器的最后部分使用最小池。 G在通过最小池之后尝试最大化目标LI,因为较低的鉴别器输出意味着伪补丁。 因此,生成器G试图在最小池化之后最大化D值,从而将另一个最大最小问题解决为内循环。 Min-Patch训练如图4所示.PatchGAN训练查看输入图像的每个部分(图中8×8); 然而,Min-Patch训练只关注训练G时假图像中最重要的部分(图中的2×2)。它有助于生成逼真的图像,因为G训练有效,因此看起来奇怪的补丁较少。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Fusion Gan(融合生成对抗网络)中将一个人的身份和另一个人的形状融合形成新图像 - Python技术站