69、CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields

news2024/9/27 5:43:27

简介

官网:https://cassiepython.github.io/clipnerf/
利用对比语言-图像预训练(CLIP)模型的联合语言-图像嵌入空间,提出了一个统一的框架,可以用短文本提示或示例图像以用户友好的方式操纵NeRF。改论文结合NeRF的新视图合成能力和生成模型潜表示的可控操纵能力,提出一种解缠的条件NeRF架构,允许对形状和外观进行单独控制。

解缠的条件NeRF架构通过将学到的变形场应用于位置编码来执行形状调节,并将颜色调节推迟到体绘制阶段来实现的

为将这种解耦的潜表示与CLIP嵌入联系起来,设计了两个code mapper,以CLIP嵌入为输入,并更新潜代码以反映目标编辑

同时提出了一种逆向优化方法,可准确地将输入图像投影到潜代码中进行操作,以实现对真实图像的编辑

贡献点:

  • 提出第一种NeRF的文本和图像驱动的操作方法,使用统一的框架为用户提供使用文本提示或示例图像对3D内容的灵活控制。
  • 通过引入形状码来变形体场和外观码来控制发出的颜色,设计了一种解缠的条件NeRF架构。
  • 与基于优化的编辑方法相比,前馈代码mapper能够快速推理编辑同一类别中的不同对象。
  • 提出一种反演方法,从真实图像中推断形状和外观代码,允许编辑现有数据的形状和外观。

实现流程

在这里插入图片描述

Conditional NeRF

建立在原始的每个场景NeRF之上,conditional NeRF service作为特定对象类别的生成模型,以专门控制形状和外观的潜向量为条件。conditional NeRF表示为一个连续的体函数 F θ F_θ Fθ,它将5D坐标(空间位置 X (x, y, z)和视图方向V(φ, θ)),以及形状代码 z s z_s zs 和外观代码 z a z_a za 映射到体密度 σ 和依赖于视图的辐射度 c(r, g, b),由多层感知器(MLP)参数化。
在这里插入图片描述

Disentangled Conditional NeRF

conditional NeRF容易受到形状和外观条件之间的相互干预,例如,操纵形状代码也可能导致颜色变化,为此论文提出解缠条件NeRF架构,通过适当解缠条件机制来实现对形状和外观的单独控制

Conditional Shape Deformation

在这里插入图片描述

不直接将潜在形状代码连接到编码位置特征,而是通过对输入位置的显式体积变形来制定形状条件。

这种条件形状变形不仅提高了操纵的鲁棒性,而且通过正则化输出形状为基本形状的平滑变形,尽可能地保留了原始形状的细节,更重要的是完全隔离了形状条件对外观的影响

shape deformation network Γ : ( x , z s ) → Δ x \Gamma : (x,z_s) \to \Delta x Γ:(x,zs)Δx,将位置x 和输入 z s z_s zs 投射到与位置编码 Γ ( x ) \Gamma(x) Γ(x) 的每个带对应的位移向量 Δ x ∈ R 3 × 2 m Δx∈R^{3×2m} ΔxR3×2m

deformed positional encoding Γ ∗ ( P , z s ) = { γ ∗ ( p , Δ p ) ∣ p ∈ P , Δ p ∈ Γ ( p , z s ) } \Gamma^*(P,z_s) = \{ \gamma^*(p,\Delta p) | p \in P, \Delta p \in \Gamma(p,z_s) \} Γ(P,zs)={γ(p,Δp)pP,ΔpΓ(p,zs)}

在这里插入图片描述
标量p和向量 Δ p ∈ R 2 m Δp∈R^{2m} ΔpR2m 与 p 和 Δp 属于同一轴,双曲正切函数 tanh(·)将位移约束在[- 1,1]范围内,以避免大运动带来的局部极值,提高训练鲁棒性。

Deferred Appearance Conditioning

在这里插入图片描述

将外观代码与视图方向连接起来作为辐射度预测网络的输入,允许在不接触形状信息(即密度)的情况下操纵外观
在这里插入图片描述

CLIP-Driven Manipulation

在这里插入图片描述

