3D Gaussian Splatting as MCMC 与gsplat中的应用实现
3D高斯泼溅(3D Gaussian splatting)自2023年提出以后,相关研究paper井喷式增长,尽管出现了许多改进版本,但依旧面临着诸多挑战,例如实现照片级真实感、应对高存储需求,而 “悬浮的高斯核” 问题就是其中之一。浮动高斯核通常由输入图像中的曝光或颜色不一致引发,也可能源于运动恢复结构(SfM)过程中产生的离群值。此外,严格意义上的高斯泼溅更偏向于 3D 重建而非新视图合成,它仅能为输入图像序列覆盖良好的场景部分生成新视角。
本文将聚焦于 3D 高斯泼溅的一个实际应用 ——高斯泼溅中的物体插入,并详细解读论文《3D Gaussian Splatting as Monte Carlo Markov Chain》,详见 3dgs-mcmc/,进一步展示MCMC与3dgs结合在gsplat第三方工具中的应用。
0. 3DGS MCMC 简介
3DGS 作为 MCMC 论文的前提如下:
- ADC 的概率概念:尽管自适应密度控制 (ADC) 是一种有效的致密化和修剪策略,但它缺乏坚实的数学基础。MCMC 引入了一个概率框架来解决这一缺陷。
- 收敛与探索: MCMC 论文并不单纯依赖基于优化的方法,而是将优化与探索相结合,从而能够找到问题的多个最优解决方案。
- 将死高斯变为活高斯: ADC 启发式方法被通过重新定位死高斯来实现的状态转换所取代。
- 引入正则化:论文还向损失函数引入了两种正则化:尺度正则化和不透明度正则化。

图 1:3DGS 与 3DGS + MCMC 的比较
本文从回顾 MCMC 开始,逐步引入到3DGS中。
1. MCMC概念回顾
MCMC 抽样是一种众所周知的近似算法,在机器学习中,广泛应用于概率建模。MCMC 的全称是蒙特卡洛马尔可夫链。蒙特卡洛和马尔可夫链是两种不同的算法。
有时,由于诸如空间复杂性、高维性等原因,一些积分和很难直接计算。在这些情况下,我们会对其进行近似——要么采用采样方法,比如MCMC,要么使用参数化分布,就像在变分推断中所做的那样。
例如,在贝叶斯统计中,计算后验分布需要对模型参数的所有可能值进行积分,并由先验和观测数据的似然性加权。随着参数数量的增加或似然函数变得复杂,这种积分很快就会变得难以处理。

图 2:先验、似然和后验
从上图可以看出,先验、后验和似然在数学上的含义。
2. 3DGS中先验/似然与后验的引入
在3D 高斯泼溅 (3DGS) 的贝叶斯视图中,可以将模型参数(所有高斯泼溅的位置、大小、颜色、不透明度等)解释为随机变量。

