72、PaletteNeRF: Palette-based Appearance Editing of Neural Radiance Fields

news2024/11/16 6:43:22

简介

官网:https://palettenerf.github.io/
在这里插入图片描述
以(a)多视图照片为训练输入,重建NeRF并将其外观分解为一组(b)基于3D调色板的色基,实现了©直观和逼真的场景重新着色,在任意视图之间具有3D一致性,如(d)所示,该方法支持各种基于调色板的编辑应用,如光照修改和3D真实感风格迁移

贡献点:

  • 提出一种新的框架,通过将辐射场分解为学习到的颜色基的加权组合来促进NeRF的编辑。
  • 引入了一种具有新颖正则化项的鲁棒优化方案,以实现直观的分解。
  • 该方法实现了实用的基于调色板的外观编辑,使新手用户可以在商用硬件上以直观和可控的方式交互式编辑NeRF。

实现流程

给定一组场景中已知姿态的图像,首先优化一个基于nerf的模型来重建场景的几何形状。然后,根据输入的图像和学习到的场景几何特征提取 N p N_p Np 个调色板。最后,训练一个分割模型,根据提取的调色板将场景外观分解为多个基。分解结果能够驱动各种下游应用,如重新着色、逼真的风格迁移和照明修改。
在这里插入图片描述
给定一组训练图像,首先(a)用现有方法重建场景几何形状并构建调色板,PaletteNeRF(b) 将场景外观分解为多个基于调色板的基和与视图相关的颜色。在基于调色板的基函数、与视图相关的颜色和最终输出上部署了一系列损失

Palette Extraction

从最先进的图像重新着色工作(Efficient palette-based decomposition and recoloring of images via rgbxy-space geometry)中提取的方法作为初始化,该方法从 RGB 空间中聚类图像颜色的 3D 凸包中提取调色板,只需从 NeRF 的深度图中选择所有具有有效深度的训练图像像素,并将它们的颜色连接起来作为输入

其中NeRF使用了Instant-ngp实现,体渲染公式为:
在这里插入图片描述

由于捕获场景的阴影不同,提取方法可能会产生色相似的调色板(例如,包括浅黄色和深黄色的调色板),这导致不切实际的外观编辑,可以根据强度对训练图像的输入颜色进行归一化,以缩小调色板的搜索空间

颜色的强度由其 RGB 值的 L1 范数表示。但是,使用 L1 范数进行归一化会将颜色投影到平面上,这对于 3D 凸包计算来说是一个非常不利的边缘情况。这些问题可以通过用更高阶的规范替换来解决。根据经验,发现从L2归一化图像中提取的调色板在下一个分解阶段工作良好

除了提取的调色板 P ˉ \bar{P} Pˉ 外,还保留了输入像素颜色的混合权重 ω ˉ \bar{\omega} ωˉ,这是根据相同工作的方法计算得出的。这些权重在下一阶段充当额外的监督

Color Decomposition

给定大小为 N p N_p Np 的调色板,模型旨在重建 N p N_p Np 个与视图无关的调色板基,以及一个额外的与视图相关的颜色函数,表示所有与视图相关的阴影,如镜面反射

基于调色板的基对应于提取的调色板,由 x 的两个函数定义

color offset function δ : R 3 → R 3 \delta:R^3 \to R^3 δ:R3R3
weight function ω : R 3 → [ 0 , 1 ] \omega:R^3 \to [0,1] ω:R3[0,1]

观察到真实的图像捕获通常由大量的颜色组成,允许每个点的基本颜色与调色板颜色有偏移。这种设计增加了库的容量,有利于提高复杂场景下的分割质量

同时引入了一个 intensity function I : R 3 → [ 0 , 1 ] R^3 \to [0,1] R3[0,1],由于提取的调色板的归一化,它在所有基于调色板的基之间共享

