【实战】(以色列·希伯来大学)文本驱动的StyleGAN2图像处理(一):StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery

CLIP(Contrastive Language–Image Pre-training,对比语言-图像预训练)是OpenAI旗下的力作,通过从网上搜集的4亿未清洗“图像-文本对”数据,用对比学习目标完成训练。无需直接对任务进行优化,它可以用自然语言来预测最相关的“图像-文本对”,这类似于GPT-2和3的零快照功能。

在本文所介绍的工作中,我们探讨如何利用对比语言—图像预训练(CLIP)模型的力量,为StyleGAN2 图像处理开发一个基于文本的输入界面,利用StyleGAN2的潜在空间来操纵生成的StyleGAN2图像,而不需要人工去操作或修饰图像。简单地说,就是写一段文字,指导StyleGAN2生成具备指定特征的图像。

论文地址:https://arxiv.org/abs/2103.17249

Github项目:https://github.com/orpatashnik/StyleCLI

(一)上手试用

(1.1)必备环境:

Windows 10,NVIDIA Geforce RTX 2080Ti

(1.2)下载StyleCLIP项目:

https://github.com/orpatashnik/StyleCLI

将下载后的压缩包解压,创建StyleCLIP工作目录,如:D:\AI\StyleCLIP-main

(1.3)进入cmd,创建虚拟环境(PowerShell不能激活相应环境,请务必使用cmd):

conda env list
conda create -n styleclip python=3.8.5
conda activate styleclip

(1.4)安装Git:

官网地址:https://git-scm.com/downloads
下载并运行:Git-2.31.1-64-bit.exe,按缺省设置安装即可。

(1.5)安装pytorch/torchvision/cudatoolkit及其他组件:

conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch

必须安装支持cuda的pytorch版本,其中,pytorch-1.7.1约746.7MB,cudatookit-10.1.243约300.3MB。然后安装其他组件:

pip install ftfy regex tqdm gdown

(1.6)使用git安装clip.git(即:CLIP模型)

pip install git+https://github.com/openai/CLIP.git

【实战】(以色列·希伯来大学)文本驱动的StyleGAN2图像处理(一):StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery_第1张图片

(1.7)下载预训练人脸模型:stylegan2-ffhq-config-f.pt

百度网盘: https://pan.baidu.com/s/1qg5oCu94gdrE6wd86aCARw 提取码: 7mg4

下载完成后将stylegan2-ffhq-config-f.pt文件拷贝到项目所在目录的pretrained_models子目录下,如:D:\AI\StyleCLIP-main\pretrained_models

(1.8)下载CLIP预训练模型:ViT-B-32.pt(也可以在clip程序包中通过gdown下载,不同网络条件下速度不一样)

百度网盘:https://pan.baidu.com/s/13zBvg28cIYO6oqy2RtEZGw 提取码: d3av

下载完成后将ViT-B-32.pt文件拷贝到下载缓冲目录下,通常是~/.cache/clip,如:C:\用户\Administrator\.cache\clip

(1.9)在StyleCLIP工作目录下创建test001.py,内容如下:

import torchvision
import argparse
from argparse import Namespace
from optimization.run_optimization import main

parser = argparse.ArgumentParser()
parser.add_argument("--description", type=str, default="a person with purple hair",
                    help="the text that guides the editing/generation")
parser.add_argument("--ckpt", type=str, default="./pretrained_models/stylegan2-ffhq-config-f.pt",
                    help="pretrained StyleGAN2 weights")
parser.add_argument("--stylegan_size", type=int, default=1024, help="StyleGAN resolution")
parser.add_argument("--lr_rampup", type=float, default=0.05)
parser.add_argument("--lr", type=float, default=0.1)
parser.add_argument("--step", type=int, default=300, help="number of optimization steps")
parser.add_argument("--mode", type=str, default="edit", choices=["edit", "free_generation"],
                    help="choose between edit an image an generate a free one")
parser.add_argument("--l2_lambda", type=float, default=0.008,
                    help="weight of the latent distance (used for editing only)")
parser.add_argument("--latent_path", type=str, default=None,
                    help="starts the optimization from the given latent code if provided. Otherwose, starts from"
                         "the mean latent in a free generation, and from a random one in editing. "
                         "Expects a .pt format")
parser.add_argument("--truncation", type=float, default=0.7,
                    help="used only for the initial latent vector, and only when a latent code path is"
                         "not provided")
parser.add_argument("--save_intermediate_image_every", type=int, default=20,
                    help="if > 0 then saves intermidate results during the optimization")
parser.add_argument("--results_dir", type=str, default="results")

args = vars(parser.parse_args())
result_image = main(Namespace(**args))
torchvision.utils.save_image(result_image.detach().cpu(), f"results/final_result.png", normalize=True, scale_each=True, range=(-1, 1))

然后,在cmd下进入StyleCLIP工作目录,运行试试看:

python test001.py --description "a Chinese wife with big eyes and red lips" --step 300

处理完的结果放在工作目录的results子目录下,如:D:\AI\StyleCLIP-main\results

 

【问题】如果运行时出现“Key already registered with the same priority: GroupSpatialSoftmax”怎么办?

答:原因是因为环境里面torch包名重复了。将已安装的pytorch/torch卸载(如果分别使用conda或pip安装的模块,请分别卸载),然后重新安装:

conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch

 

(二)使用效果

(2.1)官网给出的例子:

随机生成的训练原图                                                          a person with purple hair              

(2.2)实测效果:

随机生成的训练原图                                                        a crying girl

随机生成的训练原图                                                        a Chinese wife with big eyes and red lips

总体上,这个项目在“首次尝试即完美成功”方面略有不足,但它跨界融合了StyleGAN2和CLIP,为我们打开了一扇窗口,去一窥机器学习的新风景,值得推荐。

 

后记:

StyleCLIP有三种文本驱动的方法,分别是:潜码向量优化(Editing via Latent Vector Optimization)、潜码映射器(Editing via Latent Mapper)和全局指向(Editing via Global Direction),本文只介绍了其中最简单的“潜码向量优化”的方法,其他两种方法敬请关注后续文章。

(完)

 

 

 

你可能感兴趣的:(深度学习)