StyleCLIP global direction详解

news2024/10/5 18:30:48

StyleCLIP中global direction的实现原理

  • 前言
  • 第一阶段:预计算
  • 第二阶段:计算与文本的对应关系

前言

基于的假设:
CLIP中虽然图像特征与文本特征不存在一一对应的关系,但相同的语义下,图像特征的变化方向与文本特征的变化方向是一致的,如下图右侧的man,woman所示
核心观点:
可以将stylegan中隐空间的语义变化方向投影至CLIP空间(下图左下角),这样若命令为man->woman,则可以首先计算CLIP中文本特征对应的变化方向 Δ t \Delta t Δt,再计算该 Δ t \Delta t Δt与CLIP中间中所有图像变化方向 Δ i \Delta i Δi的共线程度(即变化方向一致),取出共线程度大的 Δ i \Delta i Δi,可以反推是stylegan中哪些维度改变得到的该变化。
实际应用时,如下图中的黑框所示,找到文本变化与stylegan隐空间特征的对应后,就能在逆向化的隐向量 s s s上施加对应的改变,得到与文本语义一致的图像编辑结果。
在这里插入图片描述

第一阶段:预计算

这一阶段的核心思想:将stylegan中隐空间每个维度数值变化对应的图像语义变化方向投影至CLIP空间。
主要代码位于 SingleChannel.py中,计算完成后得到文件 fs3.npy (shape: [num_layers * channels_per_layer, 512]),该文件保存的内容可以理解为:单独改变一个latent code的channel,其对应图像的语义改变在CLIP空间中的方向。
举例:
因为stylegan的latent code具备良好的可分离性,因此假设对于每个channel值的改变都对应了一个图像特征的改变,例如layer1_channel2的值增加2,对应的图像是头发长一点;多个channel改变时可以得到high-level特征的变化,例如layer1_channel2的值增加2,layer3_channel1的值减少3,总体的效果就是一个图像变成女性。将每个channel变化带来的图像差异用clip编码,就能量化每个latent code中每个channel对应的语义

生成latents

这一步主要是stylegan中的东西,即将高斯噪声分布映射到style space中,style space中的latent code,具备了比较好的特征可分离性,可编辑性,以及可插值性等,比较适合图像编辑任务。
对应代码:Manipulator.GenerateS()

整体流程如下图所示,实际代码中用了100张图做计算(为了计算均值与标准差),下图以1张图为例,即随机噪声为(1,512)
在这里插入图片描述

计算均值与标准差

对应代码:Manipulator.GetCodeMS()
计算的是,所有图片在layer_i, channel_j上的均值与标准差,如下图所示,以三张图像为例,计算layer0,channel1上的均值和标准差
(26, 100, 512)-->GetCodeMS()-->(26, 512)
(ps:实际上有的层dim=256或更小,实际计算时是一层一层来的)
在这里插入图片描述

计算 Δ i \Delta i Δi

核心思想如下图所示,下图是以某一层layer为例,假设该layer的dim=512:
在这里插入图片描述
对于每一层,每个channel的初始值为上一步预先计算好的channel均值。为了得到每一个channel会对最终的图像语义有怎样的影响,采用了如下的方案:
1、遍历每一层,取出layer
2、每次改变layer的某一个channel,以channel=0为例
3、改变方法为,对于该channel分别加上与减去 5*标准差,其余channel的值保持均值不变(manipulate.py Manipulator.MSCode())
4、用上一步得到的两个latents: s 0 + s_0^+ s0+, s 0 − s_0^- s0输入stylegan的生成器G,得到对应的图像
5、上述两个图像由CLIP的图像编码器进行编码,得到对应的特征: i 0 + i_0^+ i0+, i 0 − i_0^- i0 (SingleChannel.py GetImgF())
6、特征相减,得到图像改变对应在CLIP空间中的变化方向: Δ i 0 \Delta i_0 Δi0 (SingleChannel.py GetFs())

第二阶段:计算与文本的对应关系

计算命令文本( “person”->“person with smile”)的在CLIP空间中的变化方向(StyleCLIP.py GetDt())与第一阶段计算得到的图像变化方向的共线程度(StyleCLIP.py GetBoundary()),共线程度大的图像变化方向为我们需要的结果(而该结果由latent code每个channel改变值计算得到的),取出对应latent code change index,即可对任意的输入图像逆向化后,给latent code对应的index上施加变化(Manipulator.GenerateImg()),得到目标所需的编辑图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS上架App Store的全攻略

​ 第一步:申请开发者账号 在开始将应用上架到App Store之前,你需要申请一个开发者账号。 1.1 打开苹果开发者中心网站:Apple Developer 1.2 使用Apple ID和密码登录(如果没有账号则需要注册),要确保使用…

会议OA项目-其它页面->自定义组件应用,其它界面的布局

1.自定义组件应用 文档参考:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ //oamin\project.config.json {"description": "项目配置文件","packOptions": {"ignore": [],"include": []},…

聊聊BOM的基础概念、管理难点

物料清单(Bill of Materials,简称BOM)是描述产品组成结构的信息数据。BOM信息是制造信息化/数字化管理的最核心的基础数据,BOM信息贯穿从产品设计、生产计划制定、物料采购和销售服务等制造全业务流程,是开展生产活动的…

vue 插槽 - 具名插槽

vue 插槽 - 具名插槽 **创建 工程: H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day05\准备代码\09-插槽-具名插槽 vue --version vue create…