以conditional NeRF作为生成器,为避免同时优化每个目标样本的形状和外观代码,这往往是通用的和耗时的,采用一种前馈方法,直接从输入文本提示更新条件代码。

给定输入文本提示 t 和 初始形状/外观代码 z s ′ / z a ′ z'_s/z'_a zs/za,训练形状mapper M s M_s Ms和外观mapper M a M_a Ma
在这里插入图片描述
ε ^ ( ⋅ ) \hat{\varepsilon}(\cdot) ε^()是预训练的CLIP文本编码器,将文本投影到CLIP嵌入特征空间,两个mapper都将该CLIP嵌入映射到更新原始形状和外观代码的位移向量

CLIP包括一个图像编码器和一个映射到联合嵌入空间的文本编码器,使用cross-modal CLIP距离函数 D C L I P D_{CLIP} DCLIP(·,·)来衡量输入文本和已渲染图像块之间的嵌入相似性
在这里插入图片描述
ε ^ i ( ⋅ ) \hat{\varepsilon}_i(\cdot) ε^i() ε ^ t ( ⋅ ) \hat{\varepsilon}_t(\cdot) ε^t()是预训练的剪辑图像和文本编码器,I 和 t 是输入图像块和文本,<·,·>是余弦相似度算子

在这里插入图片描述
cross-modal CLIP距离函数,虽然相机姿态差异很大,但同一物体的不同视角具有更高的相似性(小距离)。但即使在同一视图下,不同物体的相似性也较低(距离大)。

训练过程

训练过程分为两步,首先训练解缠的条件NeRF,包括conditional NeRF 生成器和deformation network,然后固定生成器的权重,并训练包括形状和外观mapper的剪辑操作部分

Disentangled Conditional NeRF

条件NeRF生成器 F θ F_θ Fθ 与变形网络一起训练,使用 non-saturating GAN 和鉴别器 D,其中 f (x)=−log (1+exp(−x)), λ r λ_r λr 是正则化权重。假设真实图像 I 形成了 d 的训练数据分布,分别从 Z s , Z a Z_s, Z_a Zs,Za Z v Z_v Zv 中随机采样形状码 z s z_s zs ,外观码 z a z_a za 和相机姿态,其中 Z s Z_s Zs Z a Z_a Za 是正态分布, Z v Z_v Zv 是相机坐标系的上半球。
在这里插入图片描述

CLIP Manipulation Mappers

使用预训练的NeRF生成器 F θ F_θ Fθ、CLIP编码器KaTeX parse error: Expected 'EOF', got '}' at position 34: …}_t,\varepsilon}̲_i \}和鉴别器 D 来训练CLIP形状mapper M s M_s Ms 和外观mapper M a M_a Ma。除mapper外,其他网络权值均为固定值,记为 { ⋅ ^ } \{ \hat{\cdot}\} {^},与第一阶段类似,从它们各自的分布中随机采样形状码 z s z_s zs、外观码 z a z_a za和相机姿态 v,从预定义的文本库 t 中对文本提示 t 进行采样。通过使用权重为 λ c λ_c λc 的CLIP距离 D C L I P D_{CLIP} DCLIP
在这里插入图片描述

Inverse Manipulation

要将操作应用于属于同一训练类别的输入图像 I r I_r Ir,关键是首先优化所有生成条件,以将图像反向投影到生成流形,类似于latent image manipulation方法,遵循EM算法,设计了一种迭代方法来交替优化形状码 z s z_s zs、外观码 z a z_a za和相机v。具体来说,在每次迭代中,首先优化 v,同时使用以下损失保持 z s z_s zs z a z_a za 固定:
在这里插入图片描述
紧接着优化形状码
在这里插入图片描述
其中 z a z_a za 和 v 固定, z n z_n zn 为每一步采样的随机标准高斯噪声向量,以提高优化的鲁棒性, λ n λ_n λn 在整个优化迭代过程中从1到0线性衰减。

同理优化外观码
在这里插入图片描述
注意:实验结果表明,超参数取值为: λ r = 0.5 , λ v = 0.1 , a n d λ s = λ = 0.2 λ_r =0.5, λ_v =0.1, and λ_s = λ_ =0.2 λr=0.5,λv=0.1,andλs=λ=0.2

