3D高斯溅射论文集:从解压到复现的完整实践路线
2026/9/14 1:41:14 网站建设 项目流程

简介:面向3D高斯溅射(3D Gaussian Splatting)技术研究的中英文论文合集,覆盖ECCV、CVPR、NeurIPS、SIGGRAPH等顶会成果,适合作为毕业设计、课程设计或科研入门阶段的参考资料。合集共收录785个文件,其中783个为Markdown格式的论文笔记、会议索引及更新日志,另有2个Python脚本用于辅助检索与整理,压缩包仅1.26MB,轻量便于快速同步。目前已有102人学习浏览,内容保持持续更新,涉及渲染、三维重建、动态场景、医学影像、自动驾驶等多个应用方向。通过该合集可以系统梳理3D高斯溅射的算法演进与最新动态,每篇笔记提炼了论文核心思路与要点,并保留原文链接,能显著降低文献调研成本,也可为后续复现或选题提供参照,适合计科、人工智能、电子信息等专业学生及算法工程师参考使用。

1. 拿到 3D 高斯溅射论文集 zip,先别急着解压

一份「3D 高斯溅射论文集」zip 通常有几十上百篇 PDF,覆盖渲染加速、动态场景、SLAM、生成编辑、医学影像、自动驾驶等多个方向。90% 的人解压之后只会按文件名翻摘要,最后变成硬盘里的收藏夹。真正的问题不是「有没有这份资料」,而是「怎么把它变成毕业设计/课程设计的选题依据和复现路线」。下面按检索、分类、精读、复现的顺序,讲一套从 zip 到产出的一线做法:用脚本管理文献、按可复现性选题目、跑通最小训练管线,并处理 zip 损坏、重复、增量更新等实际问题。适合正在选题的本科生、刚进组的研究生,以及想快速跟进 3DGS 的工程师。

2. 3D 高斯溅射论文在讲什么——先建技术地图再做结构化

3D 高斯溅射(3D Gaussian Splatting,3DGS)在 2023 年提出后,迅速成为神经渲染方向的基础工具。它把场景表示为一组带位置、协方差、球谐颜色和不透明度的 3D 高斯函数,通过可微光栅化把高斯投影到图像平面,用光度损失端到端更新参数。与 NeRF 的逐点体渲染相比,3DGS 训练快、推理能到实时帧率,所以你会看到大量「基于 3D 高斯溅射的某某改进」类论文,从表示、光栅化、密度化到后处理都有人动刀。面对这类论文集,第一步不是逐篇精读,而是把方向理清楚。

2.1 论文集里最常见的研究方向与论文关键词

根据近年公开论文的主题分布,大部分工作会落在这六类里。

方向要解决的问题标题里常见关键词
快速重建与渲染降低训练和高斯栅格化开销real-time, fast, acceleration, pruning
动态场景与 4D处理运动物体和多视角视频4D, dynamic, video, deformable, temporal
SLAM 与增量建图在线恢复相机位姿并更新地图SLAM, mapping, localization, odometry
场景编辑与生成可控修改、再生成、与扩散模型结合editing, generation, diffusion, inpainting
压缩与蒸馏减少高斯数量与模型体积compression, distillation, quantization
行业应用医学影像、工业测量、自动驾驶等medical, surgical, endoscopy, automotive

这张表的用途是给解压后的 PDF 快速归档。3DGS 论文的标题通常会把「改了什么组件」写进关键词,比如标题含 deformable 的大概率是动态方向,含 distill 的大概率是压缩方向。拿到一篇新论文,先看标题关键词,再看摘要里「we propose」之后的那句话,就能确定它的主线地位。归档做得越细,后面按主题检索时越省事,这也是「毕业设计选题」阶段最值得投入的一步。

2.2 用几十行脚本把论文 zip 解压成主题目录

常见做法是:先统计再解压,不要把所有 PDF 倒进一个文件夹。用 Python 的 zipfile 读成员列表,按文件名关键词分类,再解压到对应目录。脚本可直接保存为 classify_and_extract.py 复用。

import zipfile import shutil from pathlib import Path ZIP_PATH = Path("3dgs_papers.zip") OUT_ROOT = Path("papers_lib") RULES = { "dynamic": ["4d", "dynamic", "video", "deform", "temporal"], "slam": ["slam", "mapping", "localization", "odometry"], "editing": ["edit", "generation", "inpaint", "diffusion", "llm"], "compression": ["compress", "distill", "quantiz", "lightweight"], "medical": ["medical", "surgical", "endoscopy", "ct", "mri"], "baseline": ["splatting", "3dgs", "gaussian", "survey", "review"], } def classify(name: str) -> str: low = name.lower() for topic, keys in RULES.items(): if any(k in low for k in keys): return topic return "other" with zipfile.ZipFile(ZIP_PATH) as zf: for member in zf.namelist(): if not member.lower().endswith((".pdf", ".md")): continue pure_name = Path(member).name if pure_name.startswith((".", "._")): # 跳过 macOS 元数据 continue topic = classify(pure_name) dest_dir = OUT_ROOT / topic dest_dir.mkdir(parents=True, exist_ok=True) with zf.open(member) as src, (dest_dir / pure_name).open("wb") as dst: shutil.copyfileobj(src, dst)

