目录
CPM: 色彩模式妆容迁移
- CPM 是一个全面的妆容迁移框架,在轻度和极端妆容风格上都优于之前的最先进模型。
- CPM 由一个改进的色彩迁移分支(基于 BeautyGAN)和一个全新的模式迁移分支组成。
- 我们还引入了 4 个新的数据集(真实和合成)来训练和评估 CPM。
📢 新消息: 我们在线提供了❝定性性能比较❞!快来看看吧!
CPM 可以将参考妆容风格的颜色和模式复制到另一张图像上。 |
数据集构建、模型架构和实验结果的详细信息可以在我们的论文中找到:
@inproceedings{m_Nguyen-etal-CVPR21,
author = {Thao Nguyen and Anh Tran and Minh Hoai},
title = {Lipstick ain't enough: Beyond Color Matching for In-the-Wild Makeup Transfer},
year = {2021},
booktitle = {Proceedings of the {IEEE} Conference on Computer Vision and Pattern Recognition (CVPR)}
}
请在使用我们的数据集或模型实现来产生发表结果或整合到其他软件时引用我们的论文。
数据集
我们引入了 ✨ 4 个新数据集:CPM-Real、CPM-Synt-1、CPM-Synt-2 和 Stickers 数据集。此外,我们还使用了已发布的 LADN 数据集 和 Makeup Transfer 数据集。
CPM-Real 和 Stickers 是从 Google 图片搜索中抓取的,而 CPM-Synt-1 和 2 是基于 Makeup Transfer 和 Stickers 构建的。(点击数据集名称下载)
名称 | 图片数量 | 描述 | - |
---|---|---|---|
CPM-Real | 3895 | 真实 - 妆容风格 | |
CPM-Synt-1 | 5555 | 合成 - 带有模式分割掩码的妆容图像 | |
CPM-Synt-2 | 1625 | 合成 - 三元组:妆容、无妆、真实值 | |
Stickers | 577 | 带有 alpha 通道的高质量图像 |
数据集文件夹结构可以在这里找到。
通过下载这些数据集,用户同意:
- 仅将这些数据集用于研究或教育目的
- 不以任何原始或修改形式分发数据集或部分数据集
- 在使用这些数据集产生已发表的结果时引用我们的论文
开始使用
环境要求
- python=3.7
- torch==1.6.0
- tensorflow-gpu==1.14
- segmentation_models_pytorch
安装
# 克隆仓库
git clone https://github.com/VinAIResearch/CPM.git
cd CPM
# 安装依赖
conda env create -f environment.yml
下载预训练模型
- 下载 CPM 的预训练模型:color.pth 和 pattern.pth。将它们放在
checkpoints
文件夹中。
mkdir checkpoints
cd checkpoints
wget https://public.vinai.io/CPM_checkpoints/color.pth
wget https://public.vinai.io/CPM_checkpoints/pattern.pth
- 从 Drive 下载 [PRNet 预训练模型]。将其放在
PRNet/net-data
中
使用
# 色彩+模式:
CUDA_VISIBLE_DEVICES=0 python main.py --style ./imgs/style-1.png --input ./imgs/non-makeup.png
# 仅色彩:
CUDA_VISIBLE_DEVICES=0 python main.py --style ./imgs/style-1.png --input ./imgs/non-makeup.png --color_only
# 仅模式:
CUDA_VISIBLE_DEVICES=0 python main.py --style ./imgs/style-1.png --input ./imgs/non-makeup.png --pattern_only
结果图像将保存为 result.png
训练和评估
如论文所述,色彩分支和模式分支是完全独立的。但它们共享相同的工作流程:
-
数据准备:生成面部纹理图。
-
训练
🌿 如果你在运行代码时遇到问题,请在创建问题之前阅读故障排除。谢谢 🌿
故障排除
-
[已解决]
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
:sudo apt update sudo apt install libgl1-mesa-glx
-
[已解决]
RuntimeError: Expected tensor for argument #1 'input' to have the same device as tensor for argument #2 'weight'; but device 1 does not equal 0 (while checking arguments for cudnn_convolution)
在 .py 之前添加 CUDA VISIBLE DEVICES。例如:CUDA_VISIBLE_DEVICES=0 python main.py
-
[已解决]
RuntimeError: cuda runtime error (999) : unknown error at /opt/conda/conda-bld/pytorch_1595629403081/work/aten/src/THC/THCGeneral.cpp:47
sudo rmmod nvidia_uvm sudo modprobe nvidia_uvm
Docker 文件
docker build -t name .