Bootstrap

StyleGaussian: Instant 3D Style Transferwith Gaussian Splatting 论文解读

目录

一、概述

二、相关工作

1、辐射场 

2、3D编辑

3、风格迁移

三、StyleGaussian

1、特征嵌入

2、风格迁移

3、解码

四、实验 

1、不同backbone下的量化和定性指标

2、解码器设计上的测试

3、内容损失平衡

4、风格平滑插值


一、概述

        提出了StyleGaussian,一种新的3D风格化迁移技术,允许每秒10fps的速度,将任何风格即时传输到3D场景中。利用3DGS执行风格迁移,不会影响实时渲染能力和多视图一致性。

(1)提出了StyleGaussian,一种新颖的三维风格化迁移手段。

(2)设计了一种有效的特征渲染策略,可以在渲染高维特征中,将学习到的特征嵌入到冲减的三维高斯特征中。

(3)设计了一个基于KNN的3D CNN,可以在不影响多视图一致性的同时,解码3DGS格式为RGB。

b73d8ce85ea14ac3808e6cb47e4badc8.png
Introduction

二、相关工作

1、辐射场 

        辐射场是近年来在3D场景表示方面取得重大进展的技术。它们是一种函数,可以为任意3D坐标分配辐射(颜色)和密度值。像素的颜色是通过体积渲染聚合3D点的辐射而得到的。

        辐射场在视觉和图形学的多个领域都有广泛应用,特别是在视图合成 、生成模型和表面重建等方面。它们可以通过多种方式实现,如MLP 、分解张量 、哈希表和体素等,许多研究都致力于提高它们的质量或渲染和重建速度 。其中,3DGS 因其快速重建能力、实时渲染性能和出色的重建结果而脱颖而出。它使用多个显式参数化的3DGS来建模辐射场,依靠光栅化而不是光线追踪来实现实时渲染。本文的工作就是建立在3DGS的优势之上,以实现沉浸式的3D编辑体验。

2、3D编辑

        传统的3D表示如网格或点云,编辑它们的外观通常比较简单,因为网格有UV贴图,点对应图像中的像素。但是,辐射场编辑很有挑战,因为它们被隐式地编码在神经网络或张量的参数中。

        因此,之前的研究采用基于学习的方法来编辑辐射场,通过图像、文本或其他形式的用户输入进行引导,包括变形、外观变化、移除、重照明和修复等。

        这些方法大多依赖于测试时优化策略,需要对每次编辑进行耗时的优化过程。另一方面,一些方法以前馈方式实现3D场景的编辑。但是,这些方法的编辑速度仍然远远达不到交互速度。相比之下,我们的方法可以即时编辑场景的外观。

3、风格迁移

        神经风格迁移(Neural Style Transfer)旨在渲染一个新的图像,将一个图像的内容结构与另一个图像的风格模式融合在一起。

        早期的研究依赖于优化方法来对齐风格图像的VGG特征。后来的方法引入了前馈网络来近似这个优化过程,大大提高了风格迁移的速度。

        更近期的工作将风格迁移扩展到3D领域,尝试对点云或网格进行风格化。但这些方法在渲染能力上通常落后于辐射场(radiance fields)。因此,有更多的研究集中在对辐射场进行风格化。一些方法通过优化实现了辐射场的风格迁移,提供了视觉上令人印象深刻的风格化,但需要耗时的优化过程,且泛化能力有限。另一些方法如HyperNet和StyleRF采用了前馈方式,但仍面临渲染速度慢或多视图一致性差的问题。

        相比之下,本文提出的StyleGaussian方法可以实现即时的风格迁移和实时渲染,同时保持严格的多视图一致性。它通过设计高效的特征渲染策略和基于KNN的3D CNN解码器来实现这一目标。

