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

本文介绍了如何使用StyleCLIP项目,通过文本指令对StyleGAN2生成的图像进行全局风格编辑。详细阐述了从创建虚拟环境、安装依赖,到运行全局指向程序的步骤。该方法基于CLIP模型,找到特定图像属性变化的向量,实现对StyleGAN2图像的编辑。实测效果表明,这种方法能有效改变人物的特征,如眼睛颜色、嘴唇颜色、笑容和发型等。
摘要由CSDN通过智能技术生成

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

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

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

全局指向(Global Direction)这部分的开发工作,看起来与潜码向量优化、潜码映射器不同,它采用的是官方的基于tensorflow 1.14的StyleGAN2架构,因此建议重新创建一个虚拟环境,以方便调试和运行。

【原理简介】

全局指向(Global Direction)是基于这样一个假设:在共享向量空间中存在一个方向,其中图像的某个属性变化很大,而其他属性保持不变;如果能找到这个方向,我们可以使用一个指向这个方向的向量,把它作为风格编辑向量(即:全局指向)添加到待编辑图像向量中以实现图像风格的编辑。

论文中给出的方法是:取100个图像,对StyleGAN2输出的feature maps中的具体某一个channel,先求出其在100个图像上的平均值,保持其他channel不变,在该channel上分别加上正/负五倍均方差大小的扰动,对应生成100x2=200个图像,分别计算其在CLIP模型中的feature,算出100对图像feature的差值,并进行规格化,得到StyleGAN2输出的feature maps中的每一个channel变化时与图像CLIP语义的关联系数,即论文中提到的下面这个公式中的Δic:

这样,当输入一段有变化的CLIP文本时,首先生成图像CLIP语义的变化量,然后用这个变化量与上文提到的关联系数 Δic 相乘,得到StyleGAN2 feature maps中的每一个channel上的变化值,将该变化值与原始图片的feature maps相加,最后用预训练模型生成风格编辑后的新图像。

通过对源代码的分析,论文中用到了26个StyleGAN2的feature maps,它们是:

#0  [<tf.Tensor 'G_synthesis_1/4x4/Conv/add:0' shape=(?, 512) dtype=float32>,
#1 <tf.Tensor 'G_synthesis_1/4x4/ToRGB/add:0' shape=(?, 512) dtype=float32>,
#2 <tf.Tensor 'G_synthesis_1/8x8/Conv0_up/add:0' shape=(?, 512) dtype=float32>,
#3 <tf.Tensor 'G_synthesis_1/8x8/Conv1/add:0' shape=(?, 512) dtype=float32>,
#4 <tf.Tensor 'G_synthesis_1/8x8/ToRGB/add:0' shape=(?, 512) dtype=float32>,
#5 <tf.Tensor 'G_synthesis_1/16x16/Conv0_up/add:0' shape=(?, 512) dtype=float32>,
#6 <tf.Tensor 'G_synthesis_1/16x16/Conv1/add:0' shape=(?, 512) dtype=float32>,
#7 <tf.Tensor 'G_synthesis_1/16x16/ToRGB/add:0' shape=(?, 512) dtype=float32>,
#8 <tf.Tensor 'G_synthesis_1/32x32/Conv0_up/add:0' shape=(?, 512) dtype=float32>,
#9 <tf.Tensor 'G_synthesis_1/32x32/Conv1/add:0' shape=(?, 512) dtype=float32>,
#10 <tf.Tensor 'G_synthesis_1/32x32/ToRGB/add:0' shape=(?, 512) dtype=float32>,
#11 <tf.Tensor 'G_synthesis_1/64x64/Conv0_up/add:0' sh
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值