赋能Delta解决Multi-modal生成的多样性问题

2021-03-16 21:33 601 阅读 ID:297
量子位
量子位

    Multi-modal问题在生成任务中是个普遍存在的问题。这里的multi-modal不是指多模态(图像、视频、音频、文本等),而是指生成的结果不是唯一确定的,而是有多种可能性。比如图像填充任务(image inpainting),缺失区域存在多种可能性,所以补全的结果也会有多种可能性。再比如图像到图像的翻译(image-to-image translation),把白天图片翻译成夜间图片,光照等因素存在很大的不确定性,因此翻译后的图片也会有多种可能性。

    为了在生成任务中得到多种结果,最常用的做法是给神经网络输入服从某种先验分布(一般是高斯分布或者均匀分布)的随机向量,通过采样随机向量得到不同的生成结果。可是神经网络往往会忽略输入的随机向量,只能够生成单一的结果,这种现象叫做模式塌缩(mode collapse)。目前,在条件生成任务(输入是源样本和随机向量,输出是和源样本对应的目标样本)中,解决模式塌缩最常见的方法有两种,第一种是模式寻找损失(mode seeking loss), 加一个损失函数使得变化随机向量产生的结果差异性较大,但是该损失函数的引入经常会造成生成网络的训练困难。后续也出现了很多该损失的变种,但是核心思想大同小异,并且会涉及到时间成本和生成多样性的tradeoff。有些变种计算成本非常高,但只能增加一点多样性,并不划算。第二种是建立给定输入情况下随机向量和输出结果之间的双射(bijection),也就是说随机向量和输出结果之间存在一一对应的关系。换言之,我们需要把随机向量和输入输出之间的信息差绑定起来。比如下图,左边是指随机向量z和输入X结合生成\hat{Y}, 采样不同的z可以得到不同的生成结果\hat{Y}, 可是容易发生模式探索坍缩,只能得到少量多样的结果。右边试图把随机向量和输入输出之间的信息差绑定,具体来说,计算X和Y之间的信息差z, 让z服从某种先验分布,然后z和X结合生成\hat{Y}, 用重构损失迫使\hat{Y}和Y接近。简单来说就是,Y-X+X=Y。在生成阶段,可以从先验分布随机采样z, 得到多样的生成结果。这个想法非常简单,但是非常有效,可以应用到计算机视觉的多种生成任务,下面拿几种不同的计算机视觉任务举例:

    1) 域迁移(image-to-image domain translation):比如输入是白天图片,输出是对应的夜间图片,图片中的物体内容保持不变,变化的是光照等因素,所以我们需要把光照等因素和随机向量绑定起来,具体做法参见 BicycleGAN。 在生成阶段,输入一张白天图片,通过采样随机向量,就可以得到不同光照情况下的夜间图片。在BicycleGAN里面,如下图所示,实际上只基于Y得到z,并没有同时基于X和Y得到z (见红叉删除的部分),原因可能是Y和X对比,语义内容(semantic layout)一致,只有光照上的变化,所以仅从Y也可以推断出需要的光照信息。

    2) 图像填充(image inpainting):输入是不完整的图片,输出是完整的图片,输入和输出之 间的差异是待填充的区域,所以我们需要把待填充区域和随机向量绑定起来,具体做法参见PICNet。在生成阶段,输入一张不完整图片,通过采样随机向量,就可以得到不同的填充结果。如下图所示,X和Y之间的差异就是红框标记的待填充区域,所以直接从待填充区域得到z。

    3) 零样本特征生成问题(zero-shot feature generation):在零样本学习(zero-shot learning)任务中,一种常见的做法是学习从词向量(word vector)到该种类特征之间的映射,从而解决未见种类(unseen category)没有训练样本的问题。在零样本语义分割(zero-shot semantic segmentation)任务中,我们观察到像素级别特征受到上下文信息的影响,可以把像素级别的上下文信息当做输入词向量和输出像素级别特征之间的信息差,所以我们需要把像素级别的上下文信息和随机向量绑定起来,具体做法参见我们的 CaGNet。在生成阶段,输入某个种类的词向量,通过采样随机向量,就可以得到该种类不同上下文环境中的像素级别特征。如下图所示,X是词向量,代表某像素所属的种类,Y是特征图(feature map)上该像素的特征向量,除了种类信息之外,该像素的上下文信息(比如该像素在猫内部所处的位置、猫的姿势、猫周围的物体等等)也会影响该像素的特征向量。所以我们认为X和Y之间的信息差是该像素的上下文信息,根据特征图计算得到该像素的上下文信息z, 和X结合重构该像素的特征向量。

    4)少样本图像生成(few-shot image generation):少样本图像生成任务是指给定一个种类的少量图片,生成该种类的大量真实且多样的图片。在我们的 DeltaGAN 方法中,把同一种类两张图片之间的信息差叫做Delta, 也就是说输入图片加上Delta可以变成同一种类的另一张图片,所以我们需要把同一种类两张图片之间的信息差和随机向量绑定起来,具体做法参见我们的DeltaGAN。在生成阶段,输入单张图片,通过采样随机向量,就可以得到属于同一种类的不同图片。如下图所示,基于属于同一种类的两张图片X和Y, 计算它们之间的差异信息z(包括外观上的差异和姿势上的差异),和图片X结合重构图片Y。

    上面介绍了几个不同的生成任务,都是把输入输出之间的信息差和随机向量绑定起来,缓解模式塌缩问题,从而生成多样的结果。对于不同的生成任务,具体的网络结构和细节设计千差万别,但是总的框架并没有本质区别。给定成对的训练数据(可以是一对一,也可以是一对多),把输入输出之间的信息差映射到一个随机向量,然后把输入和随机向量结合用来重建输出。我们提出的CaGNetDeltaGAN相比较现有方法都有大幅度的提升。对于任何一个multi-modal 的生成任务,只要找到输入输出之间的信息差,套用上述框架,并且针对具体任务做一些个性化的设计和处理,大概率可以做出很好的工作。


    免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
    反馈
    to-top--btn