Talk-to-Edit (ICCV2021)
本仓库包含以下论文的实现:
对话式精细人脸编辑
姜雨鸣∗、黄子琪∗、潘新钢、陈长蕾、刘子维
2021年IEEE国际计算机视觉会议(ICCV)
[论文] [项目主页] [CelebA-Dialog数据集] [海报] [视频]
您可以在这里尝试我们的Colab演示。尽情体验吧!
概述
依赖和安装
-
克隆仓库
git clone git@github.com:yumingj/Talk-to-Edit.git
-
创建Conda环境并安装依赖
conda env create -f environment.yml conda activate talk_edit
- Python >= 3.7
- PyTorch >= 1.6
- CUDA 10.1
- GCC 5.4.0
开始使用
编辑
我们提供了使用预训练模型进行编辑的脚本。
-
首先,从此链接下载预训练模型,并将它们放在
./download/pretrained_models
下,如下所示:./download/pretrained_models ├── 1024_field │ ├── Bangs.pth │ ├── Eyeglasses.pth │ ├── No_Beard.pth │ ├── Smiling.pth │ └── Young.pth ├── 128_field │ ├── Bangs.pth │ ├── Eyeglasses.pth │ ├── No_Beard.pth │ ├── Smiling.pth │ └── Young.pth ├── arcface_resnet18_110.pth ├── language_encoder.pth.tar ├── predictor_1024.pth.tar ├── predictor_128.pth.tar ├── stylegan2_1024.pth ├── stylegan2_128.pt ├── StyleGAN2_FFHQ1024_discriminator.pth └── eval_predictor.pth.tar
-
您可以尝试不使用对话指令的纯图像编辑:
python editing_wo_dialog.py \ --opt ./configs/editing/editing_wo_dialog.yml \ --attr 'Bangs' \ --target_val 5
编辑结果将保存在
./results
中。您可以将
attr
更改为以下属性之一:Bangs
(刘海)、Eyeglasses
(眼镜)、Beard
(胡须)、Smiling
(微笑)和Young
(即年龄)。target_val
可以是[0, 1, 2, 3, 4, 5]
。 -
您也可以尝试基于对话的编辑,通过命令提示与系统对话:
python editing_with_dialog.py --opt ./configs/editing/editing_with_dialog.yml
编辑结果将保存在
./results
中。如何与系统对话:
- 我们的系统能够编辑五个面部属性:
Bangs
(刘海)、Eyeglasses
(眼镜)、Beard
(胡须)、Smiling
(微笑)和Young
(即年龄)。 - 当提示
"输入您的请求(完成后按回车):"
时,您可以输入关于这五个属性之一的编辑请求。例如,您可以说"让刘海更长一些。"
- 要回应系统的反馈,只需像与真人对话一样回答即可。例如,如果系统在一轮编辑后询问
"刘海的长度是否合适?"
,您可以说"是的。"
/"不是。"
/"是的,我还希望她笑得更开心一些。"
。 - 要结束对话,只需告诉系统类似
"就这些了"
/"没有其他要求了,谢谢。"
的话。
- 我们的系统能够编辑五个面部属性:
-
默认情况下,上述编辑将在预览图像上进行。您可以通过两种方式更改要编辑的图像:1)将
第11行:latent_code_index
更改为0到99之间的其他值;2)将第10行:latent_code_path
设置为~
,这样将随机生成一张图像。 -
如果您想尝试在真实图像上进行编辑,可以从此链接下载真实图像,并将它们放在
./download/real_images
下。您也可以提供其他自选的真实图像。您需要根据真实图像的路径更改editing_with_dialog.yml
或editing_wo_dialog.yml
中的第12行:img_path
,并将第11行:is_real_image
设置为True
。 -
您可以通过在配置文件中将
第3行:img_res
设置为128
来将默认图像大小切换为128 x 128
。
训练语义场
-
要训练语义场,需要准备一些采样的潜在编码,然后我们使用属性预测器预测其对应图像的面部属性。属性预测器是使用CelebA-Dialog数据集中的细粒度注释进行训练的。在这里,我们提供了我们使用的潜在编码。您可以从此链接下载训练数据,并将它们放在
./download/train_data
下,如下所示:./download/train_data ├── 1024 │ ├── Bangs │ ├── Eyeglasses │ ├── No_Beard │ ├── Smiling │ └── Young └── 128 ├── Bangs ├── Eyeglasses ├── No_Beard ├── Smiling └── Young
-
我们还将使用一些编辑潜在码来监控训练阶段。您可以从此链接下载编辑潜在码,并将它们放在
./download/editing_data
目录下,如下所示:./download/editing_data ├── 1024 │ ├── Bangs.npz.npy │ ├── Eyeglasses.npz.npy │ ├── No_Beard.npz.npy │ ├── Smiling.npz.npy │ └── Young.npz.npy └── 128 ├── Bangs.npz.npy ├── Eyeglasses.npz.npy ├── No_Beard.npz.npy ├── Smiling.npz.npy └── Young.npz.npy
-
训练过程中的所有日志文件,如日志消息、检查点和快照,将保存在
./experiments
和./tb_logger
目录中。 -
./configs/train
目录下有10个配置文件,命名格式为field_<图像分辨率>_<属性名称>
。 选择与您想要的属性和分辨率相对应的配置文件。 -
例如,要训练编辑
128x128
图像分辨率的Bangs
属性的语义场,只需运行:python train.py --opt ./configs/train/field_128_Bangs.yml
定量结果
我们提供了表1中显示的定量结果的代码。这里我们以128x128
分辨率的Bangs
为例。
-
使用训练好的语义场来编辑图像。
python editing_quantitative.py \ --opt ./configs/train/field_128_bangs.yml \ --pretrained_path ./download/pretrained_models/128_field/Bangs.pth
-
使用定量指标评估编辑后的图像。根据不同属性相应地更改
image_num
:Bangs: 148
,Eyeglasses: 82
,Beard: 129
,Smiling: 140
,Young: 61
。python quantitative_results.py \ --attribute Bangs \ --work_dir ./results/field_128_bangs \ --image_dir ./results/field_128_bangs/visualization \ --image_num 148
定性结果
CelebA-Dialog数据集
我们的CelebA-Dialog数据集可在此下载。
CelebA-Dialog是一个大规模的视觉-语言人脸数据集,具有以下特点:
- 面部图像标注了丰富的细粒度标签,根据其语义意义将一个属性分类为多个程度。
- 每张图像都配有描述属性的说明文字和一个用户请求样本。
该数据集可用作以下计算机视觉任务的训练和测试集:细粒度面部属性识别、细粒度面部操作、基于文本的面部生成和操作、面部图像描述,以及更广泛的基于自然语言的面部识别和操作任务。
引用
如果您发现我们的仓库对您的研究有用,请考虑引用我们的论文:
@inproceedings{jiang2021talk,
title={Talk-to-Edit: Fine-Grained Facial Editing via Dialog},
author={Jiang, Yuming and Huang, Ziqi and Pan, Xingang and Loy, Chen Change and Liu, Ziwei},
booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
pages={13799--13808},
year={2021}
}
@article{jiang2023talk,
title={Talk-to-edit: Fine-grained 2d and 3d facial editing via dialog},
author={Jiang, Yuming and Huang, Ziqi and Wu, Tianxing and Pan, Xingang and Loy, Chen Change and Liu, Ziwei},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
year={2023},
publisher={IEEE}
}
联系方式
如果您有任何问题,请随时通过yuming002@ntu.edu.sg
或hu0007qi@ntu.edu.sg
与我们联系。
致谢
该代码库由Yuming Jiang和Ziqi Huang维护。