兼容支付宝抖音小程序的工具还能把他们迁移到自己的app

事情的起因是这样的。 之前在微信、支付宝和抖音开放平台都上架了自己的小程序,虽然几个平台有自己的开发标准,但是都是基于 JavaScript 这种已经被广泛使用的编程语言进行开发的,对于开发者而言学习的门槛并不高,也很容易进行开…

标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Halcon中gen_gabor的比较。

最近有朋友在研究Halcon中gen_gabor的函数,和我探讨,因为我之前也没有怎么去关注这个函数,因此,前前后后大概也折腾了有一个星期去模拟实现这个东西,虽然最终没有实现这个函数,但是也是有所收获&#xff0c…

协程,GIL全局解释器,互斥锁,线程池,Concurrent模块

进程是资源分配的最小单位,线程是CPU调度的最小单位。每一个进程中至少有一个线程。 Python对并发编程的支持 (1)多线程:threading,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成。 (2)多进程:multiproces…

nvcc -V和nvidia-smi的关系

nvcc -V 和 nvidia-smi 都与NVIDIA GPU相关,但它们提供的信息和功能有所不同。 nvcc -V: nvcc 是 NVIDIA CUDA 编译器的命令,用于获取CUDA工具包的版本信息。CUDA(Compute Unified Device Architecture)是一种用于并行计算的GPU编…

阿里云短信服务

文章目录 了解阿里云用户权限操作开通阿里云短信服务添加短信模板添加签名编写测试代码编写可重复的微服务接口,实现验证码的发送! 了解阿里云用户权限操作 模型 去阿里云个人中心查看授权码等: 点击开始使用用户的AccessKey 创建用户组&…

用户登录管理中的Bug修复与技术思考

目录 1 前言2 问题提出3 问题分析和解决4 技术分析和改进5 结语 1 前言 在开发管理软件平台为美术馆时,我们致力于提供一个多系统集成平台,其中包括艺术品管理、志愿者管理和数字资产管理等子系统。为了确保用户享有流畅的体验,我们采用了一…

面向对象设计原则之单一职责原则

目录 定义作用及影响示例 面向对象设计原则之开-闭原则 面向对象设计原则之里式替换原则 面向对象设计原则之依赖倒置原则 面向对象设计原则之单一职责原则 定义 单一职责原则 / 单一功能原则 (Single Responsibility Principle,SRP)&#x…

实验2.2.1 交换机VLAN的划分

实验2.2.1 交换机VLAN的划分 一、任务描述二、任务分析三、实验拓扑四、具体要求五、任务实施1.重命名交换机,关闭干扰信息,并创建vlan。2.通过display vlan查看vlan相关信息3.配置Access接口及分配vlan接口。4.查看vlan的相关信息。 六、任务验收七、任…

【PXIE301-211】青翼科技基于PXIE总线的16路并行LVDS数据采集、1路光纤数据收发处理平台

板卡概述 PXIE301-211是一款基于PXIE总线架构的16路并行LVDS数据采集、1路光纤收发处理平台,该板卡采用Xilinx的高性能Kintex 7系列FPGA XC7K325T作为实时处理器,实现各个接口之间的互联。板载1组64位的DDR3 SDRAM用作数据缓存。板卡具有1个FMC&#xf…

婚纱摄影行业如何利用软文精准获客

婚纱摄影在整个结婚流程中处于中上游,因此婚摄环节是整个婚庆的重要环节,市场的强烈需求也使整个行业的规模不断扩张,那么在激烈的市场竞争中,婚纱摄影行业应该如何获得源源不断的客户呢,可以试试软文,接下…

浏览器调试模式获取链接信息(获取京东cookie为例)

通过浏览器的调试模式,获取京东cookie变量pt_pin和pt_key。 一、登录 1)打开网页 浏览器打开手机版京东网页:m.jd.com 2)登录账号 点击【登录】按钮,输入账号密码登录 二、调试模式 1)停留在要调试的…

计算机基础知识35

进程和线程的比较 1. 进程的开销比线程的开销大很多 2. 进程之间的数据是隔离的,但是,线程之间的数据不隔离 3. 多个进程间的线程数据不共享----->让进程通信(IPC)---->进程下的线程也通信了---->队列 GIL全局解释器锁(重要理论) # 虽然一个进程…

“智慧工地”施工现场管理一体化云平台,支持多端展示(PC端、手机端、平板端)

智慧工地平台源码,微服务架构JavaSpring Cloud UniApp MySql 支持多端展示(PC端、手机端、平板端) 智慧工地是什么? 智慧工地主要围绕绿色施工、安全管控、劳务管理、智能管理、集成总控等方面,帮助工地解决运营、管理…

cario库——C++画图

文章目录 RGBA1. 多个(x,y)坐标点,连成线2. 画圆3. 填充颜色4. 曲线图 RGBA rgb:红绿蓝 rgb(0,0,0):黑色rgb(255,255,255):白色 rgba:红绿蓝透明度(0:完全透明,1:完全不…

如何挑选多用户商城源码?

数字化时代,电子商务已经成为了商业发展的重要方向。无论是大型企业还是个人创业者,都希望能够通过搭建一个多用户商城来拓展自己的业务,并与更多的消费者建立联系。 对于大多数人来说,从零开始开发一个多用户商城是一项巨大的挑战…

PTA 小字辈(树)

题目 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号&#…