实验

在这里插入图片描述
在这里插入图片描述

Limitations

在这里插入图片描述

通过在各种文本提示和示例图像上的广泛实验来评估所提出方法,并为交互式编辑提供了一个直观的编辑界面。然而,由于潜空间和预训练CLIP的表达能力有限,所提出方法无法处理细粒度和域外的形状和外观编辑,通过添加更多不同的训练数据可以缓解这一问题。

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

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

相关文章

【自学Python】Python缩进规则

Python缩进规则 Python缩进规则教程 Python 和其它程序设计语言采用大括号 {} 分隔代码块不同&#xff0c;Python 采用代码缩进和冒号来区分代码块之间的层次。 在 Python 中&#xff0c;对于 类定义、函数定义、流程控制语句、异常处理语句 等&#xff0c;行尾的冒号和下一…

【Linux篇】之TFTP服务配置

tftp是基于UDP协议的简单文本文件传输协议&#xff1b; 用途&#xff1a;使用网络的方式将文件传输(下载)到开发板中。 具体的tftp服务的安装步骤&#xff1a; 1> 安装tftp服务 (ubuntu必须可以上网) sudo apt-get update ----> 更新源 sudo apt-get install tftpd-hpa…

【MyBatis】如何使用“动态SQL”(不用找了,这一篇足矣)

目录 一、if标签 二、where标签 三、trim标签 四、choose、when、otherwise 五、foreach标签 六、sql标签 一、if标签 if&#xff0c;通过test属性中的表达式判断标签中的内容是否有效&#xff08;有效才将if里面的内容拼接到sql中&#xff09;&#xff1b;一般用于用户在…

Authing 通过中国信通院「身份治理系统和工具能力」全面级评估

Authing 通过中国信通院「身份治理系统和工具能力」全面级评估 近期&#xff0c;Authing 荣获由中国信通院颁发的「身份治理系统和工具能力」全面级评估。在统一身份管理、统一认证管理、开发集成管理以及统一安全管理四个模块满足身份治理系统和工具支撑能力全面级要求。 评估…

Java--main()方法

文章目录一、main()方法使用二、mian()方法调用一、main()方法使用 1、访问控制权限是公有的&#xff08;public&#xff09; 2、main() 方法是静态的。如果要在 main() 方法中调用本类中的其他方法&#xff0c;则该方法也必须是静态的&#xff0c;否则需要先创建本类的实例对…

进程间通信【共享内存】

共享内存共享内存共享内存原理创建共享内存关联共享内存去关联共享内存控制共享内存使用共享内存代码共享内存 进程间通信的前提是&#xff1a;先让不同的进程&#xff0c;看到同一份资源 之前&#xff0c;管道进程通信是采用看到同一个文件&#xff0c;那么共享内存就是看到同…

审查 Git 仓库的绝佳工具Tig

简介 Tig 是一个 基于 ncurses 的 Git 文本模式界面&#xff0c;它允许你浏览 Git 仓库中的更改。它还可以充当各种 Git 命令输出的分页器。使用这个工具可以让我很好地了解在哪个提交中发生了哪些更改&#xff0c;最新的提交合并是什么等等。 git工作原理&#xff1a;https:…

黑马学ElasticSearch(三)

目录&#xff1a; &#xff08;1&#xff09;RestClient-操作索引库-导入demo &#xff08;2&#xff09;RestClient操作索引-hotel数据结构分析 &#xff08;3&#xff09;RestClient操作索引库-初始化RestClient &#xff08;4&#xff09;RestClient操作索引库-创建索引库…

如何掌握TikTok广告投放技巧,玩转“TikTok+独立站”新模式?

导读&#xff1a;TikTok已经发展成为全球第六大社交媒体网络&#xff0c;这使其成为一个非常富饶的广告目的地。 跨境卖家如何在 TikTok 上投放广告&#xff1f;在“TikTok独立站”模式中&#xff0c;卖家在 TikTok ads 上投放电商广告&#xff0c;用户点击后将跳转到独立站落地…

