本
文
摘
要
Few-shot Knowledge Transfer for Fine-grained Cartoon Face Generation
想必大家对抖音之前推出的一款动漫特效滤镜 “变身漫画” 还印象深刻,这款滤镜能够打破次元壁,将你瞬间转变为二次元画风,让每个用户都能拥有一个独一无二的二次元分身。著名电竞选手PDD秒变二次元美少年阔爱萌萌哒萌萌哒本文作者来自字节跳动 AI Lab,第一作者同时隶属于北京大学。作者提出了一种小样本知识迁移方法 (few-shot knowledge transfer) 来用于生成细粒度 (fine-grained) 的卡通人脸。论文地址:
https://arxiv.org/pdf/2007.13332.pdfarxiv.org/pdf/2007.13332.pdf从一张真实人脸照片生成其对应的卡通人脸可以看做是一个图片到图片迁移 (Image-to-image translation) 的问题,即需要学习一个函数将真实人脸映射到卡通人脸。当前有部分工作研究了这个问题并取得了不错的结果,但这些方法没有考虑到 不同群体之间的差异性,如下图一所示,女性的卡通脸通常有着大眼睛留着长睫毛,而男性的则没有睫毛, 老人的脸通常有皱纹,而孩子则没有。
Cartoon Faces of Various Groups因此,为了获得更好的性能表现,在收集训练样本和设计模型时就很有必要考虑这些差异。 对于数据收集,真实人脸图像很容易在网络上获取,而特定样式的卡通面孔通常难以收集或设计。 此外,每个人群类别可用的卡通脸数量也不平衡, 与其他群体相比,年轻女性的卡通面孔一般更为常见。
为了解决这些问题,作者提出了一个细粒度卡通人脸生成方法,其假设尽管每个群体有着其特定外表,但仍然具有相同的卡通风格。因此可以 首先基于普通群体 (女性) 训练一个图像迁移模型,然后仅以少量样本将知识迁移到其他群体。作者为此设计了一个多分支图像迁移网络来用于细粒度的卡通人脸生成,主分支学习普通群体的图像迁移并维护共享特征空间的分布,其他分支学习每个稀有群体的特定特征。通过这种方式学习一个小样本图像迁移模型。作者的贡献在以下三点:
文章提出了两阶段训练策略和多分支图像迁移模型,来用于小样本的细粒度卡通人脸生成;作者收集了用于完成此类精细图像翻译任务的卡通人脸数据集,该数据集包含小姑娘、小伙子、小朋友和老人四类人群;文章方法针对特定人群仅提供了很少的样本就取得了良好的表现。Method
文章的目标是训练一个生成器 TT,学习两个域的多个类之间的映射。作者将真实人脸和卡通人脸照片分别表示为域 X\mathcal{X} 和 Y\mathcal{Y},这里两个域之间不需要配对的数据。同时作者将人类分为特定群体,即小姑娘、小伙子、小朋友和老人,分别表示为 ,X={Xi},Y={Yi},i=0,1,2,3\mathcal{X} = \{\mathcal{X}_i\}, \mathcal{Y} = \{\mathcal{Y}_i\},i=0,1,2,3,在这些群体中,group 0 即小姑娘群体包含足够的训练样本,其他类别只有很少的图像。所有这些群体的卡通脸都具有相同的风格,但细节不同。作者首先为 ,{X0,Y0}\{\mathcal{X}_0,\mathcal{Y}_0\} 训练一个网络 T0T_0,然后将其迁移到其他类别 {Xi,Yi},i=1,2,3\{\mathcal{X}_i, \mathcal{Y}_i\}, i = 1,2,3。
Basic Model
作者首先使用 ,{X0,Y0}\{\mathcal{X}_0,\mathcal{Y}_0\} 训练图像迁移网络,这里一般无监督方法如 CycleGAN,UNIT 等都可以适用,作者这里使用 GitHub 上的开源项目
minivision-ai/photo2cartoongithub.com/minivision-ai/photo2cartoon其基于 U-GAT-IT 修改而来。网络架构如下图所示,是一个 Encoder-Decoder 结构,由几个上采样/下采样块、沙漏块、残差块组成。生成器中使用了一个基于 Class Activation Map (CAM) 的注意力模块来通过辅助分类器指导模型专注于更重要的区域,该分类器有助于区分源域和目标域。在鉴别器中,另一个辅助分类器用于帮助区分真实图像和伪造图像,具体架构和代码可以参考 GitHub 仓库。
Base ModelKnowledge Transfer for Few-shot Learning
在为 group 0 训练好生成器之后,接下来集中于如何迁移知识,仅用很少的样本来学习其他群体的映射函数。作者将这个问题看作不同群体之间的域自适应 (domain adaptation) 任务。
整个方法的流程如下图所示,基于为 group 0 训练的生成器,首先为其他每个群体分别增加一个群体相关 (group-specific) 的分支,这些新的分支初始化为基本模型预训练的参数。作者将生成器中群体相关的编码器层和解码器层分别表示为 Es→tiE_{s \rightarrow t}^i 和 Gs→tiG_{s \rightarrow t}^i,群体共享 (group-shared) 的编码器层和解码器层分别表示为 Es→tSE_{s \rightarrow t}^S 和 Gs→tSG_{s \rightarrow t}^S,这里 ss 和 tt 分别为源域和目标域,都可以是真实人脸或卡通人脸。则对于群体 ii 中的一张图片 xx,从 ss 到 tt 的映射函数可以定义为
Ts→ti=Gs→ti(Gs→tS(Es→tS(Es→ti(x)))),i=0,1,2,3.T_{s \rightarrow t}^{i} = G_{s \rightarrow t}^{i}\left(G_{s \rightarrow t}^{S}\left(E_{s \rightarrow t}^{S}\left(E_{s \rightarrow t}^{i}(x)\right)\right)\right), i=0,1,2,3. \\
对于这里的小样本多群体图片迁移任务,Es→tSE_{s \rightarrow t}^S 和 Gs→tSG_{s \rightarrow t}^S 使得所有群体有着相同的结构和风格,由于 group 0 包含大量的训练数据,作者这里假设基于此数据训练的基本模型保留了共享特征的分布。其他群体中的少量样本用于更新其对应群体的相应参数。
假设 xx 表示一个训练样本,则四个群体的迁移可以分别表示为
Ts→t0=Gs→t0(Gs→tS(Es→tS(Es→t0(x))))Ts→t1=Gs→t1(Gs→tS¯(Es→tS¯(Es→t1(x))))Ts→t2=Gs→t2(Gs→tS¯(Es→tS¯(Es→t2(x))))Ts→t3=Gs→t3(Gs→tS¯(Es→tS¯(Es→t3(x))))\begin{aligned} T_{s \rightarrow t}^{0} &=G_{s \rightarrow t}^{0}\left(G_{s \rightarrow t}^{S}\left(E_{s \rightarrow t}^{S}\left(E_{s \rightarrow t}^{0}(x)\right)\right)\right) \\ T_{s \rightarrow t}^{1} &=G_{s \rightarrow t}^{1}\left(\overline{G_{s \rightarrow t}^{S}}\left(\overline{E_{s \rightarrow t}^{S}}\left(E_{s \rightarrow t}^{1}(x)\right)\right)\right) \\ T_{s \rightarrow t}^{2} &=G_{s \rightarrow t}^{2}\left(\overline{G_{s \rightarrow t}^{S}}\left(\overline{E_{s \rightarrow t}^{S}}\left(E_{s \rightarrow t}^{2}(x)\right)\right)\right) \\ T_{s \rightarrow t}^{3} &=G_{s \rightarrow t}^{3}\left(\overline{G_{s \rightarrow t}^{S}}\left(\overline{E_{s \rightarrow t}^{S}}\left(E_{s \rightarrow t}^{3}(x)\right)\right)\right) \end{aligned} \\
这里带上划线的表示该结构在训练时权值固定,即在训练小样本群体时共享结构中的参数在反向传播时不更新。
The Whole PipelineLoss Function
损失函数包含 Adversarial loss,Cycle loss,Identity loss,CAM loss,Face ID loss,Group classification loss,具体公式参见原始论文。
Experiments
Datasets
作者的数据集来自已有数据和互联网,并聘请专业画家为小样本群体绘制了卡通人脸。对于小姑娘,有1000张来自 CelebA 的真实人脸照片,200 张来自开源项目[2]的卡通人脸照片,对于其他群体,作者收集了75张小伙子照片、50张小朋友照片和50张老年人照片,并让画家画了15张小伙子卡通照片,10张小朋友和10张老年人卡通照片。
Comparisons
Comparisons with Simple Baselines
作者将文章方法和一些 baseline 进行了比较,结果如下图所示。
Compared with several Simple BaselinesBasic Model:基本模型在小姑娘数据集上训练的模型,结果如图4第二列所示,对于小姑娘图片结果较好,但是对于其他群体结果很差,得到的小伙子小朋友卡通照都有着长睫毛。
Baseline1:将所有数据混合在一起训练基本模型,得到的结果如图4第3列所示,虽然结果相对于基本模型有较大改善,但其他类别的结果仍然偏女性化。
Baseline2:将其他群体的数据混合在一起,对基本模型进行微调,结果如图4第4列所示,小伙子和小朋友的结果有了很大的改善,但小姑娘的结果不行了,网络似乎学会了新群体的迁移,忘记学习的之前群体的知识了。
Baseline3:对每个群体分别微调基本模型,为了简单作者这里仅对小伙子数据进行了微调,结果如下图5第3行所示,生成的结果不够稳定,作者相信这是因为训练数据太少,使得网络过拟合导致的。而文章方法的结果与输入图片更加匹配。
Compared with Baseline3Comparisons on Selective Backpropagation
前面讲到对于普通群体更新整个网络,但在训练小样本群体时只更新群体相关的参数,即进行选择性反向传播。作者测试了在训练时去除掉选择性反向传播,即在训练小样本数据时也更新群体共享参数。结果如下图6所示,得到的结果会产生很多瑕疵。
Comparisons on Selective BackpropagationResults
下面展示了文章方法在四个群体中的卡通画效果,总体来说效果还是不错的。
Results of Young WomenResults of Young WomenResults of KidsResults of the Elderly