这篇论文没有找到开源代码,一些概念论文汇总也说的比较模糊。所以只能将自己的理解粘贴出来。
Makeup Like a Superstar: Deep Localized Makeup Transfer Network
摘要
文中试验主要针对于粉底,嘴唇,眼影。不同的妆容需要不同的规则。不同的化妆品应用道不同的部位,还可以调整妆容的轻重度。
简介
化妆过程分成两步,第一个是妆容推荐,第二个是妆容迁移。不同的妆容有不同的迁移规则。 比如眼影重要的特性是保持形状。不同的妆容对应不同的部位。
妆容完成后需要看起来较为自然。
模型简介
- 化妆前图片与相关脸部图片输入语义分割模型,生成两个分割图像。语义分割模型使用全部卷积网络。突出妆容相关的面部分布。将图片对的区域对应起来。
- 三种不同化妆品进行妆容迁移。眼影主要关注与形态,面膜主要关注与纹理,眼影主要通过替换相关深度特征,而面膜主要正则化feature map。
- 通过调整每个化妆品的权重。可以调整妆容的程度。
模型使用的合成是基于局部完成的。
基于分割图的两种图片对齐。妆容转化与全局平滑正则化相结合。
妆容推荐
主要使用相似脸形检索功能,推荐出最相似的妆容脸。
面部局部和妆容对应
为了进行妆容迁移,需要局部区域与妆容局部区域相对应。区域的对应主要是通过语义分割图展示出来的,比如嘴唇和唇彩。唯一不同之处在于眼影,因为在化妆前的图片是不包括眼影区域的。 并且眼睛的形状也不太相同。所以需要转化妆区域眼影的shape。
面部分割
面部分割模型使用的是全卷积网络,使用化妆前以及妆容照进行训练,有11个类别。使用加权交叉熵来作为loss函数。
像素级别的交叉熵。通过最大化验证集合尚的F1 score来设置权重。
测试的时候,将点p以及水平镜像的f(p)的置信度取平均。
由于化妆前眼睛不存在眼影,所以需要通过纺射变换生成眼影。
做纺射变换,首先需要8个landmarks以及眉毛区域。之后将shadows 通过TPS差值变换来进行变换。
妆容迁移
眼影转换,定义sr是相关图像眼影的mask,sb是没有化妆眼影的mask。
那么眼影迁移就是将sb的深度特征用sr替代(文中使用的第一层卷积的feature map)。
其中loss function 如下
其中
人脸分割网络conv1-1的表达,A和R表示化妆后的脸以及原始的妆容脸。
Sb’ 和sr’是经过将sb map到sr上产生的,从数据层到con1_1层,通过卷积特征masking,其中A(Sb’)以及R(Sr’)是眼影区域对于mask sb’ 以及 sr’.
眼影转化在图5中展示出来,包括颜色和形状。
唇彩和面膜转化
需要转化颜色和纹理
其中loss如下
其中L表示选取的层,包含conv1-1, conv2-1, conv3-1, conv4-1, conv5-1.
Gram矩阵
其中Nl 表示channel 数量
其中第l层中第i和第j个feature map向量化后的结果
结构保持的loss定义像眼影类似。不同之处每一个元素都是sb和sr都是1.
其中几个lambda 是调节妆容的权重,可以调整调整这些权重能够改变妆容。
可以调整除了 lambda e之外的lambda权重来控制妆容。
试验的时候权重控制是[10,40,500,100]