【实战】文本驱动的StyleGAN2图像处理(二):潜码映射器(Latent Mapper)

news/2024/11/19 23:25:30/

StyleCLIP项目由以色列的耶路撒冷希伯来大学、特拉维夫大学和Adobe研究所共同完成,它用对比语言—图像预训练(CLIP)模型的力量,为StyleGAN2 图像处理开发一个基于文本的输入界面,利用StyleGAN2的潜在空间来操纵生成的StyleGAN2图像,而不需要人工去操作或修饰图像。简单地说,就是写一段文字,指导StyleGAN2生成具备指定特征的图像。

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

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

关于开发环境的准备和配置过程,请参考:

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

(一)架构简介

“潜码映射器”是StyleCLIP提供的一个卓有成效的方法,在操作StyleGAN2图像特征方面有十分优异的表现。下面是这个方法的架构(最核心的损失函数部分的介绍请参考论文原文,这里不再展开):

【翻译】图2. 我们的文本引导映射器的体系结构(在本例中使用的文本提示是:“惊讶的”)。源图像(左)首先被反转为潜码w;三个单独的映射函数(译者注:分别是“粗粒度映射”Mapper Coarse、“中粒度映射”Mapper Medium和“细粒度映射”Mapper Fine,每个Mapper函数都是4层全连接网络,通过训练得到稳定的参数)用来生成残差(蓝色),然后,这些残差与w求和,再经由预训练的StyleGAN模型(绿色)生成图像(右侧);最后,通过CLIP损失函数和一致性损失函数对Mapper的效果进行评估。

(二)上手试用

(2.1)下载Mapper模型:

紫色头发(purple hair):https://pan.baidu.com/s/1ZmMn7KTAm32abavSL7lgOg 提取码: piq6

碧昂丝(Beyonce):https://pan.baidu.com/s/1eEKQf2L7bs5nc5TIk_i8Ng 提取码: 438u

德普(Depp):https://pan.baidu.com/s/1gmRQoJ_46onZOrzwGb-t1A 提取码: 6brg

扎克伯格(Zuckerberg):https://pan.baidu.com/s/1ieT_wVHPwICgQU6v5I495A 提取码: tewk

泰勒·斯威夫特(Taylor Swift):https://pan.baidu.com/s/1yvD-UgXDYrJ5I9ljCm-7xQ 提取码: parm

把下载好的Mapper模型文件拷贝到工作目录的子目录下:./pretrainded_models/mapper

其他一些Mapper模型(运行时需要修改一行代码):

蓬蓬头(afro):https://pan.baidu.com/s/1Ui5LZwLdw-40g93FzH7znQ 提取码: ph43

生气(angry):https://pan.baidu.com/s/17_Nkxrqmf9mNCVjBBBfS4g 提取码: c424

波波头(bobcut):https://pan.baidu.com/s/1MhGuoV6jU50IH9uvXyK3PQ 提取码: jstx

锅盖头(bowlcut):https://pan.baidu.com/s/1O6tzKbqD0QJjILvHzjxnFg 提取码: ysei

卷发(curly hair):https://pan.baidu.com/s/1fPIZt-Fz-clgYPwBtO8lFw 提取码: 6jtn

莫霍头(mohawk):https://pan.baidu.com/s/1ZI5ARuUSEWa0VdnywKGAdA 提取码: a6rc

惊讶(surprised):https://pan.baidu.com/s/1Hc2ZcBDOCqZeDKkWU4ivMA 提取码: mh9d

把下载好的Mapper模型文件拷贝到工作目录的子目录下:./pretrainded_models/mapper

同时,需要修改 .\mapper\styleclip_mapper.py 中的一行:

		# self.mapper.load_state_dict(get_keys(ckpt, 'mapper'), strict=True)self.mapper.load_state_dict(get_keys(ckpt, 'mapper'), strict=False)

否则,运行时会出现以下错误信息:

RuntimeError: Error(s) in loading state_dict for ......:

             Missing key(s) in state_dict: ......

(2.2)下载人脸潜码数据:

https://pan.baidu.com/s/1FzNlgHQOtA1AXBJkuxM2_Q 提取码: rvei

下载好的人脸潜码数据文件拷贝到工作目录的子目录下:./latents_test

下载的人脸潜码数据一共有六个人的数据:希拉里·克林顿、马斯克、鲍里斯·约翰逊、伊恩·格伦、默克尔、泰勒·斯威夫特。

如果需要更多的人脸潜码数据,StyleCLIP官网建议使用 e4e 工具(Designing an Encoder for StyleGAN Image Manipulation):https://github.com/omertov/encoder4editing 。e4e 工具移植到Windows 10上的方法请参考:https://blog.csdn.net/weixin_41943311/article/details/118082017

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

import torchvision
import argparse
from argparse import Namespace
from PIL import Imagefrom utils import ensure_checkpoint_exists
from mapper.scripts.inference import runparser = argparse.ArgumentParser()
parser.add_argument('--exp_dir', default="./results",type=str, help='Path to experiment output directory')
parser.add_argument('--checkpoint_path', default="./pretrained_models/mapper/zuckerberg.pt", type=str, help='Path to model checkpoint')
parser.add_argument('--couple_outputs', default=True, action='store_true', help='Whether to also save inputs + outputs side-by-side')
parser.add_argument('--mapper_type', default='LevelsMapper', type=str, help='Which mapper to use')
parser.add_argument('--no_coarse_mapper', default=False, action="store_true")
parser.add_argument('--no_medium_mapper', default=False, action="store_true")
parser.add_argument('--no_fine_mapper', default=False, action="store_true")
parser.add_argument('--stylegan_size', default=1024, type=int)
parser.add_argument('--test_batch_size', default=2, type=int, help='Batch size for testing and inference')
parser.add_argument('--latents_test_path', default="./latents_test/example_celebs.pt", type=str, help="The latents for the validation")
parser.add_argument('--test_workers', default=0, type=int, help='Number of test/inference dataloader workers')
parser.add_argument('--n_images', type=int, default=None, help='Number of images to output. If None, run on all data')args = vars(parser.parse_args())
run(Namespace(**args))

