【论文解读】CVPR 2021 妆容迁移 论文解读Spatially-invariant Style-codes Controlled Makeup Transfer
【论文解读】CVPR 2021 妆容迁移 论文解读 Spatially-invariant Style-codes Controlled Makeup Transfer
- 摘要
- 方法特点
- 实现方法
- 公式计算
- 局部特征的样式编码器(PSEnc)
- 人脸识别编码器(FIEnc)
- 妆容迁移解码器(MFDec)
- 损失函数
- 运行效果
- 参考文献
- 论文代码
摘要
未对准的图像之间的妆容迁移始终是该领域内的难题之一,以前的方法大多数采用计算图像之间的像素级来克服这一障碍,但该方法不精确且计算量大。在本文中,作者从不同的角度将妆容迁移分解为两步:提取-分配过程。为此,作者提出了一种基于风格的可控GAN模型,该模型由三个部分组成,每个部分分别对应于目标风格编码、人脸特征提取和化妆融合。具体地,特定于部件的样式编码器将参考图像的组件式构图样式编码为中间潜在空间W中的样式代码。样式代码丢弃空间信息,因此对空间错位保持不变。另一方面,样式码嵌入了组件信息,使得能够从多个参考中灵活地进行部分补码编辑,该样式码与源标识特征一起集成到一个补码融合解码器中,以生成最终结果。
方法特点
本文提出的方法通过提取特征部件为样式码的方法,解决了空间错位的问题,取消了额外的计算,同时保持了较好的性能。
实现方法
公式计算
用X={Xn∣Xn∈X}n=1,.....,NX=\{{X_n|X_n \in X\}}_{n=1,.....,N}X={Xn∣Xn∈X}n=1,.....,N和Y={Ym∣Ym∈Y}m=1,.....,MY=\{{Y_m|Y_m \in Y\}}_{m=1,.....,M}Y={Ym∣Ym∈Y}m=1,.....,M分别定义原始图像域(non-makeup image domain)以及参考图像域(makeup image domain)。 给定原始图像xxx以及参考图像yyy。我们的目的就在于找到x^=G(x,y)\widehat{x}=G(x,y)x=G(x,y)和y^=G(y,x)\widehat{y}=G(y,x)y=G(y,x)两者之间的映射函数。其中x^\widehat{x}x代表结合yyy以及原图xxx的人脸特征结合后所得的图片。
下图描述了论文所提出的网络模型(SCGAN),其中包括三个网络组成成分:局部特征编码器(PSEnc)、面部特征编码器(FIEnc)以及一个化妆融合解码器(MFDec),附原文如下:
a Partspecific Style Encoder (PSEnc), a Face Identity Encoder (FIEnc), and a Makeup Fusion Decoder (MFDec).
PSEnc对参考图像(reference image)进行编码,将其特征转换为潜在空间www中的样式代码。论文方法将参考图像特征提取为三个元素(eyes,skin,lip),并将其分别送入PSEnc进行转换。FIEnc负责提取源图像特征(source image),MFDec提出特征融合的具体方法并生成妆容迁移图像。网络的具体细节在下图的右半部分。
局部特征的样式编码器(PSEnc)
在妆容迁移网络中,首先需要考虑妆容特征的提取。简单地通过平均得到特征向量会造成特征之间不可避免的相干纠缠。参考styleGAN,作者提出了一种非线性映射函数将样式代码嵌入到样式空间中。通过这种方式,代码不再受到训练数据分布的限制。同时,网络通过引入先验数据,进一步支持特定部位的妆容迁移,使代码具有更高的可控性。
作者将面部特征提取为三个不同的部分,公式如下:
yi=y⊙Miy_i=y \odot M_iyi=y⊙Mi
其中i={lip,skin,eyes}i=\{lip,skin,eyes\}i={lip,skin,eyes},每个输入分量yiy_iyi被送入具有两个下采样卷积层的特征提取器。在具有平均池化层和 1×1 卷积层的映射模块之后,将每个组件yiy_iyi映射到特定于部分的样式代码ziz_izi。 我们将三个组件的代码连接起来,在ZZZ潜在空间中形成一个完整的初始样式代码zzz。
After a mapping module (Fig. 2 (b)) with an average pooling layer and a 1×1 convolutional layer, we map each component yi to a part-specific stylecode zi. We concatenate the codes of three components and form a complete initial style-code z in Z latent space
z=zlip⊗zskin⊗zeyesz=z^{lip}\otimes z^{skin}\otimes z^{eyes}z=zlip⊗zskin⊗zeyes
该公式代表将三个面部特征进行串联,正是这种串联的方法使得生成图像可以对任意的语义分割进行组合,也就是结合不同参考图像的妆容,获得不同的姿态和面部表情。另外,为了摆脱训练数据的影响,将样式代码z馈送到具有三个全连接层的多层感知机(MLP)中,以送入代码空间w。
w=MLP(z)w=MLP(z)w=MLP(z)
人脸识别编码器(FIEnc)
FIEnc用于提取图像的人脸身份特征。它由两个下采样卷积层和三个resblocks组成。FIEnc的输入是源图像xxx,输出是人脸身份特征FidF_{id}Fid。FIEnc 中的三个 resblocks 都是没有 AdaIN 层的常见残差块。
FIEnc serves for face identity feature extraction. It consists of two downsampling convolutional layers and three resblocks. FIEnc takes the input source image x and extract the face identity features FidF_{id}Fid
Fid=FIEnc(x)F_{id}=FIEnc(x)Fid=FIEnc(x)
妆容迁移解码器(MFDec)
MFDec将参考图像样式代码www与源图像身份特征FidF_{id}Fid逐渐融合,并将参考图像的妆容特征应用到生成图像上。它由三个融合块(fusion blocks)和两个上采样卷积层(upsampling convolutional layer)组成。 我们为 MFDec 中的每个融合块引入了两个 AdaIN 层。 样式代码 w 由可学习的仿射变换专门化,然后传递到每个融合块。 第 j 层 AdaIN 层定义如下:
AdaIN(Fi,wj)=ws,jFj−μ(Fj)α(Fj)+wb,jAdaIN(F_i,w_j)=w_{s,j}\frac{F_j- \mu (F_j)}{\alpha(F_j)}+w_{b,j}AdaIN(Fi,wj)=ws,jα(Fj)Fj−μ(Fj)+wb,j
其中 ws,jw_{s,j}ws,j 和 wb,jw_{b,j}wb,j 是使用相应标量分量的缩放和偏置样式,FjF_jFj 表示输入特征图,μ(·) 和 σ(·) 分别是通道均值和标准偏差。 经过两个上采样卷积层后,我们最终可以得到结果x^\widehat{x}x。
损失函数
由于化妆图像和非化妆图像未配对。因此需要使用类似于CycleGAN的循环训练方法训练网络。引入对抗性损失来指导SCGAN网络以获得更好的效果。作者引入了两个类似于【12】中所述的判别器(Markovian discriminator),分别定义为Dx,DyD_x,D_yDx,Dy。对抗性损失定义如下:
LDGAN=−Ex∼X[logDX(x)]−Ey∼Y[logDY(y)]Ex∼X,y∼Y[log(1−DX(G(y,x)))(1−DY(G(x,y)))]\mathcal{L}_D^{GAN} = -\mathbb{E}_{x \sim X}[logD_X(x)]-\mathbb{E}_{y \sim Y}[logD_Y(y)]\mathbb{E}_{x \sim X,y \sim Y}[log(1-D_X(G(y,x)))(1-D_Y(G(x,y)))]LDGAN=−Ex∼X[logDX(x)]−Ey∼Y[logDY(y)]Ex∼X,y∼Y[log(1−DX(G(y,x)))(1−DY(G(x,y)))]
LDGAN=−Ex∼X,y∼Y[logDX(G(y,x))×DY(G(x,y)))]]\mathcal{L}_D^{GAN}=-\mathbb{E}_{x\sim X,y\sim Y}[logD_X(G(y,x))\times D_Y(G(x,y)))]]LDGAN=−Ex∼X,y∼Y[logDX(G(y,x))×DY(G(x,y)))]]
由于图片来自两个域,两者之间缺少像素级约束。为了保证源图像和输出图像之间的身份特征一致,使用感知损失来维护全局人脸身份。全局感知损失定义如下:
Lglobalvgg=∣∣Fl(G(y,x))−Fl(y)∣∣2+∣∣Fl(G(x,y))−Fl(x)∣∣2\mathcal{L}_{global}^{vgg}=||F_l(G(y,x))-F_l(y)||_2+||F_l(G(x,y))-F_l(x)||_2Lglobalvgg=∣∣Fl(G(y,x))−Fl(y)∣∣2+∣∣Fl(G(x,y))−Fl(x)∣∣2
其中Fl(⋅)F_l(·)Fl(⋅)表示VGG模型第l层的特征,∣∣⋅∣∣2||·||_2∣∣⋅∣∣2是第二范数。除了全局感知损失,还需要引入局部感知损失来进一步保持非转移部分不变,例如牙齿、眉毛等。局部感知损失定义如下:
Llocalvgg=∑i=1I∣∣Fl(G(y,x)⊙My,i)−Fl(y⊙My,i)∣∣2+∑i=1I∣∣Fl(G(x,y)⊙Mx,i)−Fl(x⊙Mx,i)∣∣2\mathcal{L}_{local}^{vgg}=\sum_{i=1}^I||F_l(G(y,x) \odot M_{y,i})-F_l(y\odot M_{y,i})||_2 +\sum_{i=1}^I ||F_l(G(x,y)\odot M_{x,i})-F_l(x\odot M_{x,i})||_2Llocalvgg=i=1∑I∣∣Fl(G(y,x)⊙My,i)−Fl(y⊙My,i)∣∣2+i=1∑I∣∣Fl(G(x,y)⊙Mx,i)−Fl(x⊙Mx,i)∣∣2
其中M表示I={牙齿,头发,眼球,眉毛}中特定部分的掩码,i表示I的索引。此外,对于无监督学习未配对的图片,还需要使用循环一致性损失,定义如下:
Lcyc=∣∣G(G(y,x),y)−y∣∣1+∣∣G(G(x,y),x)−x∣∣1(∣∣⋅∣∣表示第一范数)\mathcal{L}_{cyc}=||G(G(y,x),y)-y||_1+||G(G(x,y),x)-x||_1 \quad \quad (||·||表示第一范数)Lcyc=∣∣G(G(y,x),y)−y∣∣1+∣∣G(G(x,y),x)−x∣∣1(∣∣⋅∣∣表示第一范数)
此外,论文还提出了一种化妆损失函数,它由包括眼睛、嘴巴、皮肤的三个不同面部区域的局部直方图匹配组成,定义如下:
Lmakeup=∣∣G(x,y)−HM(x,y)∣∣2+∣∣G(y,x)−HM(y,x)∣∣2\mathcal{L}_{makeup}=||G(x,y)-HM(x,y)||_2+||G(y,x)-HM(y,x)||_2Lmakeup=∣∣G(x,y)−HM(x,y)∣∣2+∣∣G(y,x)−HM(y,x)∣∣2
其中HM表示直方图匹配,HM(x,y)在具有y的化妆风格的同时保留x的身份特征。
最后,网络的总损失函数可以定义如下:
Ltotal=λGAN(LDGAN+LGGAN)+λcycLcyc+λgLglobalvgg+λlLlocalvgg+λmakeupLmakeup\mathcal{L}_{total}=\lambda_{GAN}(\mathcal{L}_D^{GAN}+\mathcal{L}_G^GAN)+\lambda_{cyc}\mathcal{L}_{cyc}+\lambda_g\mathcal{L}_{global}^{vgg}+\lambda_l\mathcal{L}_{local}^{vgg}+\lambda_{makeup}\mathcal{L}_{makeup}Ltotal=λGAN(LDGAN+LGGAN)+λcycLcyc+λgLglobalvgg+λlLlocalvgg+λmakeupLmakeup
其中λ\lambdaλ是各项损失函数在总损失中所占的权重。
运行效果
SCGAN 在 Makeup Transfer (MT) 数据集上进行了训练和测试,其中包含 3834 张女性图像。 有 1115 个非化妆图像和 2719 个化妆图像,包括姿势、种族等的变化。随机选择了100 张非化妆图像和 250 张化妆图像进行测试。 其余图像用于训练。 在所有实验中,图像都被调整为 256×256。 生成器和两个鉴别器的优化器是 Adam ,其中 β1 = 0.5 和 β2 = 0.999,固定学习率为 0.0002。 批量大小设置为 1,运行效果如下所示:
以及不同网络之间的成像对比。
参考文献
【1】Han Deng, Chu Han, Hongmin cai, Guoqiang Han, Shengfeng He.Spatially-invariant Style-codes Controlled Makeup Transfer.
【2】Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, and Alexei A Efros. Image-to-image translation with conditional adversarial networks. In CVPR, pages 1125–1134, 2017.
论文代码
https://github.com/ makeuptransfer/SCGAN
【论文解读】CVPR 2021 妆容迁移 论文解读Spatially-invariant Style-codes Controlled Makeup Transfer相关推荐
- 【论文解读】CVPR 2021 妆容迁移 论文+ 代码 汇总,美得很美得很!
妆容迁移是指将目标图上的妆容直接迁移到原图上的技术.相比传统贴妆技术,妆容迁移具有极高的自由度,它可以让用户不再局限于设计师设计好的妆容,而是可以自主.任意地从真实模特图中获取妆容,极大地丰富了妆容的 ...
- CVPR 2021 妆容迁移 CPM SCGAN
效果图: 有两种模式:肤色迁移和图案迁移 妆容迁移是指将目标图上的妆容直接迁移到原图上的技术.相比传统贴妆技术,妆容迁移具有极高的自由度,它可以让用户不再局限于设计师设计好的妆容,而是可以自主.任意地 ...
- 华人占大半壁江山!CVPR 2021 目标检测论文大盘点(65篇论文)
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者:Amusi | 来源:CVer 前言 CVer 正式盘点CVPR 2021上各个方向的工作,本篇是 ...
- 最新!CVPR 2021 医学图像分割论文大盘点(5篇论文)
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者:Amusi | 来源:CVer 前言 昨天分享了MICCAI 2021上Transformer+医 ...
- CVPR 2021公布最佳论文候选!华人占据半壁江山,何恺明、陶大程、沈春华等人上榜...
作者 | 青暮 近日,CVPR 2021官方推特上公布了一个重要消息,即会议最重要奖项--最佳论文奖的候选名单,候选论文有32篇. CVPR 今年共有7015篇有效投稿,其中进入Decision Ma ...
- 重磅!悉尼科大ReLER实验室13篇论文入选CVPR 2021
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 本文作者:Pablo | 来源:知乎(已授权) https://zhuanlan.zhihu.com/ ...
- 重磅!腾讯优图20篇论文入选CVPR 2021
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 来源:腾讯优图 计算机视觉世界三大顶会之一的CVPR 2021论文接收结果出炉!本次大会收到来自全球共701 ...
- 字节跳动多篇论文入选 CVPR 2021,精选干货都在这里了
CVPR 2021,近期刚刚落下帷幕. 作为计算机视觉领域三大顶级学术会议之一,CVPR每年都吸引了各大高校.科研机构与科技公司的论文投稿,许多重要的计算机视觉技术成果都在CVPR上中选发布. 今天, ...
- 66篇论文入选CVPR 2021,商汤的秘籍竟是“大力出奇迹”
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI CVer ...
最新文章
- Spring Cloud微服务之Gateway网关(十三)
- ServletContext的应用(共享数据、获取初始化参数、请求转发、读取资源文件)【源码解析】
- Java常见面试题收集
- 南方cass字体样式设置_实用|史上最全CASS字体异常的解决方案来啦!
- Unity Editor 查找资源依赖、反向查找资源依赖Dependencies
- 最常用的美式英语1500句
- Android判断手机是否在口袋中,距离传感器
- MySQL中的外连接和内连接
- 电气器件系列二十四:电子式压力传感器PPG-D(1)
- 【SpringCloudAlibaba学习 04】整合Dubbo(实现数据消费者服务调用数据生产者服务)
- 天地图服务http转https报错
- python在图片上绘制标注框
- 为什么游戏玩家抗拒NFT?
- 三角形单元刚度矩阵matlab,求助:关于有限元三角形单元合成总刚度矩阵怎么处理...
- 达人观点 :你应该选机器学习还是数据科学?
- “苦逼”程序员的日常,你了解吗?
- [音乐下载] [115永久续期] 最终心跳回忆。。。(11G)
- Ubuntu 安裝思源字體
- 前端JavaScript AES解密 AES加密 ECB模式
- 固态硬盘开卡软件_【移动的家】惠普P500 移动硬盘上手体验
热门文章
- 【汽车电子】外搭铁电压调节器的基本电路
- IOS自定义字体ttf格式的特殊字体
- python 3.9特性_Python3.9新鲜出炉,Python3.9有什么特性?
- 软件测试行业的情况,软件测试行业目前的现状如何?
- 大数据技术之电商推荐系统(4) | 初始化业务数据
- ubuntu虚拟机VmWare与主机共享文件夹
- 文献阅读——《唐长安城的利益空间-以皇帝礼仪的舞台为中心》
- 2018少儿编程引领新的起点,是快速发展一年,我们不能在输在起跑线上了
- 小程序上传图片wx.uploadFile用法
- C#,入门教程(16)——可变数据类型(var)的基础知识与使用禁忌