图 3:3DGS 中的先验、似然和后验
- 这些参数的先验分布p(θ)编码了在看到实际图像数据之前的任何假设或偏好。例如,可能希望高斯函数的大小不受限制,或者它们的颜色位于合理范围内,或者总的 splats 数量不会激增,等等。
- 可能性p(Data|θ) 衡量了特定的splats 配置参数θ对实际观察到的图像(训练视图)的解释程度。
- 后验分布为:
换句话说,后验分布就是基于数据的初始假设,然后如何通过观察到的图像数据进行更新。
3. 单纯融合 VS 融合+探索参数空间
自适应密度控制 (ADC) 是一种解决问题的启发式方法,但并未完全优化,并且缺乏坚实的数学基础。MCMC 通过为致密化和修剪策略提供更强大的数学基础来解决相同的核心问题。
具体来说,它通过将这些策略概念化为采样过程,为这些策略引入了一个概率框架。
“采样是一种通过研究大群体的一小部分来估计其整体特征的方法。”
例如,假设需要找到一条曲线下的面积(如下图所示)。通过积分计算它可能需要处理一个复杂的公式。相反,使用蒙特卡罗方法,则可以在曲线边界的矩形内随机散布红点。那么使用的点越多,估计就越准确。通过计算曲线下的点与矩形中总点数的比例,就可以确定曲线下的面积,因为这个比例对应于矩形面积的比例。”
图 4:蒙特卡洛估计曲线下面积
3DGS 的一般方法是:
- 寻找单一最佳解决方案: 3DGS 遵循一种简单的优化方法。它初始化高斯函数,然后通过计算渲染图像和真实图像之间的 L1 损失来优化其配置。此损失用于更新高斯函数。然而,这种方法往往会产生单一最佳解决方案,并且可能会陷入局部最小值的问题。
MCMC 提出了一种不同的视角,它不是专注于寻找单一的最佳解决方案,而是旨在通过从后验分布中抽样来确定一系列能够同样好地解释数据的配置。
4. 用于概率 3DGS 建模的 MCMC
MCMC 引入了一个后验分布 G(θ),它表示在给定训练数据的情况下,高斯参数配置 g (位置、颜色、形状等)正确的概率。换句话说:
这里,
和
对应相同的配置。
这种分布G(θ) 的设计使得
能够很好表示场景的配置将具有较高的值 G(θ),而不能很好表示场景的配置将具有较低的G(θ)值。
通过将问题转化为从分布中进行抽样,可以使用马尔可夫链蒙特卡罗 (MCMC) 方法(如随
相关文章:
3D Gaussian Splatting as MCMC 与gsplat中的应用实现
3D高斯泼溅(3D Gaussian splatting)自2023年提出以后,相关研究paper井喷式增长,尽管出现了许多改进版本,但依旧面临着诸多挑战,例如实现照片级真实感、应对高存储需求,而 “悬浮的高斯核” 问题就是其中之一。浮动高斯核通常由输入图像中的曝光或颜色不一致引发,也可能…...
C++初阶-C++的讲解1
目录 1.缺省(sheng)参数 2.函数重载 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 3.5.指针和引用的关系 4.nullptr 5.总结 1.缺省(sheng)参数 (1)缺省参数是声明或定义是为函数的参数指定一个缺省值。在调用该函数是…...
STM32_USB
概述 本文是使用HAL库的USB驱动 因为官方cubeMX生成的hal库做组合设备时过于繁琐 所以这里使用某大神的插件,可以集成在cubeMX里自动生成组合设备 有小bug会覆盖生成文件里自己写的内容,所以生成一次后注意保存 插件安装 下载地址 https://github.com/alambe94/I-CUBE-USBD-Com…...
STM32 的编程方式总结
🧱 按照“是否可独立工作”来分: 库/方式是否可独立使用是否依赖其他库说明寄存器裸写✅ 是❌ 无完全自主控制,无库依赖标准库(StdPeriph)✅ 是❌ 只依赖 CMSIS自成体系(F1专属),只…...
MFC工具栏CToolBar从专家到小白
CToolBar m_wndTool; //创建控件 m_wndTool.CreateEx(this, TBSTYLE_FLAT|TBSTYLE_NOPREFIX, WS_CHILD | WS_VISIBLE | CBRS_FLYBY | CBRS_TOP | CBRS_SIZE_DYNAMIC); //加载工具栏资源 m_wndTool.LoadToolBar(IDR_TOOL_LOAD) //在.rc中定义:IDR_TOOL_LOAD BITMAP …...
vllm作为服务启动,无需额外编写sh文件,一步到位【Ubuntu】
看到网上有的vllm写法,需要额外建立一个.sh文件,还是不够简捷。这里提供一种直接编写service文件一步到位的写法: vi /etc/systemd/system/vllm.service [Unit] DescriptionvLLM Service Afternetwork.target[Service] Typesimple Userroot…...
大厂机考——各算法与数据结构详解
目录及其索引 哈希双指针滑动窗口子串普通数组矩阵链表二叉树图论回溯二分查找栈堆贪心算法动态规划多维动态规划学科领域与联系总结 哈希 学科领域:计算机科学、密码学、数据结构 定义:通过哈希函数将任意长度的输入映射为固定长度…...
hive中的特殊字符
1、UTF-8 编码的非断空格(对应 Unicode 码点为 \u00A0) 这种空格在网页中常见(HTML 中的 ),用于阻止文本在换行时被分割。由于它不是标准空格(ASCII 20),使用TRIM 函数无法直接…...
10:00开始面试,10:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
基于ueditor编辑器的功能开发之给编辑器图片增加水印功能
用户需求,双击编辑器中的图片的时候,出现弹框,用户可以选择水印缩放倍数、距离以及水印所放置的方位(当然有很多水印插件,位置大小透明度用户都能够自定义,但是用户需求如此,就自己写了…...
fabric test-network启动
//按照这个来放,免得出错 mkdir -p $GOPATH/src/github.com/hyperledger cd $GOPATH/src/github.com/hyperledger # 获取fabric-samples源码 git clone https://github.com/hyperledger/fabric-samples.git export FABRIC_LOGGING_SPECdebug cd fabric-samples # …...
【CSS基础】- 02(emmet语法、复合选择器、显示模式、背景标签)
css第二天 一、emmet语法 1、简介 Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法。 快速生成HTML结构语法 快速生成CSS样式语法 2、快速生成HTML结构语法 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab…...
centos7系统搭建nagios监控
~监控节点安装 1. 系统准备 1.1 更新系统并安装依赖 sudo yum install -y httpd php php-cli gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel wget unzip sudo yum install -y epel-release # 安装 EPEL 仓库 sudo yum install -y automake autoconf lib…...
docker的几种网络模式
Bridge(桥接)模式 默认网络模式:Docker的默认网络模式是Bridge模式。工作原理:Docker在宿主机上创建一个虚拟的桥接网络,每个容器在启动时会从这个桥接网络中分配一个IP地址。容器之间可以通过这个桥接网络进行通信。…...
Android 中Intent 相关问题
在回答 Intent 问题时,清晰区分其 定义、类型 和 应用场景。以下是的回答策略: 一、Intent 的核心定义 Intent 是 Android 系统中的 消息传递对象,主要用于三大场景: 2. 隐式 Intent(Implicit Intent) 三、…...
MCP 服务搭建与配置学习资源部分汇总
MCP 服务搭建与配置学习资源汇总 目录 图文教程GitHub 示例项目视频课程不同开发语言实现案例 图文教程 Cherry Studio 配置 MCP 服务教程 – 介绍如何在 Cherry Studio 客户端中配置 MCP 服务器,让 AI 模型能够自主调用本地/网络工具来完成任务,提升…...
2025.04.09【Sankey】| 生信数据流可视化精讲
文章目录 引言Sankey图简介R语言中的Sankey图实现安装和加载networkD3包创建Sankey图的数据结构创建Sankey图绘制Sankey图 结论 引言 在生物信息学领域,数据可视化是理解和分析复杂数据集的关键工具之一。今天,我们将深入探讨一种特别适用于展示数据流动…...
【码农日常】vscode编码clang-format格式化简易教程
文章目录 0 前言1 工具准备1.1 插件准备1.2 添加.clang-format1.3 添加配置 2 快速上手 0 前言 各路大神都说clangd好,我也来试试。这篇主要讲格式化部分。 1 工具准备 1.1 插件准备 照图安装。 1.2 添加.clang-format 右键添加文件,跟添加个.h或者.c…...
金融数据分析(Python)个人学习笔记(7):网络数据采集以及FNN分类
一、网络数据采集 证券宝是一个免费、开源的证券数据平台(无需注册),提供大盘准确、完整的证券历史行情数据、上市公司财务数据等,通过python API获取证券数据信息。 1. 安装并导入第三方依赖库 baostock 在命令提示符中运行&…...
git 如何彻底删除已经提交到远程仓库的文件?而不是覆盖删除?git 如何删除已经提交到本地的文件?从历史记录中彻底清除彻底删除(本地+远程)
git 如何彻底删除已经提交到远程仓库的文件?而不是覆盖删除?git 如何删除已经提交到本地的文件? 覆盖删除: 提交了某个不需要的文件,并push到了远程分支,此时在本地删除该文件,然后再提交一次…...
IP协议之IP,ICMP协议
1.因特网中的主要协议是TCP/IP,Interneet协议也叫TCP/IP协议簇 2.ip地址用点分十进制表示,由32位的二进制表示,两部分组成:网络标识主机标识 3.IP地址分类; A:0.0.0.0-127.255.255.255 B:128.0.0.0-191.255.255.25…...
死锁 手撕死锁检测工具
目录 引言 一.理论联立 1.死锁的概念和原因 2.死锁检测的基本思路 3.有向图在死锁检测中的应用 二.代码实现案例(我们会介绍部分重要接口解释) 1.我们定义一个线性表来存线程ID和锁ID 2.表中数据的查询接口 3.表中数据的删除接口 4.表中数据的添…...
软考高级-系统架构设计师 案例题-软件架构设计
文章目录 软件架构设计质量属性效用树,质量属性判断必背概念架构风格对比MVC架构J2EE四层结构面向服务架构SOA企业服务总线ESB历年真题【问题1】 (12分)【问题2】(13分) 参考答案历年真题【问题1】(12分)【…...
JavaScript Date(日期)
JavaScript Date(日期) JavaScript的Date对象是处理日期和时间的一个强大工具。它允许开发者轻松地创建日期对象、格式化日期、计算日期差以及执行各种日期相关的操作。本文将深入探讨JavaScript中的Date对象,包括其创建、格式化、操作以及与其他日期时间的交互。 创建Dat…...
vue+d3js+fastapi实现天气柱状图折线图饼图
说明: vued3jsfastapi实现天气柱状图折线图饼图 效果图: step0:postman 1. 生成天气数据(POST请求):URL: http://localhost:8000/generate-data/?year2024&month3&seed42 方法: POST Headers:Content-Type:…...
vue:前端预览 / chrome浏览器设置 / <iframe> 方法预览 doc、pdf / vue-pdf 预览pdf
一、本文目标 <iframe> 方法预览 pdf 、word vue-pdf 预览pdf 二、<iframe> 方法 2.1、iframe 方法预览需要 浏览器 设置为: chrome:设置-隐私设置和安全性-网站设置-更多内容设置-PDF文档 浏览器访问: chrome://settings/co…...
【NLP 56、实践 ⑬ LoRA完成NER任务】
目录 一、数据文件 二、模型配置文件 config.py 三、数据加载文件 loader.py 1.导入文件和类的定义 2.初始化 3.数据加载方法 代码运行流程 4.文本编码 / 解码方法 ① encode_sentence(): ② decode(): 代码运行流程 ③ padding(): 代码…...
Java性能调优2025:从JVM到Kubernetes的全链路优化策略
摘要 📝 本文将带你深入探讨2025年Java全链路性能调优的最新实践,从JVM底层优化到Kubernetes集群调优,涵盖GC策略选择、JIT优化、容器化最佳实践等核心内容。通过大量实践案例和代码示例,帮助你构建完整的性能优化知识体系。 目…...
【力扣hot100题】(076)买卖股票的最佳时机
终于来到了最考验智商的贪心算法。 之前做过,但花了不少时间思考,所以这次做的很快。 思路就是记录最小价格,然后一路遍历边调整新的最小价格边比较目前价格和最小价格差价。 class Solution { public:int maxProfit(vector<int>&am…...
Java基础 4.9
1.方法递归调用练习 //请使用递归的方式求出斐波那契数1, 1, 2, 3, 5, 8, 13 //给你一个整数n, 求出它的值是多少 /* 思路 n 1 1 n 2 1 n > 3 前两个数的和 递归的思路 */ public class RecursionExercise01 {public static void main(String[] args) {Mathod mathod ne…...