21. 合并两个有序链表(链表)

文章目录题目方法一 暴力法:创建头结点,比较拼接方法二 递归法参考文献题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,…

【从零开始学习深度学习】42. 算法优化之AdaDelta算法【基于AdaGrad算法的改进】介绍及其Pytorch实现

除了上一篇文章介绍的RMSProp算法以外&#xff0c;另一个常用优化算法AdaDelta算法也针对AdaGrad算法在迭代后期可能较难找到有用解的问题做了改进 。比较有意思的是&#xff0c;AdaDelta算法没有学习率这一超参数。 目录1. AdaDelta算法介绍2. 从零实现AdaDelta算法3. Pytorch…

UDS诊断系列介绍04-10会话服务

本文框架1. 系列介绍10服务概述2. 10服务请求与应答2.1 10服务请求2.2 肯定应答2.3 否定应答1. 系列介绍 UDS&#xff08;Unified Diagnostic Services&#xff09;协议&#xff0c;即统一的诊断服务&#xff0c;是面向整车所有ECU的一种诊断通信方式&#xff0c;是基于ISO 14…

Linux学习笔记——集群化环境前置准备

5.7、集群化环境前置准备 5.7.1、介绍 在前面&#xff0c;我们所学习安装的软件&#xff0c;都是以单机模式运行的。 后续&#xff0c;我们将要学习大数据相关的软件部署&#xff0c;所以后续我们所安装的软件服务&#xff0c;大多数都是以集群化&#xff08;多台服务器共同…

使用OpenCV读取视频、图片并做简单处理

1.OpenCV的安装与卸载 在conda中安装opencv&#xff0c;打开Anaconda Prompt 使用国内镜像源安装opencv&#xff0c;命令如下&#xff1a; pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 也可以安装opencv的另一个扩展包opencv-contrib-python&am…

Centos下使用yum安装Mysql8(Mysql5.7)以及常见的配置和使用

记录一下在centos7.x下面使用yum方式安装mysql8(Mysql5.7)关系型数据库安装之前一般需要先确定centos7.x服务器里是否已经安装&#xff0c;未安装或者刚初始化的centos7.x服务器最好安装&#xff0c;原来已经有的要升级的话一定要对系统原有mysql 或mariadb卸载干净&#xff0c…

系统测试的具体测试类型

系统测试&#xff1a;是为判断系统是否符合要求而对集成的软、硬件系统进行的测试活动、它是将已经集成好的软件系统&#xff0c;作为基于整个计算机系统的一个元素&#xff0c;与计算机硬件、外设、某些支持软件、人员、数据等其他系统元素结合在一起&#xff0c;在实际运行环…

Charles - 夜神模拟器证书安装App抓包

Charles - 夜神模拟器证书安装App抓包 文章目录Charles - 夜神模拟器证书安装App抓包前言一、软件安装1.Openssl安装1.1下载安装1.2配置环境变量1.3查看openssl版本&#xff0c;输入命令&#xff1a;openssl version2.夜神模拟器安装1.1 下载安装1.2工具准备&#xff0c;MT管理…

【Lilishop商城】No4-6.业务逻辑的代码开发,涉及到:接口入参、出参开发逻辑,及POJO的各种总结

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代…

完整iOS APP发布App Store上架流程指南

本文章的目的在于教会你如何创建ios的打包证书和如何上架假如你没有任何的打包或上架经验&#xff0c;参考本文有很大的收益。通常创建ios证书和上架&#xff0c;是需要MAC电脑的&#xff0c;本文重点介绍如何在没有mac电脑的情况下&#xff0c;创建mac证书和上架。假如你还没有…

STM32CUBEIDE-简单案例生成

STM32CUBEIDE-简单案例生成 京东链接&#xff1a;https://i-item.jd.com/66584659856.html 生成工程 使用STM32CUBEMX生成例程&#xff0c;这里使用STM32F103C8T6系统板。 新建一个工程&#xff0c;这里有3种新建工程方式。 ● 基于MCU/MPU新建工程 ● 基于ST模块新建工程 ●…