模型还包含一个与视图相关的 color function s : R 5 → [ 0 , 1 ] 3 s: R^5 \to [0,1]^3 s:R5[0,1]3,它也将视觉方向作为输入
在这里插入图片描述
ω i ( x ) ω_i(x) ωi(x)即和的归一化。将颜色 c 的累加值固定到 [0,1]作为最终输出.在训练过程中优化调色板颜色 P i P_i Pi

网络由三个MLP网络组成:
在这里插入图片描述

Diffuse MLP 预测漫反射颜色 C d ( x ) C_d(x) Cd(x),即所有基于调色板的基的总和

View-Dependent MLP 生成视图相关的颜色 s(x, d)

Palette MLP 预测基于调色板的基的函数值: ω i ( x ) , δ i ( x ) 和 I ( x ) \omega_i(x), δ_i(x) 和 I (x) ωi(x)δi(x)I(x),其中 c d c_d cd 也作为先验输入

由于上图中只显示了一个调色板基,因此网络并行生成 N p N_p Np 个基,并在最后一步中将它们相加。

loss

由于从场景外观中分离多个基是一项相当病态的任务,因此在设计优化方案时需要注意许多问题。开发了一系列损失来调节优化参数,以避免出现诸如局部最小等不良结果

图像重建损失为:
在这里插入图片描述
C r e f C^{ref} Cref为真实值, c ( r ) , c d ( r ) , s ( r ) c(r), c_d(r), s(r) c(r)cd(r)s(r) 根据公式1中的体渲染方程计算。第二项也可以被认为是 c d ( r ) c_d(r) cd(r) 和调色板基之和之间的 L2 距离

与视图相关的颜色函数 s(x, r) 中添加了一个正则化损失 L s L_s Ls,以防止 s 主导外观并将所有基于调色板的基压为 0 的特殊情况
在这里插入图片描述
虽然该模型使用颜色偏移来偏移基础颜色,但有必要限制混合权重和颜色偏移,以避免极端解决方案

采用图像软分割方法中的稀疏性损失 L s p L_{sp} Lsp 和颜色偏移量损失 L o f f s e t L_{offset} Loffset
在这里插入图片描述
稀疏性损失的目的是使混合权重更稀疏(例如,将每个点x分割到更少的基),这最终将通过增加颜色偏移量来增加基的容量。

色差损失直接抑制了色差的大小,防止它们与调色板偏离过大

直观上,这两种损失充当了两种对抗角色,在它们之间找到良好的平衡将导致基颜色合理、分割结果整齐

在实验中观察到,这两个损失可能会导致苛刻的分割结果,这将极大地影响后续编辑的质量

引入了一种新的3d感知平滑损失,以基于NeRF的输出来平滑权重函数
在这里插入图片描述
ω = ω 1 . . . N p \omega = \omega_1 ... N_p ω=ω1...Np,ε 是从高斯分布中采样的随机位置偏移量,ξ(·) 是两点之间的相似度,调整双边滤波器中使用的高斯核,并定义相似度函数为
在这里插入图片描述
σ x σ_x σx σ c σ_c σc 为平滑参数,diffuse color c d c_d cd 用于平滑损失,但在训练过程中切断了它们的梯度

添加了两个额外的损失,这些损失包含了来自调色板提取模型的监督
在这里插入图片描述
总损失为:
在这里插入图片描述

Appearance Editing

根据模型预测的基础,可以简单地调整函数的值以支持外观编辑,如重新着色和逼真的风格迁移。

基函数是在整个场景上定义的,它们不直接支持局部编辑(例如,编辑场景中的单个对象)

因此,从最先进的基于图像的分割模型(如Lang-Seg)预测的语义特征图中学习3D特征场,并使用特征场来指导编辑,然而,直接向模型中添加高维语义特征可能会降低其效率,使其无法实时编辑。从场景中捕获的物体往往局限在一个小集合中(例如,在室内场景中,椅子、墙壁和地板是最有可能出现的物体),从场景中提取的语义特征往往是整个特征空间的有限子集。因此,在将提取的特征输入网络之前,应用PCA将其压缩到较低的维度(在实验中为16)

