当前位置: 首页 > news >正文

Mip-splatting

论文名称:Mip-Splatting: Alias-free 3D Gaussian Splatting

作者:Zehao Yu      Anpei Chen     Binbin Huang      Torsten Sattler      Andreas Geiger

论文地址:arxiv.org/pdf/2311.16493

Motivation:

经典3DGS训练的时候会学出来许多很薄的高斯,但在屏幕空间里再用2D dilation把能量铺开,在训练分辨率下看不到问题;但是一旦改变采样率就会出现 zoom-in、zoom-out、高频振铃等伪影。作者把这个问题归结到了:

                                       没有3D频率约束+2D dilation不符合物理积分

3D频率约束:

针孔模型里面,在相机深度为d的位置,一个像素对应的世界尺度大概是T=d/f(f是相机焦距)。

所以相机只能可靠的看到v_{max}=\frac{1}{2T}\frac{f}{d}成正比的世界频率

对于单个的Gaussian 不管是做傅里叶变换还是高斯,越窄(Σ的特征值越小)就代表频谱越宽。更精确地说:

沿着某个特征向量e的空间标准差时 \sigma=\sqrt{\lambda}(λ是该方向的特征值),这个方向上的有效带宽大致与 \frac{1}{\sigma}成正比

  • 所以对于针一样的Gaussian:空间域很尖-->频域极宽,包含一堆超过 v_{max}的高频

  • 而对于片状或者薄壳结构:在较薄的法向上也是同理的,也会带来超带宽

经典的3DGS的训练目标是图像域的重建损失(MSE/LPIPS等),没有对3D模型在世界域的频率进行限制,

不论是在边缘处不断地 densification&split 还是 把相近的Gaussian染上交错的颜色,都会导致超带宽的发生

所以标准的3DGS训练会导致学出比T还要精细的结构,结果就是:

在训练视角下,看可能起来还行

但缩放分辨率后,超出采样带宽的细节就会以亮度漂移、锯齿、闪烁的方式表现出来

2D dilation不符合物理积分:

理想的针孔成像模型中,一个像素p的读数不是在像素中心取样,而是对其面积进行积分:

I[p] = \iint_{\Omega_p} L(u,v) \, du \, dv \Omega_p是p的足迹

由采样定理得知的是,当一个连续信号离散化时,如果直接在中心点取样,就会把超过带宽的高频混叠到低频,就会表现出相应的锯齿、闪烁、亮度漂移。

而在传统的3DGS中,是直接进行了dilation,也就是 

也就是人工将屏幕核放大。但这不是面积积分

Methods:

对于3D频率问题

做法是给每一3D高斯与一个各向同性的3D低通高斯做卷积。两个高斯经过卷积仍然是高斯,等价于给协方差加上一个各项同性项,并用一个行列式比值做能量归一。

具体来说:

先寻找最大采样率,对于第k个高斯中心 p_k,在训练集的N个相机里取可见视角的v的最大值为 \hat v_{k}

之后进行低通卷积

这样虽然协方差变“胖”,但是前面的行列式比值项保证了整体能量的守恒

这个卷积是怎么做的?

可以从一维进行拓展到高维,实际结果是均值相加,方差/协方差相加

简单的做法是推导高斯的特征函数,在相应的协方差矩阵后加上A(Σ的分解上三角矩阵)

令X=μ+AU U服从I的正态分布,之后进行简单的指数运算就可以得到

在高维下,结果依然成立

对于2D dilation 问题

其中s的单位是$pixel^2     I是2*2单位阵

其实整体思路是一致的,前面的行列式比值项同样是为了保证能量守恒

后面是使用一个同位置的标准差为0.3~0.5的各向同性高斯(近似1px的盒滤)与投影到屏幕上的2D Gaussain做卷积运算,来近似真实的像素面积积分,这样达到更精准的目的

Train

Train上简单的来说也就只是将传统的2D dilation更换为像素足迹积分,并周期性的进行3D频率限制

Result

就是通过这样简单的操作,却取得了优秀的效果

http://www.dtcms.com/a/354464.html

相关文章:

  • 在docker 中拉取xxl-job以及配置数据库
  • 【Linux】Linux基础开发工具从入门到实践
  • Redis 哨兵(Sentinel)全面解析
  • JavaSE丨集合框架入门:从0掌握Collection与List核心用法
  • Two Knights (数学)
  • Feign整合Sentinel实现服务降级与Feign拦截器实战指南
  • uni-app 网络请求与后端交互完全指南:从基础到实战
  • 智能养花谁更优?WebIDE PLOY技术与装置的结合及实践价值 —— 精准养护的赋能路径
  • 【LeetCode】29. 两数相除(Divide Two Integers)
  • PhotoshopImageGenerator:基于Photoshop的自动化图像数据集生成工具
  • C# 操作 DXF 文件指南
  • WAF对比传统防火墙的优劣势
  • 从Cgroups精准调控到LXC容器全流程操作​:用pidstat/stress测试Cgroups限流,手把手玩转Ubuntu LXC容器全流程​
  • 打破存储局限:CS 创世 SD NAND 如何优化瑞芯微(RK)与北京君正平台的贴片式 SD 卡性能
  • 横扫SQL面试——流量与转化率分类
  • 机器人电源电感的认证和认证细节,知多少?
  • Spring Boot 整合 SSE, http长连接
  • odoo打印新解
  • lesson48:Ubuntu下Python与三大数据库实战:MySQL、MongoDB、Redis全攻略
  • 基于uni-app的iOS应用上架,从打包到分发的全流程
  • 算法题打卡力扣第15题:三数之和(mid)
  • 本地构建的 Docker 镜像迁移到另一台电脑上运行
  • Python自动化测试完整教程:pytest + selenium实战
  • Windows 环境下搭建移动端自动化测试环境(JDK + SDK + Node.js + Appium)
  • 【Rust】 4. 函数与闭包
  • React过渡更新:优化渲染性能的秘密
  • 在Excel和WPS表格中隔一行插入一个空白行
  • HarmonyOS 中的 sharedTransition:实现流畅的页面过渡动画
  • 从数字到价值:ESG评级的深层变革
  • 鸿蒙 5.1 深度解析:ArkUI 4.1 升级与分布式开发新范式