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
Windows 10,NVIDIA Geforce RTX 2080Ti
https://github.com/orpatashnik/StyleCLI
将下载后的压缩包解压,创建StyleCLIP工作目录,如:D:\AI\StyleCLIP-main
conda env list
conda create -n styleclip python=3.8.5
conda activate styleclip
官网地址:https://git-scm.com/downloads
下载并运行:Git-2.31.1-64-bit.exe,按缺省设置安装即可。
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
pip install git+https://github.com/openai/CLIP.git
百度网盘: https://pan.baidu.com/s/1qg5oCu94gdrE6wd86aCARw 提取码: 7mg4
下载完成后将stylegan2-ffhq-config-f.pt文件拷贝到项目所在目录的pretrained_models子目录下,如:D:\AI\StyleCLIP-main\pretrained_models
百度网盘:https://pan.baidu.com/s/13zBvg28cIYO6oqy2RtEZGw 提取码: d3av
下载完成后将ViT-B-32.pt文件拷贝到下载缓冲目录下,通常是~/.cache/clip,如:C:\用户\Administrator\.cache\clip
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
随机生成的训练原图 a person with purple hair
随机生成的训练原图 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),本文只介绍了其中最简单的“潜码向量优化”的方法,其他两种方法敬请关注后续文章。
(完)