三、StyleGaussian

        首先给定一个重建好的3DGS,然后将VGG features嵌入到3DGS(e),然后给定一个style 图像,将当前的3DGS(e)transfer到3DGS(t),之后用一个基于KNN的3D CNN来解码一个带有风格的3DGS。

        对于一般的3DGS参数都应该是eq?%5Cmathbb%7BG%7D%3D%5Cleft%20%5C%7B%20g_p%3D%28%5Cmu_p%2C%5CSigma_p%2C%5Csigma_p%2Cc_p%29%20%5Cright%20%5C%7D_p%5EP,其中eq?c_p%20%5Cin%5Cmathbb%7BR%7D%5E3,对于最初的输入3DGS参数也不例外。

        那么对于中间两步,特征嵌入和风格迁移中这个3DGS参数就有所变化,因为我们只改变颜色,而不改变几何结构,所以后续的特征eq?f_p%20%5C%20or%20%5C%20f_p%5Et其实就可以看做eq?c_p这个参数。

        特征嵌入输出即eq?e%28%5Cmathbb%7BG%7D%29%3D%5Cmathbb%7BG%7D%5Ee%3D%5Cleft%20%5C%7B%20g_p%5Ee%3D%28%5Cmu_p%2C%5CSigma_p%2C%5Csigma_p%2Cf_p%29%20%5Cright%20%5C%7D_p%5EP

        风格迁移输出即eq?t%28%5Cmathbb%7BG%7D%5Ee%2CI%5Es%29%3D%5Cmathbb%7BG%7D%5Et%3D%5Cleft%20%5C%7B%20g_p%5Et%3D%28%5Cmu_p%2C%5CSigma_p%2C%5Csigma_p%2Cf_p%5Et%29%20%5Cright%20%5C%7D_p%5EP

        最终解码输出即eq?d%28%5Cmathbb%7BG%7D%5Et%29%3D%5Cmathbb%7BG%7D%5Es%3D%5Cleft%20%5C%7B%20g_p%5Ee%3D%28%5Cmu_p%2C%5CSigma_p%2C%5Csigma_p%2Cc_p%5Es%29%20%5Cright%20%5C%7D_p%5EP

812d5b4f5e064f09a544858e22d51af6.png
Framework

1、特征嵌入

        输入多视角图像利用VGG网络的中间层进行提取特征,得到二维图像的VGG特征,并将VGG特征嵌入到一个辐射场中。

        这一步的目的就是得到了一个eq?%5Cleft%20%5C%7B%20f_p%20%5Cright%20%5C%7D_p%5EP特征,也就是3DGS参数基于VGG监督后的特征,包含了3DGS本身的信息,也有多视图的一致性。

        给定一个3DGS分布,然后分配到每个像素得到每个像素的3DGS参数eq?g_p,然后给定一个可学习特征参数eq?f_p或者写做eq?f_i,其中F为渲染得到的高维特征图。

de712a6fd9ee4792a8ab337412a057f8.png

        利用VGG网络的目的是,监督可学习参数 eq?f_i满足大eq?F越来越接近VGG得到的特征eq?F_%7Bgt%7D,目标函数为一个L1 loss。

                                        eq?%5Cleft%20%5C%7B%20f_p%20%5Cright%20%5C%7D_p%5EP%3Dargmin_%7B%5Cleft%20%5C%7B%20f_p%20%5Cright%20%5C%7D_p%5EP%7D%20%5Csum%7CF-F_%7Bgt%7D%7C

        对于VGG网络的解释:使用了VGG网络的中间层特征(ReLU3_1和ReLU4_1层),应该是直接将多视图输入到VGG网络,然后输出这两层信息,但由于这两层输出out_channel是256维和512维,耗费计算资源和内存,所以论文中渲染了一个低维特征(32维),然后通过仿射变换T()将低维特征map到高维特征F上。

        其中低维特征的解释不太清楚,他只提到用了一个高效的渲染策略,没有看代码,可能是直接将最后一层输出改为32channels。

        对于仿射变换就是设计了两个可学习的参数A和b。

                        ​​​​​​​        27f6a371ce8a4c5d9e76fbf9116c5b47.png