然后,在cmd下进入StyleCLIP工作目录,运行试试看(将代码中的zuckerberg.pt换成其他Mapper模型文件名,即可得到不同的效果):

python test002.py

处理完的结果放在工作目录的子目录下:./results/reference_results

【问题】如果运行时使用参数 --test_workers,在这里只能指定参数为0;若是大于等于0,则会报错:An attempt has been made to start a new process before the current process has finished its bootstrapping phase.

答:这是因为python多进程需要在main函数中运行。

解决方法1:加main函数,在main中运行;

解决方法2:令test_workers=0,单进程运行。

也可以进到./mapper/scripts目录下修改inference.py,运行inference.py时需要参照上面的提示提供相关运行参数。

(三)使用效果

(3.1)官网给出的例子:

希拉里·克林顿                                                                                惊讶的希拉里·克林顿

(3.2) 实测效果:

鲍里斯·约翰逊                                                                                霉霉(泰勒·斯威夫特)Mapper的约翰逊

“火箭人”马斯克                                                                               碧昂丝Mapper的马斯克

德国总理默克尔                                                                              扎克伯格Mapper的默克尔

伊恩·格伦                                                                                        德普(加勒比海盗)Mapper的伊恩·格伦

 利用 e4e 工具(具体请参考:https://blog.csdn.net/weixin_41943311/article/details/118082017)将真实原图反演(Inversion)生成潜码(latents.pt)和反演图像,用潜码映射器对潜码进行编辑(这么棒的效果,程序员们有没有心动给自己的女朋友也来一套呢?):

原图                           e4e反演图像             e4e+afro                    e4e+bobcut              e4e+bowlcut              e4e+curly hair         

以上这些例子,个个生动非凡,令人赞叹!

潜码映射器(Editing via Latent Mapper)的工作,极大提升了视觉效果,在潜码向量优化(Editing via Latent Vector Optimization)工作的基础上前进了一大步。

(完)

下一篇:

【实战】文本驱动的StyleGAN2图像处理(三):全局指向(Global Direction)


http://www.ppmy.cn/news/377913.html

相关文章

20230318----重返学习-交叉信息监听事件IntersectionObserver-AJAX基础-瀑布流

day-030-thirty-20230318-交叉信息监听事件IntersectionObserver-AJAX基础-瀑布流 交叉信息监听事件IntersectionObserver IntersectionObserver:监听器,监控盒子在视口中出现的交叉信息 语法: IntersectionObserver(函数,对象) 入参 函数 (changes)&g…

html5的经典特效思路

其实特效(Special Effect)的概念很宽泛,无论电影、电视还是游戏,需要特技处理的效果都能被叫做特效。那H5特效呢?简单地说,就是 在网页中实现各种具有想象力的技法,比如触摸碎屏、画卷收缩、冰块…

图片社交巨头Instagram谋求对音乐圈的更多合作?

Instagram从2010年被推出以来,用户数已经有了显著增长,该社交平台现在已经拥有4亿活跃用户。他们会花费大量时间上传图片和短视频,并与朋友分享。越来越多的艺术家也发现,Instagram是一个可以有效推广自己作品以及和粉丝即时互动的…

6个div+CSS3实现网页显示我女神的图片旋转木马效果~~

今天翻到一位博主用htmlcss为女朋友做个旋转摩天轮图片转动,有点心动阿! 在下用现有的技术照猫画虎了一篇,在下用旋转木马转动的页面展示我女神泰勒的图片!! 先上效果图: 注:在下不知道怎么让…

眼见不一定为实——视频、图片编辑技术“妖魔化”

我们现在生活在一个PhotoShop时代,PS已经成了一个动词。自从有了PS以后,很多事情变成了可能,因而网上各种图片的真实性变得难以分辨。 一、PS技术 Adobe作为著名的图形图像和排版软件的生产商,旗下的Photoshop、Premiere、After E…

6.1 图片切换练习;6.2 添加删除记录练习;6.3 divMove练习;6.4 轮播图练习

返回目录《JavaScript学习笔记目录》 6.1 图片切换练习 6.2 添加删除记录练习 6.3 divMove练习 6.4 轮播图练习 6.1 图片切换练习 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图片切换练习&l…

[“吊打面试官“系列之] 一晚带你玩转图片懒加载及其底层原理

一晚带你玩转图片懒加载及其底层原理 课程大纲 从浏览器底层渲染机制分析懒加载的意义最初基于JS盒模型实现的懒加载方案基于getBoundingClientRect的进阶方案手撕Lodash源码中的debounce&#xff08;函数防抖&#xff09;手撕Lodash源码中的throttle&#xff08;函数节流&am…

面向对象+爬虫+队列+多线程+生产者消费者模式一键爬取全网霉霉图片

霉粉们的福利来啦!!! 面向对象爬虫队列多线程生产者消费者模式一键爬取全网霉霉图片 先介绍一波霉霉: 泰勒斯威夫特&#xff08;Taylor Swift&#xff09;&#xff0c;1989年12月13日出生于美国宾夕法尼亚州&#xff0c;美国女歌手、词曲作者、音乐制作人、演员。2006年&…