DrugAI 3天前
以下文章来源于深度奇点 ,作者AITA|于志勇
深度奇点DeepSingularity致力于将AI与生物、医疗、城市、海洋等各个领域结合,找到深度奇点。
摘要
在传统无监督的图像到图像转换任务中,训练完成后的翻译框架将舍弃鉴别器。本次分享的这篇文章通过重用鉴别器对目标域的图像进行编码,提出了一种新的鉴别器角色。这个被称为NICE-GAN的体系结构展示了它的两种先进性:第一,它更紧凑,不需要独立的编码组件;第二,这种插入式编码器直接由对抗损失训练,在使用多尺度鉴别器的情况下将更具信息量和更有效的训练。NICE-GAN最主要的问题是训练时期的耦合,为了解决这个问题,本文提出了一种解耦的训练策略。通过这种策略,编码器只在最大化对抗损失时训练,其他情况下保持冻结。本文在四个流行的基准上进行了大量的实验,证明了该方法在FID、KID和人类偏好方面的优越性能。代码在https://github.com/alpc91/NICE-GAN-pytorch中开源。
1 引言
回顾当前取得广泛成功的翻译框架,大多数都由三个部分组成:将输入图像嵌入到低维隐藏空间中的编码器、用于转换翻译的生成器、以及进行域对齐的鉴别器。虽然这种做法已经成为了标准,但不免还是令人会有疑问:在当前的翻译框架中,是否有可能考虑每个组件的知识?更重要的是,是否有方法来更改当前的标准做法?仔细检查编码器和鉴别器之间的关系,就会发现,答案是肯定的。基本上,鉴别器是要区分源域的转换图像和目标域的真实图像。为此,鉴别器应在对输入图像进行某种语义编码之前,才能分辨出哪些图像是正确的,哪些是错误的。换句话说,这意味着鉴别器的两个作用:编码和分类。基于上述动机,本文提出将鉴别器重用于编码模块。鉴别器中一定数量的层作为目标域的编码器,如图1所示。这种重用具有两个优点:
1.实现了更紧凑的体系结构。由于编码器现在已成为鉴别器的一部分,因此不再需要编码的独立组件。此外,与现有的方法在训练后放弃了鉴别器不同,它的编码部分仍保留在框架中以供推断。
2.编码器得到了更有效的训练。编码器的传统训练是通过间接传播来自生成器的梯度进行的。在这里,通过将其插入鉴别器,可以直接通过鉴别损失来训练编码器。此外,鉴别器现在已经具有多尺度的形式表达能力;如果应用多尺度鉴别器,编码器将自然地继承表达能力。
剩下的主要问题是如何进行训练。对于传统方法,编码器与生成器一起进行编码,以使GAN损失最小化,而对鉴别器进行单独训练以使最大化。在NICE-GAN框架中,编码器和鉴别器会重叠,如果应用传统的训练设置,它将让模型变得不稳定:编码器作为翻译的一部分要进行最小化训练,同时它属于鉴别器并且也要进行最大化训练。为了消除这种不一致,本文提出了新的训练范式。具体而言,编码器的训练仅与鉴别器相关,而与生成器无关。此外,使编码器脱离翻译训练的束缚后,将使编码器朝着除翻译之外的更通用的编码目的发展,从而实现更大的通用性。
2 模型架构
图1:NICE-GAN流程图。这里仅显示一个从狗到猫的翻译流
No Independent Component for Encoding (NICE)。如图1所示,NICE-GAN重用鉴别器进行编码,为训练提供了效率和有效性方面的优势。形式上,将鉴别器Dy分为编码部分Ey和分类部分Cy。此外,新形式的编码器Ex和Ey存在于翻译和鉴别的训练循环中,因此难以训练。NICE-GAN中提出了一个解耦的训练方式。多尺度鉴别器Dx和Dy。由于Dy和Dx类似,因此此处仅讨论Dx。将不同比例的鉴别器应用于不同尺寸的图像(通过降采样从原始图像获得小尺寸图像)。本文考虑了一种更有效的方法,即将单个输入的不同层中的特征图视为不同比例的图像,然后将它们分别输入到具有相应输入大小的分类器中进行区分。鉴别器Dx包含两部分:编码器 Ex和分类器Cx。为了实现多尺度处理,分类器Cx进一步分为三个子分类:Cx0用于局部尺度(10×10接收域),Cx1中间尺度(70×70接收域)和Cx2全局尺度(286×286接收域)。Cx0直接连接到Ex的输出。然后,在Ex上进行下采样卷积层以提供较小比例的特征图,这些特征图被链接到两个分支:一个链接到Cx1,另一个通过卷积层进一步下采样,然后是C2x。对于单个输入图像,所有Cx0、Cx1和Cx2都经过训练以预测图像是否为假。图1中也展示出了这种多尺度鉴别器。除多尺度设计外,NICE-GAN还引入了注意力机制,以进一步促进特征在鉴别器中的传播。首先学习注意力向量,该向量计算编码器产生的特征图的重要性。然后,计算得到的关注特征将被用于以后的分类。除此之外,本文还加入了残差连接。通过这种修改,所提方法变得更加灵活,可以调整不同功能图的重要性,从而提高训练的有效性。生成器Gx→y和Gy→x。Gx→y和Gy→x都由六个残差块和两个用于上采样的亚像素卷积层组成,并且使用了AdaLIN light模块。解耦训练。训练过程中有三种损失:对抗损失、重建损失和循环一致性损失。对抗性损失是为了进行域转移,而重建损失和循环一致性损失都是针对不可识别性问题。由于编码器属于判别器Dx的一部分,而不是生成器的输入,所以如果采用常规的对抗训练,就会产生不一致性。为了克服这一缺陷,文章提出将编码器的训练与生成器的训练解耦。
1.生成对抗损失:首先,利用最小平方对抗损失,以获得更稳定的训练和更高的生成质量。其中,Ex固定,Ey在对抗损失最大化时接受训练。当最小化生成对抗损失时,两者都是固定的。
2.循环一致性损失:Cycle-GAN和Disco-GAN首先提出了循环一致性损失,这是为了迫使生成器彼此反向生成对方域的图像。
3.重建损失:与基于域相似性的损失函数不同,本文在两个域隐向量空间一致的假设基础上提出新的损失函数。真实样本经过编码器后得到的隐向量,会作为目标域生成器的输入,这种情况下,重建损失有助于两个域生成器生成图像在隐向量空间保持一致性。
3 实验结果
图2:生成输出的示例
表1:不同算法的FID和KID×100。越低越好。所有的方法都训练到100K次迭代。NICE-GAN*是生成器网络仅由四个残差块组成的版本
表2:参数总数和网络模块流量。NICE-GAN*是生成器网络仅由四个残差块组成的版本
表1显示,本文方法通常实现最低的FID或者KID,这表明NICE框架在不同任务上的翻译能力很有前途。相比之下,其他方法只对特定的数据集进行处理,例如,UGATIT、UNIT和MUNIT成功地转换了对象的语义(如动物脸),而CycleGAN则擅长修改底层特征(如颜色和纹理)。UGATIT与NICE-GAN具有大致相同的结构(多尺度鉴别器和产生器),它与NICE-GAN的区别主要在于其独立的编码方式。表2表明所提出的架构通过重用鉴别器进行编码更加紧凑。为了进一步观察视觉差异,图2描述了测试集中不同方法的翻译图像。
4 总结
本文主要介绍了NICE-GAN,这是一种用于无监督的图像到图像翻译的新颖框架。它重用鉴别器浅层网络作为编码器,并提出了新的训练方式。实验评估表明,NICE-GAN比其他方法具有更好的性能。