2、风格迁移

        这里用到了一个AdaIN算法,来实现无参数的零样本训练的风格迁移。

        风格迁移的目的就是得到一个注入参考图像eq?I%5Es风格迁移后的特征信息eq?%5Cleft%20%5C%7B%20f_p%5Et%20%5Cright%20%5C%7D_p%5EP

        下面为计算公式,其中eq?%5Csigma%2C%5Cmu都是通道方向的均值和标准差,eq?F%5Es是输入参考风格化的图像eq?I%5Es经过VGG得到的特征。

        ​​​​​​​        ​​​​​​​        5f3b19fa310e41b6b270989d81ed8d18.png

3、解码

        ​​​​​​​        ​​​​​​​        

a45e3117417d4576ba43921d1b6b7895.png
Illustation of the KNN-
based convolution

        这一步的重点在于使用了KNN-based的卷积。

        目的是通过特征信息eq?%5Cleft%20%5C%7B%20f_p%5Et%20%5Cright%20%5C%7D_p%5EP来解码出3DGS参数的球谐函数eq?c_p%5Es

        具体来说,首先设计一个3D CNN作为解码器,将风格迁移后的eq?%5Cleft%20%5C%7B%20f_p%5Et%20%5Cright%20%5C%7D_p%5EP解码为RGB,解码器在一个滑动窗口内处理每一个GS的KNN,由多层构成,最终输出通道数为3,对应最终的RGB值。

        对于每个GS eq?g_p%5Et(展开eq?g_p%5Et%3D%28%5Cmu_p%2C%5CSigma_p%2C%5Csigma_p%2Cf_p%5Et%29),定义每个KNN为eq?%5Cleft%20%5C%7B%20g_k%5Et%20%5Cright%20%5C%7D_k%5EK,滑动窗口的第一层输入就是eq?%5Cleft%20%5C%7B%20f_k%5Et%20%5Cright%20%5C%7D_k%5EK。这句话我的理解就是,在第一层KNN中,肯定由多个聚类中心,那么这个k就是某一个聚类中心,他的输入就是相对应的最靠近的一组GS其中的eq?f_p%5Et特征集合eq?%5Cleft%20%5C%7B%20f_k%5Et%20%5Cright%20%5C%7D_k%5EK

        因为KNN引入到一个3D CNN中,那么对于神经网络来说也一定有权重和偏置,那么第一层的KNN-based CNN输出之后,就得到这个eq?f_p%5E%7Bout%7D特征,其中eq?%5Cphi是sigmoid激活函数。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        0121683a59b6418da29be53e096cb951.png

        最后经过了多层 KNN-based CNN结构,最后一层channels数为3,输出得到eq?c_p%5Es集合。

        对于这一部分的监督,利用内容损失eq?L_c和风格损失eq?L_s(公式均为MSE)来计算。

                                ​​​​​​​        ​​​​​​​        ​​​​​​​       eq?L%3DL_c+%5Clambda%20L_s

四、实验 

1、不同backbone下的量化和定性指标

affb1abf3bba4d8fafaecc4d57827e9b.png
Qualitative results

08d879f67d5c4e40a47285f3ef5561d7.png
Quantitative results

2、解码器设计上的测试

        pointnet很显然,关注结构的解码没有意义,因为要解码的是颜色。

        mlp很通用,可以处理,但是效果很拉。

4de584470302470eba8783aed0e19e34.png
Decoder design

3、内容损失平衡

        这个λ就是风格损失的占比,越大越关注于风格。

8ebc2462b2e245ee9a151177eb8d8e62.png
Content-style balance

4、风格平滑插值

        这个实现不同风格之间的平滑转换。

        他的做法是微调解码器,而不是从头训练,在一个已经训练好A风格的解码器下,再次训练另一个B风格的解码器。

e723a73f97464ba4be51858f28e9663d.png

3981db77c89b4e559998fd8dd02f1f7b.png
Decoder initialization

参考项目:StyleGaussian: Instant 3D Style Transfer with Gaussian Splatting 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;