zipfile.ZipFile 负责读压缩包成员列表;先过滤非 PDF 和隐藏文件,避免把 __MACOSX 目录里的垃圾文件带出来。classify() 是关键词匹配,按 RULES 里定义的六类主题逐项检查文件名,未匹配的文件归入 other。解压时用 shutil.copyfileobj 边读边写,压缩包很大也不会占满内存。参数上,RULES 的关键词需要按实际文件命名习惯调整,比如有些论文集用编号「paper_0001.pdf」,文件名不含关键词,此时 classify 基本失效,要把归档依据换成 PDF 首页的标题文本,也就是第 3 章要讲的元数据提取。

2.3 生成索引文件,让「持续更新」有据可查

分类完成只是第一步。还要生成一个索引,记录每个主题下有多少篇、每篇的路径和更新时间,这样后续每次新增论文都能对照。

from pathlib import Path from datetime import datetime lib = Path("papers_lib") lines = ["# 3D 高斯溅射论文集", f"updated: {datetime.now():%Y-%m-%d}", ""] for topic in sorted(p.name for p in lib.iterdir() if p.is_dir()): pdfs = sorted(p.glob("*.pdf")) lines.append(f"## {topic} ({len(pdfs)})") lines += [f"- {f.stem}" for f in pdfs] Path("README.md").write_text("\n".join(lines), encoding="utf-8")

这个脚本做的事是:遍历 papers_lib 下的主题目录,统计 PDF 数量,按主题生成二级标题和文件列表,把更新时间写进 README 第一行。README 建议纳入版本管理,比如用 git 跟踪,每次新增论文后重跑一次,就能看到「这个主题昨天 12 篇、今天 15 篇」的增量变化,对应论文集标题里的「持续更新」。归档与索引合起来,才是这份资料从 zip 变成知识库的关键。

3. 从 3D 高斯溅射论文集里找毕业设计题目——把可复现性放第一位

做毕业设计或课程设计,选题质量决定了后面两个月是顺还是坑。3DGS 方向论文多、代码也多,但「有代码」和「能复现」是两回事。我一般会按三个标准筛:可复现性、可改进性、数据可得性。三个标准里,可复现性最优先,因为 3DGS 论文很多依赖特定 CUDA 扩展,有的代码只在自己机器上能跑,换环境就卡编译。

3.1 选题的三个判断标准,以及适合毕设的方向

可复现性看三点:论文是否开源、代码是否依赖私有数据、环境安装是否完整。3DGS 主线论文大多开源且用公开数据集,比较适合入手;工程型方向比如 SLAM,代码要接相机驱动、标定、在线渲染,工作量容易被工程问题吃掉。可改进性判断法是「找一个子模块替换」:比如把密度化策略从固定阈值改成区域自适应,把球谐阶数改成可学习的截断,都属于论文创新点里「点」的改动,适合课设周期。数据可得性看是否要审批:医学方向数据要伦理审核,3DGS 常用的公开场景数据集下载即可用。

方向复现难度改进空间数据获取
渲染加速与剪枝公开场景
压缩与蒸馏公开场景
场景编辑与生成公开场景 + 掩码
动态场景 / 4D多视角视频
SLAM / 增量建图实拍序列
医学应用中高需伦理审批

表格不是绝对打分,而是提醒你:选题时先确认「这条路的默认数据我能不能现在就下到」。3DGS 方向常见公开数据包括 NeRF Synthetic、Mip-NeRF360、Tanks & Temples,这些在论文附录里都会给下载地址,论文集的「数据」子目录有时也附了说明文档,优先选有现成数据的题。

3.2 精读路线:综述 → 主线 → 消融

泛读主要靠摘要做分类,精读则按「1 篇综述 + 2 篇主线 + 3 篇对比」来读。一篇 3DGS 综述能帮你建立术语表:密度化、各向异性协方差、球谐系数、可微光栅化,这些词在后续所有论文里高频出现。主线论文建议选原始方法及其直接扩展,读的时候在纸上画数据流:多视角图像 → SfM 初始化点云 → 高斯参数(位置、协方差、颜色、不透明度)→ 可微光栅化 → 光度损失 → 每 100 次迭代做一次密度化。画完这张图,任何一篇改进论文都能对应到「它改了管线里的哪一格」。最后读对比方法和消融实验,重点不是数值,而是「改进点放在哪一阶段效果最好」这个结论。这是毕设开题报告里最值钱的内容。

