3D高斯溅射论文集:从解压到复现的完整实践路线
简介面向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 Splatting3DGS在 2023 年提出后迅速成为神经渲染方向的基础工具。它把场景表示为一组带位置、协方差、球谐颜色和不透明度的 3D 高斯函数通过可微光栅化把高斯投影到图像平面用光度损失端到端更新参数。与 NeRF 的逐点体渲染相比3DGS 训练快、推理能到实时帧率所以你会看到大量「基于 3D 高斯溅射的某某改进」类论文从表示、光栅化、密度化到后处理都有人动刀。面对这类论文集第一步不是逐篇精读而是把方向理清楚。2.1 论文集里最常见的研究方向与论文关键词根据近年公开论文的主题分布大部分工作会落在这六类里。方向要解决的问题标题里常见关键词快速重建与渲染降低训练和高斯栅格化开销real-time, fast, acceleration, pruning动态场景与 4D处理运动物体和多视角视频4D, dynamic, video, deformable, temporalSLAM 与增量建图在线恢复相机位姿并更新地图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(parentsTrue, exist_okTrue) 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 高斯溅射论文集, fupdated: {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), encodingutf-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(rarXiv:(\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 farchivePrefix{{arXiv}}, eprint{{{meta[arxiv]}}}, if meta[arxiv] else title meta[title].replace({, ).replace(}, ) return farticle{{{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, encodingutf-8).write(to_bibtex(meta, pdf.stem))fitz.open 打开 PDF取第一页文本作为标题来源正则\d{4}\.\d{4,5}匹配 2023 年后常见的 arXiv 编号格式(v\d)?把版本号过滤掉。to_bibtex 用文件名清洗后的内容做 citation keyarxiv 为空时省略 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 python3.10 -y conda activate 3dgs pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 conda install -c conda-forge colmap -yPyTorch 的 --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 sparsefeature_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/chairtrain.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.zip7z 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 内的成员数一致才算归档成功。这套流程跑一遍只要几十秒却能让「毕业设计论文集」从一次性下载变成随时可查、可回溯的个人文献库。本文还有配套的精品资源点击获取