【seeprettyface.com】研究笔记:定制人脸生成

原始博客地址:www.seeprettyface.com/research_notes.html#step5
效果演示:www.seeprettyface.com/order_my_face.html
————————————————————————————————

定制人脸生成

  这一部分会介绍基于StyleGAN,进一步地做定制人脸生成使用的方法。目前采用过的方法有三种,第一种是从源头上通过控制生成码Z的分布范围,从而控制生成的人脸类型,这种方法能控制性别、人种、年龄等粗略类型;第二种方法是在图片生成器的内部,通过特定维度上特征的替换,将引入的目标(模板)人脸的精细风格赋予在生成人脸上,这种方法能控制白皮肤、卷发等精细类型;第三种方法与前两种思路完全不同,复杂一些但更通用,需要修改StyleGAN的架构,将InfoGAN与StyleGAN结合为Info-StyleGAN,从而实现仅用一个模型就能控制生成图片的类型。训练出稳定的生成器之后将会开源实验代码。

· 方法一 从源头控制生成图片


  定制人脸生成需要3个神经网络,分别是Z码生成器,图片生成器,和图片分类器。它的主要思想是,针对我们想要的特定类型的图片,首先训练出一个对应的图片分类器出来,然后固定住图片生成器与图片分类器,只训练Z码生成器(C是随机向量),从而找到Z码的范围,使得通过该Z码生成的图片,能满足图片分类器的要求,即:找到z的分布使得对应y的得分值最高。
  在这里插入图片描述
  在实际模型搭建中,Z码生成器是一个64维到128维的简单全连接网络,图片生成器取用StyleGAN里面的模型,图片分类器是一个已训练好的类型分类器(譬如男/女分类器等,用CNN就能达到比较好的效果)。损失函数方面有两个组成部分,一部分是(找到z)让y的得分值越高越好,另一部分是让z的熵越大越好(即z有多样性)。由于实际的训练只需训练一个全连接层(Z码生成器),所以epoch数无需太高。
  最后,每对应一个不同的图片分类器,就会训练出一个对应的Z码生成器。在人脸定制中演示的模型,就是准备了多种Z码生成器,和一个图片生成器,然后根据用户的选择指定对应的Z码生成器,从而实现定制人脸生成。

· 方法一优化 取消Z码生成器,改为微调图片生成器

  在后续的实验中发现,对于某些分类器来说,训练出的Z码生成器是不太稳定的。举一个例子,如果希望指定生成黑种人或者白种人脸,上述方法可以实现,但是如果用同样的方法训练生成黄种人脸,就很难稳定生成。造成这种现象的原因是,黄种人界于白、黑种人之间,它的特点标志不清晰,因此Z码生成器很难找到一个Z码的区域,能够稳定生成黄种人脸。为了改善这一情况,我们可以考虑取消Z码生成器,改为微调图片生成器。
  在这里插入图片描述
  如上图所示,首先用训练好的图片分类器将原始数据集中的目标图片挑选出来(譬如黄种人脸),制作成新的训练集。接下来,在新的训练集下训练图片生成器,其初始化参数为StyleGAN的预训练模型参数,训练状态建议回复至第10000个kimg处(见代码),因为此时已经进入了1024*1024分辨率的微调阶段,然后持续训练即可。接下来展示一段在黄种人脸生成器的训练过程中的人脸迁移情况。
  在这里插入图片描述
  如上图所示,从左至右为同一生成码在训练过程中生成图片的变化。可以看出,随着训练的进行,原本对应生成非黄种人的生成码,逐渐变成了生成黄种人的样子(代码已开源)。

· 方法二 从生成过程中控制生成图片


  不过上述方法,只能从大体上控制生成图片的类型,因为图片分类器的制作成本通常比较高(需要大量含标签数据),所以图片分类器的划分角度一般较为宽泛(譬如男/女,老/少,黑/白等),不宜过细。所以,如果我们希望定制的人脸类型能更精细的话,只能考虑追求一些更简便的处理,不妨关注一下StyleGAN生成器的内部结构。
  在这里插入图片描述
  可以看出,其实真正决定StyleGAN生成图片类型的,在于控制生成网络的18个特征码(它们分别控制的特征类型已在图中标出)。于是,现在我们希望能更精细控制生成图片的类型,就可以考虑用已有图片的特征码,对其进行替换,从而让其具有被替换图片的特定特征。
  在这里插入图片描述
  譬如在上面这个例子中,用模板照片的5,6,7,8维特征码对原始的生成图片进行替换,就会得到一张新的生成图片,其具有模板人脸的精细特征,例如黄皮肤、黑头发、黑眼睛等等。而如果选择不同维度的特征码进行替换,新图片得到的特征也会不一样。不过在我的实验中,一般建议替换5,6,7,8维,因为替换更低的维度会让生成效果不稳定,而替换更高的维度会让生成效果不明显。最终,多做几次尝试就能找到合适的模板以及合适的维度替换方案,比如在人脸定制中展示的小男孩样例,就是用这样的方法生成的。
在这里插入图片描述

· 方法三 借助InfoGAN的思想修改StyleGAN的架构


  前面两种方法虽然能实现定制生成,但是由于每一种分类都是单独一个模型,这不利于进一步扩展。我们希望能构造一个通用模型,它能够实现所有定制化的需求。因此,我们借助InfoGAN的思想,将Info信息引入StyleGAN的生成器中,构造出新的具有语义限制的生成器。
  在这里插入图片描述
  如上图所示,新的生成器输入info向量-c和噪音向量-z,其中c控制人脸类型,而z决定人脸样貌。生成图片X同时被传给判别器和分类器,其中判别器的作用是保证生成图片的清晰与逼真度,分类器的作用是保证生成图片的类别符合向量c的控制——因为它从生成图片中提取出一个新的向量,这个向量要与c尽可能一致,而c包含的信息仅有图像类别,所以只有生成图片也符合图像类别的情况下,提取出的向量才能与c一致,更详细的证明请参阅InfoGAN。最后分类器与判别器共用大部分参数,只保留最后几层参数不一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章