论文阅读:EasySplat: View-Adaptive Learning makes 3D Gaussian Splatting Easy

devtools/2025/1/16 0:41:07/

省流:

  1. 视图自适应分组策略,利用强大的点图先验构建成对点图,从而实现了点云和相机姿态的精确初始化。
  2. 基于KNN的自适应致密化策略,该策略根据每个高斯的相邻椭球体的形状差异动态触发致密化,从而实现了鲁棒的新视图合成。

1.视图自适应组初始化策略

        由oneref方法构建的点图对得出的相机姿态是次优的,这可能会导致新颖视图合成的性能下降。

        为了提高密集视图场景中的相机姿态性能并避免内存开销,我们提出了一种基于图像相似性的自适应分组策略来构建图像对。给定输入图像序列I=\{ I_1,I_2,...,I_n \},我们首先计算每对相邻图像之间的余弦相似度,以量化它们的相似度。余弦相似度定义为:

$\begin{aligned} \sin(I_i,I_{i+1}) & =\frac{I_i\cdot I_{i+1}}{\|I_i\|\|I_{i+1}\|}, \end{aligned}$

        其中I_i \cdot I_{i+1}表示图像I_iI_{i+1}的点积,|I_i||I_{i+1}|是它们各自的范数。接下来,我们计算相邻图像之间的相似性差异,并构建一个差异率数组\Delta

$\Delta_i=|\sin(I_i,I_{i+1})-\sin(I_{i+1},I_{i+2})|\quad i=1,2,\ldots,n-2,$

        其中\Delta _i表示图像I_iI_{i+1}之间的相似度差异。然后,我们从差率数组\Delta中选择k个最大值,最后将图像序列I划分为多个子序列$I_1,I_2,\ldots,I_k,$,其中每个子序列代表一个组G。在每个组G内,将索引为0的视图分配为参考视图,组内的所有其他视图都与该参考视图匹配。这个过程生成一组图像对,记为方程式

$e=(i,j|i=G_p^0,j=G_p^q,p\in[0,k],q\in[1,t)),$

        其中p是组号,G是组集,q是非参考号,ij是点映射号。配对后,所有图像对都被输入到DUSt3R的预训练模型中,以获得每个图像对的成对点图X_{n,n}X_{m,n}及其关联的置信度图C_{n,n}C_{m,n},对于每个图像对e \in E。然后,如下公式所示进行全局优化以获得全局点云和相机姿态。

$\hat{J}^*=\arg\min_{\hat{J},P,\sigma}\sum_{e\in E}\sum_{v\in e}\sum_{i=1}^{HW}C_i^{v,e}\|\hat{J}_i^v-\sigma_eP_eX_i^{v,e}\|$

        通过采用视图自适应分组配对策略,我们为后续的3DGS训练实现了更精确的全局点云和相机姿势。

2.基于KNN的致密化

        每个3D高斯原语G_i(x)由一个平均向量\mu _{3d_i}和一个全3D协方差矩阵\sigma_{3d_i}组成。高斯原语可以写成:

$G_i(x)=e^{-\frac{1}{2}(x-\mu_{3d_i})^T\Sigma_{3d_i}^{-1}(x-\mu_{3d_i})}$

        随后,在训练期间,每100次迭代计算每个高斯原语G_i(x)的平均视图空间位置梯度。如果梯度超过梯度阈值\tau _\rho并且形状超过尺度阈值\tau_S,则高斯G_i(x)将进行拆分:

$\nabla_{\mu_i}L>\tau_p\quad\mathrm{and}\quad\Sigma_{3d_i}>\tau_S$

        虽然ADC允许拆分后的高斯覆盖大部分场景,但一些大高斯倾向于抵制拆分。然而,我们在实际场景中的观察发现,高斯分布是不均匀的,较大的高斯往往出现在较小的高斯附近。受这一现象的启发,我们提出了一种基于K-最近邻(KNN)算法的自适应高斯椭球拆分策略。具体来说,对于每个高斯椭球G_i,我们使用KNN算法来识别n个最接近的相邻高斯$G=\{G_{1},G_{2},\ldots,G_{n}\}$,然后计算这些邻居的平均形状$\bar{\Sigma}_{3d}$

$\bar{\Sigma}_{3d}=\frac{1}{n}\sum_{j=1}^n\Sigma_{3d_j}$

        如果$\Sigma_{3d_{i}}>\bar{\Sigma}_{3d},$,则高斯G_i被归类为大高斯,需要拆分。如图3所示,通过这种拆分方法,有效地划分了大高斯。

图3。基于KNN的致密化。在基于KNN的分裂之后,大高斯被分解成较小的高斯,导致对较小目标的显着改进,例如图中描绘的汽车。


http://www.ppmy.cn/devtools/150794.html

相关文章

Vue2+OpenLayers添加/删除点、点击事件功能实现(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、安装Element-UI 四、代码实现 4.1、添加一个点 4.2、删除所有点 4.3、根据经纬度删除点 4.4、给点添加点击事件 4.5、完整代码 五、Gitee源码 一、案例截图 可以新增/删除标记点,点击标记点可以获取到当前标…

(三)c#中const、static、readonly的区别

在 C# 中,const、static 和 readonly 都是用来定义不可变的值,但它们有一些关键的区别。让我们详细比较一下这三者的用途和特点: 1. const(常量) 编译时常量:const 用于声明常量,其值必须在编…

linux下给某个有线网卡配置DHCP服务(笔记)

最近有需求实现linux下配置有线网卡的dhcp服务,让linux电脑当做软路由使用* 简单记录一下具体的步骤和命令 安装必要包 sudo apt-get install isc-dhcp-server 配置网络接口 sudo nano /etc/default/isc-dhcp-server INTERFACE…

【ANGULAR网站开发】初始环境搭建(SpringBoot)

1. 初始化SpringBoot 1.1 创建SpringBoot项目 清理spring-boot-starter-test,有需要的可以留着 1.2 application.properties 将application.properties改为yaml,个人习惯问题,顺便设置端口8888,和前端设置的一样 server:por…

分布式组件底层逻辑是什么?

分布式组件是指在分布式系统中执行特定功能的模块,通常分布在多个物理节点上,共同协作完成任务。其底层逻辑包括多个方面,从通信和数据管理到一致性和容错设计,具体如下: 1.分布式组件的核心特点 分布性:功…

金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口

目录 一、日志封装及应用(理解) 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用(理解) &…

SQL刷题快速入门(二)

其他章节:SQL刷题快速入门(一) 承接上一章节,本章主要讲SQL的运算符、聚合函数、SQL保留小数的几种方式三个部分 运算符 SQL 支持多种运算符,用于执行各种操作,如算术运算、比较、赋值、逻辑运算等。以下…

使用 WPF 和 C# 将纹理应用于三角形

此示例展示了如何将纹理应用于三角形,以使场景比覆盖纯色的场景更逼真。以下是为三角形添加纹理的基本步骤。 创建一个MeshGeometry3D对象。像往常一样定义三角形的点和法线。通过向网格的TextureCoordinates集合添加值来设置三角形的纹理坐标。创建一个使用想要显示的纹理的 …