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)

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

  1. 数字图像处理二维码识别 python+opencv实现二维码实时识别

    数字图像处理二维码识别 python+opencv实现二维码实时识别 特点: (1)可以实现普通二维码,条形码: (2)解决了opencv输出中文乱码的问题 (3)增加网页自动跳转功能 (4)实现二维 ...

  2. JQuery使用插件生产二维码生成起(类似草料二维码生产器)

    实现功能:通过文本框的内容生产二维码 代码结构: 提供js链接: https://pan.baidu.com/s/1KRmq_yB1qcJ-PC8NjLe_8A 提取码:26ul 提供index.js ...

  3. 抖音实战~分享模块~生成短视频二维码

    文章目录 一.可见范围 1. 自己发布短视频 2. 其他人发布短视频 二.源码分析 2.1. 底部窗口popup 2.2. 实现组件uQRCode 2.3. 插件涉及组件 2.4. 组件改造 2.5. ...

  4. QReader:Chrome 浏览器上的二维码阅读器

    在 Chrome 上利用扩展生成二维码不稀奇, QR Code Generator 这个扩展就可以实现,并且这样的扩展在 Chrome Web Store 随便一搜都能出现一大堆.但是,直接在 Chr ...

  5. Laravel实现google-authenticator--Google二维码验证器

    开发前的准备 安装Laravel 安装二维码生成器QrCode,没有安装也可以,接下来会安装 安装拓展 1.运行如下代码安装拓展包: composer require "earnp/lara ...

  6. 用QRCode.js制作二维码解析器(qrcode.decode方法解析二维码)

    由于近期公司要求制作一个移动端的'长按识别二维码'的功能,但是该功能最本质的就是解析二维码,在网上找了很多,发现效果是有了,就是没有那种可以直接用的,后来在根据网上的资料,自己研究了一下,发现二维码解 ...

  7. Python爬虫实战之哔哩哔哩二维码登录申请

    前言 哈喽,好久不见了吧,各位新年好!博主春节也是比较忙的,没时间去写文章和"coding".最近我们学校也是初九就开学了,所以更加没时间创作了

  8. 零样本风格迁移:多模态CLIP文本驱动图像生成

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:GitHub ,新智元 [导读]零样本的风格迁移听说过没有?英 ...

  9. 【Android App】二维码的讲解及生成属于自己的二维码实战(附源码和演示 超详细必看)

    需要全部代码请点赞关注收藏后评论区留言~~~ 一.二维码基本内容介绍 条形码只能表达十几位数字编码,无法表示更复杂的数据. 二维码在二维方格上描出一个个黑点,从而表达更丰富的信息. 二维码早已在手机A ...

最新文章

  1. 【渝粤教育】国家开放大学2018年秋季 0033-21T工程数学 参考试题
  2. GBT19056精要
  3. 内网穿透工具 Ngrok
  4. 判断上三角矩阵_线性代数15——矩阵空间\对角矩阵\和秩1矩阵
  5. Windows xp+Ubuntu 11.10 硬盘安装
  6. 如何绘制高大上的词云图?
  7. qchart能绘制三维_通图GIS | 用多种体展示方案适配复杂三维场景分析、表达
  8. python blp模型 估计_简述BLP模型
  9. 空间解析几何与向量代数
  10. 求不规则立方体表面积java_立方体的表面积怎么求(测算表面积公式全集)
  11. GoldenGate的安全配置
  12. ChatGPT在线网页版和接口
  13. Python游戏开发,Python实现贪吃蛇小游戏与吃豆豆 附带源码
  14. 数组中相同id的其他属性进行拼接的方法
  15. MySQL查询优化利刃-EXPLAIN
  16. QT5.8 中创建插件时Q_INTERFACES提示Undefined interface
  17. 深度学习PyTorch笔记(9):自动求导
  18. IDEA左侧的project目录中,看不到项目的文件结构图,项目目录不见了
  19. 腾讯自研新一代AV1编解码器
  20. 何恺明霸榜!近10年里的具有影响力的一作(年轻)AI学者大盘点!谷歌机构排名第一!...

热门文章

  1. B站投资心动,内容渠道两手都要抓,两手都能“硬”吗?
  2. 中国31个三十一个省会城市的货郎担回路15404千米
  3. 1095:数1的个数(信奥)
  4. Java程序设计梁勇第十版第八章编程练习题
  5. 网吧母盘制作其本流程
  6. LuLu UI表单验证
  7. Java范例开发大全源程序
  8. C++题目:新的篮球队(题集)
  9. IIS7应用程序池停止后,如何自动启动
  10. 四溴-2,3-萘酞菁铅[PbNcBr4],酞菁铅PbN,齐岳生物提供多多种定制材料