百变冰冰!手把手教你实现CVPR2021最新妆容迁移算法
论文标题:
SSAT: A Symmetric Semantic-Aware Transformer Network for Makeup Transfer and Removal
论文和代码链接:
https://arxiv.org/abs/2112.03631
https://github.com/Snowfallingplum/SSAT
效果:
测试效果:
摘要
化妆迁移不仅是提取参考图像的化妆风格,而且是将化妆风格渲染到目标图像的语义对应位置。然而,大多数现有的方法侧重于前者而忽视后者,导致无法达到预期的结果。为了解决上述问题,我们提出了一种统一的对称语义感知变换器(SSAT)网络,该网络结合了语义对应学习来同时实现补足转移和补足移除。在SSAT中,提出了一种新的对称语义对应特征转移(SSCFT)模块和一种弱监督语义丢失模型,以便于建立精确的语义对应。在生成过程中,利用SSCFT对提取的化妆特征进行空间扭曲,实现与目标图像的语义对齐,然后将扭曲的化妆特征与未修改的化妆无关特征相结合,生成最终结果。实验表明,我们的方法获得了更加直观准确的化妆转移结果,与其他最先进的化妆转移方法相比,用户研究反映了我们方法的优越性。此外,我们还验证了该方法在表情和姿势差异、对象遮挡场景等方面的鲁棒性,并将其扩展到视频合成传输中
SSAT算法架构
算法相比于之前算法的核心创新点在于,既要提取出妆容的风格,同时也要很好的将五官的妆容特征放置在完美的位置。
核心模块一
特征融合(FF)模块:
在FF模块中,内容特征和语义特征被融合,以获得更丰富的特征进行特征匹配,如上所示。
核心模块二
对称语义对应特征传递(SSCFT)模块:
SSCFT模块的灵感来源于colorization(He等人,2018),并结合了语义对应的对称性。在妆容迁移任务中,语义对应是一对一的映射关系。也就是说,点A对应点B。反过来,点B也对应点A。这种语义关系的对称性可以巧妙地应用到化妆迁移、化妆移除的反任务中。具体如上所示
算法实操
代码刚开源三天:
环境配置:
pytorch Pillow opencv-python numpy
这是作者 requirement.txt 中说明需要的包,我使用的是 pytorch1.6.0的版本,亲测可用。(供参考哈)
1、测试作者提供的数据
直接运行 test.py 即可
代码语言:javascript复制python test.py
生成的结果会在result文件夹中
2、测试自己的数据
1)数据预处理
对目标妆容图片或者测试图片进行人脸解析,项目:https://github.com/zllrunning/face-parsing.PyTorch
这部分分割的准确性直接影响生成的效果,如果分割效果不好,可以参考之前的方法先做裁剪
百变冰冰!手把手教你实现CVPR2021最新妆容迁移算法
2)按照要求放置数据
观察test文件夹下的内容:
有两个文件夹,images用于存在原始图片,seg1用于存放分割后的图片
同时在images的文件夹下一级还有两个图片分别用于存放是上妆的图片还是卸妆的图片。
3)运行 test.py 文件
最后贴一下项目地址:https://github.com/Snowfallingplum/SSAT
这里作者的权重文件不大,40M左右,作者已经上传到GitHub上,使用非常方便哈
今天分享的内容就到这里拉,如果喜欢可以帮忙分享一下