阅读笔记不要长篇抄摘要,按「问题、方法、改了哪个组件、实验结论、你能改什么」五栏记录。五栏式笔记一天能过 5 篇论文,且每篇留下的信息足够支撑后续开题和对比实验。

3.3 批量提取 PDF 元数据,自动生成 BibTeX

手动敲 BibTeX 容易错,还会漏 arXiv 编号。常见做法是用 PyMuPDF 提取 PDF 首页文本,用正则抓标题和 arXiv 编号,再生成 bib 文件。

import fitz import re from pathlib import Path def extract_metadata(pdf_path: Path) -> dict: doc = fitz.open(pdf_path) first_page = doc[0].get_text() title = first_page.strip().splitlines()[0] if first_page.strip() else pdf_path.stem m = re.search(r"arXiv:(\d{4}\.\d{4,5})(v\d+)?", first_page) return {"title": title, "arxiv": m.group(1) if m else ""} def to_bibtex(meta: dict, filename: str) -> str: key = re.sub(r"[^a-zA-Z0-9]", "", filename)[:32] eprint = f"archivePrefix={{arXiv}}, eprint={{{meta['arxiv']}}}," if meta["arxiv"] else "" title = meta["title"].replace("{", "").replace("}", "") return f"@article{{{key},\n title = {{{title}}},\n {eprint}\n}}\n\n" for pdf in Path("papers_lib", "baseline").glob("*.pdf"): meta = extract_metadata(pdf) Path("references.bib").open("a", encoding="utf-8").write(to_bibtex(meta, pdf.stem))

fitz.open 打开 PDF,取第一页文本作为标题来源,正则\d{4}\.\d{4,5}匹配 2023 年后常见的 arXiv 编号格式,(v\d+)?把版本号过滤掉。to_bibtex 用文件名清洗后的内容做 citation key,arxiv 为空时省略 eprint 字段,避免生成无效条目。注意标题直接取第一行只是近似,遇到标题跨行、带日期的情况需要再清洗,但用来生成开题报告和参考文献列表已经够用。有大量文献时也可以导入 Zotero 自动抓元数据,但对批量文件,脚本更可控,还能顺带统计各主题论文数量。重复运行脚本会在 references.bib 里累积重复条目,建议每次跑之前先清空文件。

4. 跑通 3D 高斯溅射最小训练管线——从论文标题到可重现指标

论文看了十几篇,选题也定了,接下来要把「某篇论文的改进」落到「我能跑通的代码」上。3DGS 方向最常见的开源基础实现是 graphdeco 团队维护的版本,绝大多数改进论文都基于它,或者给的是 fork。先把这条最小管线跑通,再谈改代码。

4.1 环境准备:CUDA、PyTorch、COLMAP 三件套

3DGS 的核心光栅化是自定义 CUDA 扩展,训练前要确认三件事:GPU 驱动支持的 CUDA 版本、PyTorch 的 CUDA 版本、COLMAP 的可用性。先用 nvidia-smi 看驱动版本,再决定装哪个 CUDA 的 PyTorch,否则训练时会在 import 阶段报「找不到 CUDA runtime」。

conda create -n 3dgs python=3.10 -y conda activate 3dgs pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 conda install -c conda-forge colmap -y

PyTorch 的 --index-url 要和本机驱动匹配,cu121 表示 CUDA 12.1 的预编译 wheel;驱动太老就降级到 cu118。COLMAP 是特征提取与增量式 SfM 工具,它生成的稀疏点云是高斯的初始位置,缺了它 train.py 无法启动。如果你的数据集不是论文自带的,而是自己的照片,需要先跑两条 COLMAP 命令:

colmap feature_extractor --database_path db.db --image_path images colmap mapper --database_path db.db --image_path images --output_path sparse

feature_extractor 提取图像特征,mapper 做增量式重建,输出在 sparse/0 目录。之后 train.py 的 -s 参数指向包含 sparse/0 的数据集根目录即可。这一步失败最常见的原因是图片太少或纹理重复,建议至少 30 到 50 张有重叠、光线一致的照片。

4.2 训练、渲染、评估三条命令与核心参数

最小可跑流程是三步:训练、渲染、评估。

python train.py -s /data/chair -m /output/chair --eval python render.py -m /output/chair python metrics.py -m /output/chair