实验

geometry learning stage:除了添加Sun等人引入的逐点rgb损失外,保留所有原始配置。以使密度场更稀疏并避免飞子

segmentation learning stage:修复前100个epoch中提取的调色板,然后释放调色板并移除 L w e i g h t L_{weight} Lweight 以微调模型。由于平滑损失 L s m L_{sm} Lsm 使用 diffuse color c d c_d cd 来计算平滑权值,因此在前30个迭代阶段不使用 L s m L_{sm} Lsm,以避免未收敛的 c d c_d cd 作为输入

实验工作于 NVIDIA RTX 3090 GPU上,采用Adam 优化器,学习率为0.01,迭代了300-600个epochs,总体运行时间在2小时以内。

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

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

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

相关文章

人工智能与Python的渊源

人工智能起源与发展 文章目录人工智能起源与发展前言一、达特茅斯会议与人工智能起源二、人工智能发展的高峰与低谷Python与人工智能构建Python人工智能编程环境1.Python版本2.Anaconda编程环境数据处理常用算法2.1傅里叶变换2.1.1傅里叶分析的由来2.1.2傅里叶变换原理及应用傅…

MODBUS协议下,组态王与S7-1200能否建立无线通讯?

MODBUS协议下,想要组态王与S7-1200之间的无线通讯其实很容易。可采用了西门子PLC专用无线通讯终端DTD434MC,作为实现无线通讯的硬件设备,使用简单方便,不必深入理解 MODBUS 协议细节,无需更改网络参数直接替换有线连接…

波士顿房价预测—随机梯度下降法优化

根据我上一篇关于波士顿房价预测一文可以知道,如果使用梯度下降法,需要将所有的样本对梯度的贡献取平均,根据梯度更新参数。 但是面对海量样本的数据集,如果每次计算都使用全部的样本来计算损失函数和梯度,性能会很差&…

如何创建商用照明 App SDK 应用?

商用照明 App SDK 是专为照明行业的物联网应用提供的移动端开发工具。通过商用照明 SDK,大家可以形成完整的商用照明物联网控制系统,多协议兼容,完美满足绿色建筑的设备管理及能源管理要求。 什么是涂鸦商用照明? 涂鸦商用照明解…

python基础语法(1)

专栏:python 每日一句:人生,无非只有三天,昨天,今天,明天。昨天很长,说不清有多少天,但不管有多少天,不管是受到挫折,还是取得辉煌,都只能代表过去…

Feign

