BeautyGlow论文的一点笔记

Life isn’t perfect, but your makeup can be.

这几天帮朋友看个BeautyGlow的代码。感觉挺有意思,就把论文看了下,里面定义的损失函数蛮丰富的,也许有机会可以参考一下,所以这里记录一下。

fig1

该工作提出的模型框架如图所示。想要的目标就是把参考图像中脸上的妆容迁移到目标图像中的脸上。因此输入是一个有妆容的参考图像和一个没有妆容的目标图像,输出是有妆容的目标图像(生成的)。中间的思路就是用glow模型(生成式流模型)得到各自的隐空间latent vectors;然后分别将隐空间分解为脸部facial特征和妆容makeup特征;再将参考图像的妆容makeup特征和目标图像的脸部facial特征相加得到有妆容的目标图像的隐空间;最后再用glow模型反变换为有妆容的RGB目标图像。

思路很合理,但是仔细一想,其实最重要的就是如何将脸部特征和妆容特征分解开来,以及如何将脸部特征和妆容特征进行组合?
作者这里最基本的假设就是隐空间只由facial和makeup特征加法组成。因此这里对隐空间$L$用了一个线性映射的权重$W$来变换得到facial特征$F$,那么剩下的部分就是makeup特征$M$,也就是:

后面组合的思路也和分解一样,直接相加即可。

那么问题来了,权重$W$如何得到?很简单的思路就是,送到网络里去学习啊。那么这就牵扯到优化目标,应该关注、优化什么才能让权重$W$将隐空间分为facial和makeup特征,继而让$L_{s}^{Y}$更好,最终得到有妆容的RGB目标图像。很显然,我们可以直接优化有妆容的RGB目标图像。但是事实上,一旦前面的glow模型确定,我们的glow反变换也就确定了。因此,我们只需要优化$L_{s}^{Y}$。但是仔细一想,这东西没有监督,所以我们只能通过对自身特征的约束来优化$W$去验证(或者说满足)假设。所以下面来介绍这些约束,也就是文中的目标函数:

  1. 针对$L_{s}^{Y}$的循环一致性损失。得到的目标是有妆容的,那么我们可以再对$L_{s}^{Y}$用权重$W$提取facial特征和makeup特征。理想情况,这两个特征应该是分别与$F_{s}^{X}$和$M_{r}^{Y}$一致的。

  2. 针对$F_{s}^{X}$的感知损失。因为目标图像一开始是没有妆容的,所以理想情况,$F_{s}^{X}$不就是$L_{s}^{X}$本身么?

  3. 针对$M_{r}^{Y}$的妆容损失。我们把有妆容图像和无妆容图像的集合看成是两个域。那么整体上,两个域之间其实是一个包含被包含的关系,只差妆容这一部分。因此,我们可以用有妆容图像的隐空间集合的均值和无妆容图像的隐空间集合的均值量化表示这两个域。两个域的差来近似表示每一个有妆容图像的makeup特征。

  4. 针对$F_{r}^{Y}$和$L_{s}^{Y}$的域内损失。我们优化的目标无非就是$L_{s}^{Y}$,但是它是$F_{s}^{X}$以及$M_{r}^{Y}两个部分的和,而这两个部分又有各自的补。因此,还是可以从域这个角度下手,毕竟域内关系和域间关系是老生常谈的问题。而这两个域又是包含被包含的关系,所以很好定义。对于有妆容图像,去掉妆容其实就处于没有妆容的域;对于没有妆容图像,加上妆容其实就处于有妆容的域。

  5. 针对$F_{r}^{Y}$和$L_{s}^{Y}$的域间损失。既然希望域内损失更小,就希望域间损失更大。这里用了个相似度度量

    $\otimes$表示逐元素乘;$|\cdot|$表示向量的模。(这其实就是余弦相似度度量;两向量从0到180度间变化,余弦值从1到-1越来越小;这样两个域就越远。正好对应下面定义的损失中的常数$1$)

值得注意的是,论文中这里的几个损失的加权和的权重值如下,$\lambda_{inter}$值相比十分巨大。也许不是因为只有$inter$损失有用,而且度量标准不一样。
$\lambda_{p} = 0.01,\lambda_{cyc} = 0.001,\lambda_{m} = 0.1,\lambda_{intra} = 0.1,\lambda_{inter} = 1000$

写在最后

论文中定义的几个损失的确蛮有意思的,无监督方法里对多个特征进行约束,尤其含有域关系的约束。
另外,文中introduction中还提到MSPM,单model多style怎么做。即:一个模型可以transfer多个styles,通过调整instance Normalization layers。有机会再看。

参考

BeautyGlow原文地址
Glow文章地址
RealNVP文章地址
OpenAI对Glow模型的讲解
细水长flow之RealNVP与Glow:流模型的传承与升华
细水长flow之NICE:流模型的基本概念与实现
CSDN论文笔记(五)DENSITY ESTIMATION USING REAL NVP
CSDN 论文阅读笔记 Glow:Generative Flow with Invertible 1*1 Convolutions