下载地址:
https://openaccess.thecvf.com/content_CVPR_2020/papers/Gu_Image_Processing_Using_Multi-Code_GAN_Prior_CVPR_2020_paper.pdf
Bibtex引用
@InProceedings{Gu_2020_CVPR,
author = {Gu, Jinjin and Shen, Yujun and Zhou, Bolei},
title = {Image Processing Using Multi-Code GAN Prior},
booktitle = {IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2020}
}
代码github
https://github.com/genforce/mganprior
摘要:
Despite the success of Generative Adversarial Networks (GANs) in image synthesis, applying trained GAN models to real image processing remains challenging. Previous methods typically invert a target image back to the latent space either by back-propagation or by learning an additional encoder. However, the reconstructions from both of the methods are far from ideal. In this work, we propose
a novel approach, called mGANprior, to incorporate the well-trained GANs as effective prior to a variety of image processing tasks. In particular, we employ multiple latent codes to generate multiple feature maps at some intermediate layer of the generator, then compose them with adaptive channel importance to recover the input image. Suchan over-parameterization of the latent space significantly
improves the image reconstruction quality, outperforming existing competitors. The resulting high-fidelity image reconstruction enables the trained GAN models as prior to many real-world applications, such as image colorization, super-resolution, image inpainting, and semantic manipulation. We further analyze the properties of the layer-wise representation learned by GAN models and shed light on what knowledge each layer is capable of representing.
大多数基于GAN的方法需要对于其处理的任务,设计特别的网络结构和损失函数,这限制了这些GAN的泛化能力。然而,这些能生成特别真实图片的GAN(例如StyleGAN,BigGAN)的特征表示被认为包含了数据潜藏的不同层级的语义信息。所以,可以在真实图片处理中,把这些模型作为先验知识,那么可以用很小的努力使得这些模型有更为广泛的应用,但是这样的做法鲜有研究。
这样的研究的难点在于,标准的GAN的设计是输入噪声,从而生成数据,这就很难用这样的模型对真实图片进行后期处理;为此,常用的解决办法是,将一张给定的图片逆向转换回其对应的隐藏编码(latent code),从而让生成器能重构该图片,这样逆向转换获得的编码就能用于近一步的处理,进而能处理图片。逆向图片生成的方法,大致分成两种,一种直接通过最小化重构误差来获得隐藏编码;另一种是训练额外的编码器将图片空间映射到编码空间。这两种方法结果不是特别好,在高分辨率的图片中更是如此。而从逆向获得的编码中还原的图片的质量,直接关系到这样的逆向算法能不能用于图片处理的任务。
如果能从单个隐藏编码还原出任意真实图片的任何细节,那么我们可以获得无与伦比的图片压缩算法,但是这样的算法不存在,所以这说明图片的隐藏编码的表达能力,会因为其维度而受到限制。
基于上述的问题(无法将已有的高质量图片生成的GAN,逆向工程获得给定图片的隐藏编码,并由这样的隐藏编码重构回高质量的原图的算法),本文提出了,使用多个隐藏编码,然后组合这些编码对应的在生成器中生成的中间层的特征图(feature maps),从而提高重构图片的质量,并在没有重新训练和修改的情况下,用于其他图片处理任务。
本文提出的图片到隐藏编码的算法流程如上图所示,本文提出的反转图片到其对应的隐藏编码,实质上属于之前提到的第一类,所以本质上,就是解决一个优化问题,就是找到一个最优的重构,这样的重构是由多个隐藏编码生成的中间层特征的组合(接近线性组合)近一步生成的图片。
公式4中,Xinv就是由隐藏编码生成的图片,这样的Xinv对应的生成公式为:
其中G2表示的是一个GAN的生成器被拆分成两个部分(如图)的后面那部分;Fn实际对应的是GAN生成器拆分的G1分布,在输入为隐藏编码zn时候,获得的特征(第n个Feature),而αn是隐藏编码的一个权重,在文中被称为自适应通道重要性(the adaptive channel importance)。
公式4中的L,也就是重构误差,定义如下
分别对应的是像素级别的平方误差,以及用L1计算的感知loss,其中感知loss来自视觉领域大佬李飞飞团队的文章 Justin Johnson, Alexandre Alahi, and Li Fei-Fei. Perceptual
losses for real-time style transfer and super-resolution. In ECCV, 2016。
这样设计,有两个之前的研究指导:1.逆向生成模型的时候,从图片空间逆向到中间层的特征空间,会比逆向到隐藏空间容易些;2.GAN的生成的不同通道对应生成不同的视觉概念(比如对象,纹理等等);因此文章中使用了隐藏编码到中间层特征的分割来重构图片,并且将不同的特征(通道)赋予了不同的权重。
上述的流程,只是讲述了如何从多个隐藏编码,来重构给定的图片,因此,本文提出的模型其实分两个步骤训练:1.在给定的数据集上,训练GAN,让其接受噪声作为输入,从而生成高质量的图片;2.根据特定的任务,在给定的图片上,通过公式4变换的式子来学习逆向过程,最终逆向重构获得的图片,就是对应任务需要的图片。例如,在图片着色任务中,输入的是灰度图片,重构的图片是彩色的,那么公式4相应的调整如下:
同理,超像素任务和图片修复任务分别修改为如下:
本文设计的实验部分,探索了使用的隐藏编码的数量对于结果影响(未饱和前,隐藏编码越多越好,fig4);使用不同的中间层特征结合对于结果的影响(结合的中间层越高,效果越好,但是其中由GAN学习得到的语义信息的重用性会降低,fig4);每个隐藏编码对于结果产生的作用(隐藏编码对应着图片不同含义的区域,然后组合形成最终的重构图片,fig5)。
文中最后探究了,在一个训练好的GAN网络里,每一层的学习到的知识。通过实验得出,GAN倾向于在底部的那些层(开始的层,底层,接近输入噪声的层)表达抽象的语义信息,然后在顶部(结束的层,末层,接近生成图片的层)的那些层表示内容的详细信息。高级别的信息(抽象的信息,在底层包含的信息)难以被重用;低级别的知识能在更高层中被重用。