文章目录Http客户端Feign1、Feign替代RestTemplate1.1、RestTemplate方式调用存在的问题1.2、Feign介绍1.3、定义和使用Feign客户端2、Feign的自定义配置2.1、修改日志级别3、Feign的性能优化3.1、Feign的性能优化-连接池配置4、Feign的最佳实践4.1、方式一(继承&am…

TypeScript类型 : any,unknown

1.any类 在某些情况下,我们确实无法确定一个变量的类型,并且可能它会发生一些变化,这个时候我们可以使用any类型(类似 于Dart语言中的dynamic类型)。 any类型有点像一种讨巧的TypeScript手段: 1.我们可以…

【23届秋招总结】本科小学弟成功签约滴滴后端开发offer

大家好!我是路飞,最近工作太忙啦,断更很久,今天给大家分享一位本科23届小学弟的秋招历程~ 在今年整体上就业困难,各大公司校招HC收缩的情况下,这位小学弟也历经坎坷成功拿到了滴滴后端开发岗位…

【安卓学习笔记】安卓的事件处理

安卓提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理。 基于监听的事件处理 基于监听的事件处理一般包含三个要素,分别是: Event Source(事件源):事件发生的场所,通常是各个…

c++11 标准模板(STL)(std::forward_list)(六)

定义于头文件 <forward_list> template< class T, class Allocator std::allocator<T> > class forward_list;(1)(C11 起)namespace pmr { template <class T> using forward_list std::forward_list<T, std::pmr::polymorphic_…

动态内存管理详解(malloc、calloc、realloc)

文章目录 一、什么是动态内存 二、为什么要存在动态内存分配 三、动态内存函数的介绍 3、1 malloc和free的介绍 3、2 calloc的介绍 3、3 reallco的介绍 四、常见的动态内存错误 4、1 对NULL指针的解引用操作 4、2 对动态开辟空间的越界访问 4、3 对非动态开辟内存使用free释放 …

rcu锁原理以及rcu example学习

rcu参考资料&#xff1a; https://airekans.github.io/c/2016/05/10/dive-into-liburcu https://lwn.net/Articles/262464/ https://cloud.tencent.com/developer/article/1684477 https://www.cnblogs.com/LoyenWang/p/12681494.html userspace rcu: https://github.com/urcu…

PHP 过滤器

PHP 过滤器用于验证和过滤来自非安全来源的数据&#xff0c;比如用户的输入。什么是 PHP 过滤器&#xff1f;PHP 过滤器用于验证和过滤来自非安全来源的数据。测试、验证和过滤用户输入或自定义数据是任何 Web 应用程序的重要组成部分。PHP 的过滤器扩展的设计目的是使数据过滤…

目标检测、实例分割、旋转框样样精通!详解高性能检测算法 RTMDet

1. 简介 近几年来&#xff0c;目标检测模型&#xff0c;尤其是单阶段目标检测模型在工业场景中已经得到广泛应用。对于检测算法来说&#xff0c;模型的精度以及运行效率是实际使用时最受关注的指标。因此&#xff0c;我们对目前的单阶段目标检测器进行了全面的改进&#xff1a…

超参数、划分数据集、

目录1.超参数(hyperparameters)参数(Parameters)&#xff1a;&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;...超参数&#xff1a;能够控制参数W,b的参数&#xff0c;是在开始学习之前设置的参数。比如&#xff1a;学习率、梯度下降循环的数量#iterations、隐…

【阶段三】Python机器学习23篇:机器学习项目实战:XGBoost分类模型

本篇的思维导图: XGBoost算法可以说是集成学习方法中的王牌算法。在著名的数据挖掘比赛平台Kaggle上,众多获胜者都使用了XGBoost算法,它在绝大多数回归问题和分类问题上的表现都十分不错。 XGBoost算法的核心思想 XGBoost算法在某种程度上可以说是GBDT算法…

蓝桥杯:超级质数

目录 题目链接 问题描述 答案提交 本题答案为&#xff1a;373。 思路&#xff1a; 模拟代码(Java)&#xff1a; 问题描述 如果一个质数 P 的每位数字都是质数, 而且每两个相邻的数字组成的两位 数是质数, 而且每三位相邻的数字组成的三位数是质数, 依次类推, 如果每相 邻…

【Node.js实战】一文带你开发博客项目之日志(文件读写、stream流、写日志)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

《码出高效:java开发手册》八 -单元测试

前言 这章内容主要是讲单测&#xff0c;单元就是指一个程序分的最小单位&#xff0c;一般是类或者方法&#xff0c;在面向对象编程里&#xff0c;一般就是认为方法是最小单位&#xff0c;单测是程序功能的基本保障&#xff0c;在软件上线前非常重要的一环 正文 单测的好处&a…

_Linux多线程-死锁Linux线程同步篇

文章目录1. 死锁死锁四个必要条件避免死锁避免死锁算法&#xff08;了解&#xff09;2. Linux线程同步线程同步出现的背景条件变量同步概念与竞态条件条件变量函数1. 初始化2. 销毁3. 等待条件满足4. 唤醒等待小结测试实验1. 死锁 死锁是指在一组进程中的各个进程均占有不会释…