train.py 做的事是:读取 sparse/0 点云初始化高斯参数,在迭代中更新位置、协方差、球谐系数和不透明度,并按预设间隔执行密度化和低不透明度剪枝。--eval 会把数据集划分出测试视角,在第 7000 次迭代后周期性评估。render.py 用训练好的模型渲染所有测试视角的图片。metrics.py 对比渲染图和原图,输出 PSNR、SSIM、LPIPS 三个指标。注意:如果训练时不加 --eval,所有视角都参与训练,指标会明显虚高,毕设的对比实验写出来也没有说服力。

参数默认行为作用调整建议
--iterations30000总训练迭代数数据少可降到 15000,质量略降
--eval不启用划分测试集并周期评估对比实验必须开
--test_iterations7000, 30000做评估时保存模型按论文设置覆盖写
--save_iterations7000, 30000保存完整模型的迭代点磁盘紧张可只留 30000
--densify_until_iter15000该迭代后停止密度化场景闪烁时提前到 8000
--opacity_reset_interval3000重置不透明度避免漂移默认即可
--sh_degree3球谐阶数显存不足降到 2

调参不是拍脑袋,而是要跟你在第 3 章画的「数据流图」对应起来:densify 参数影响高斯数量,sh_degree 影响颜色表达精度,iterations 影响最终收敛。论文的附表通常会给不同参数下的指标,照着论文的实验设置跑一遍,能最快验证你的环境是否正确。

4.3 训练中常见的三类实际问题

第一类是显存不足。3DGS 的显存占用和图像分辨率、高斯数量强相关,训练 2K 以上分辨率时 8G 显存很容易爆。常见做法是把输入图片缩小到 1~1.6K,或者把 --sh_degree 降到 2,牺牲一点颜色精度换训练可行性。

第二类是渲染画面全黑。这通常是 COLMAP 稀疏点太少或根本没有输出,检查数据集目录下 sparse/0 是否存在,以及 images 路径是否含中文或空格。路径问题在 Windows 上最容易踩,建议数据集和代码都放在纯英文路径下。

第三类是「GitHub 下载的 zip 包解压后安装失败」。很多开源代码是 Code 下拉菜单里 Download ZIP 的方式分发,解压后通常是创建 conda 环境、按 requirements.txt 装依赖、再编译子模块三步。如果卡在编译,优先检查 CUDA 版本和 gcc 版本,不要为了过编译而降 PyTorch 大版本。

提示:训练前先跑一个 2000 次迭代的短训练,确认 loss 能下降、渲染输出有画面,再开完整训练。这比直接跑 30000 次迭代后才发现环境问题省时间。

5. 3D 高斯溅射论文 zip 的验收、去重与增量归档

前面几章把论文变成选题和代码,现在回到 zip 本身:这份压缩包要能长期用,就得会验收、去重、增量更新。很多毕设资料在网盘转存或下载中断后会出现文件损坏,解压时才报错,浪费的时间可能比读论文还多。

5.1 解压前先验证 zip 完整性

拿到 zip 先验包,再解压。两条命令都可以:

7z t 3dgs_papers.zip python -m zipfile -t 3dgs_papers.zip

7z t 会逐个解压成员并比对 CRC 校验码,能发现下载中断造成的损坏;python -m zipfile -t 是 Python 自带模块,任何装了 Python 的机器都能直接用。如果报 error read zip archive 之类的错误,多半是文件没下完,重新下载后再验一次。对加密的 zip,正确做法是回到来源处确认密码或换公开版本,不要用破解工具——这是版权问题,也解决不了「内容版本不对」的根本矛盾。

5.2 增量合并与去重,保持资料库可维护

论文集要「持续更新」,就要让新增 PDF 的合并是一个可重复执行的流程。把新下载的文件放到 new/ 目录,复用在 2.2 节写的 classify 函数,按文件名分类合并进 papers_lib,再用文件内容哈希去重:

import hashlib import shutil from pathlib import Path def file_hash(p: Path) -> str: return hashlib.sha256(p.read_bytes()).hexdigest() seen = set() for pdf in Path("papers_lib").rglob("*.pdf"): seen.add(file_hash(pdf)) for pdf in Path("new").glob("*.pdf"): if file_hash(pdf) not in seen: shutil.move(str(pdf), str(Path("papers_lib", "other", pdf.name))) seen.add(file_hash(pdf))

脚本按文件内容哈希去重,避免同一篇论文在多个子目录里重复出现。合并后重跑 2.3 节的 README 生成脚本,更新时间自动刷新。归档完成后,用find papers_lib -name "*.pdf" | wc -l核对数量,与 zip 内的成员数一致才算归档成功。这套流程跑一遍只要几十秒,却能让「毕业设计论文集」从一次性下载变成随时可查、可回溯的个人文献库。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询