news 2026/9/15 20:03:34

Nerfstudio 集成指南:Feature Splatting——基于 3DGS 的开放词汇分割与场景编辑方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nerfstudio 集成指南:Feature Splatting——基于 3DGS 的开放词汇分割与场景编辑方法

Nerfstudio 集成指南:Feature Splatting——基于 3DGS 的开放词汇分割与场景编辑方法

【免费下载链接】nerfstudioA collaboration friendly studio for NeRFs项目地址: https://gitcode.com/GitHub_Trending/ne/nerfstudio

Feature Splatting 是一种将 CLIP 视觉语言特征蒸馏进 3D 高斯泼溅(3DGS)表示的方法,使三维场景具备开放词汇的 2D/3D 分割能力,并能直接操纵高斯实现场景编辑。在 Nerfstudio 中,它作为一个外部方法(external method)注册,安装后即可通过ns-train feature-splatting一行命令启动训练。读完本文,你将掌握该方法的安装与运行方式、其与 LERF 等方法在参考特征计算上的本质差异、底层 3DGS 主干的工作原理,以及支持哪些刚体/非刚体编辑原语。

方法概览:把语言特征"泼"进三维高斯

Feature Splatting 的核心思想是将 CLIP 特征蒸馏进 3D 高斯泼溅(3DGS)表示,从而同时获得开放词汇的 2D 分割与 3D 分割能力。与体积渲染(volume rendering)不同,该方法采用视图无关(view-independent)的光栅化方式将特征与高斯绑定:每个高斯不仅携带颜色(球谐系数)与不透明度,还携带蒸馏得到的语义特征;渲染时这些特征被"泼溅"到 2D 图像上,因此可以在三维空间中直接对高斯进行语义查询与分割,而无需依赖区域提议(region proposals)或掩码。

从源码结构看,Feature Splatting 的底层主干正是 Nerfstudio 自带的 3DGS 实现 Splatfacto(见 splatfacto.py)。Splatfacto 将辐射场表示为一组显式的三维体积高斯,通过 GPU 光栅化快速得到逐像素颜色(相关背景可参考 splat.md 文档)。Feature Splatting 在此显式表示之上附加一路语义特征通道,并利用高斯的显式可操作性(显式存储位置、旋转、尺度、不透明度)实现编辑。

与之对比,先前的 LERF(lerf.md)是在 NeRF 体积内蒸馏多尺度 CLIP 向量,查询需要经过体积渲染管线;Feature Splatting 则直接在三维高斯上进行特征存储与查询,分割与编辑都更为直接、快速。

参考特征计算与联合监督

SAM 增强的 CLIP 特征

粗糙的 CLIP 特征(例如 LERF 中所用)在物体边界处往往不准确。Feature Splatting 的做法是计算高质量的 SAM 增强 CLIP 特征作为参考特征:对 CLIP 特征执行物体级别的掩码平均池化(object-level masked average pooling),以细化物体的边界。

原始 ECCV'24 论文(Qiu et al.)使用 SAM 生成部件级掩码,而本仓库集成的实现出于实时性考虑改用MobileSAMv2,参考特征计算速度显著更快,但精度略有下降——这一取舍旨在鼓励需要实时性能的下游应用。

此外,与论文版本的另一处差异是:本实现中CLIP 特征仅在图像级别(image-level)计算,并未做像素级(patch-level)特征提取。这两点差异意味着本实现的参考特征与论文版本并不完全一致(详见下文"与论文版本的差异")。

DINOv2 联合监督

在 SAM 增强的 CLIP 特征之外,该实现还引入DINOv2 特征作为联合监督信号。已有研究表明 DINO 类自监督特征有助于规整物体的内部结构,Feature Splatting 采用 DINOv2(ViT-S/14)同样是为了规整物体内部结构、改善分割质量。

安装

Feature Splatting 以独立 pip 包的形式发布,需要先完成 Nerfstudio 本体及其依赖的安装,然后执行:

pip install git+https://github.com/vuer-ai/feature-splatting

安装完成后,feature-splatting方法即可被ns-train命令发现。

运行与配置变体

安装完成后,可直接查看该方法的全部可配置参数:

ns-train feature-splatting --help

当前仓库集成的变体如下:

方法描述显存占用质量
feature-splatting基于 MaskCLIP ViT-L/14@336px 与 MobileSAMv2 的 Feature Splatting~8 GB良好

关于训练数据,与所有高斯泼溅方法一致,Feature Splatting 在全尺寸图像上训练而非光线束(ray bundle),因此数据管线复用 Nerfstudio 中为高斯泼溅设计的全图像数据管理器(full_images_datamanager.py)。该数据管理器会对输入图像进行去畸变、缓存,并在每个训练步提供单张完整图像;若使用 COLMAP 或ns-process-data处理的数据集,还会自动加载 SfM 三维点用于高斯初始化,显著提升重建质量。

底层主干的可调参数(Splatfacto 配置)

尽管 Feature Splatting 的方法级参数由其外部包提供,其底层的 3DGS 主干参数与 Nerfstudio 内置的 Splatfacto 共享同一套配置体系(见 splatfacto.py),常用的有:

  • warmup_length(默认 500):关闭细化(refine)的初始步数;
  • refine_every(默认 100):每隔多少步对高斯执行剔除(cull)与稠密化(densify);
  • cull_alpha_thresh(默认 0.1):剔除半透明高斯的透明度阈值,调低(如 0.005)可获得更高质量;
  • densify_grad_thresh(默认 0.0008):触发高斯稠密化的位置梯度范数阈值;
  • sh_degree(默认 3):球谐最高阶数,控制颜色表示的精细度;
  • background_color(默认random):训练时背景色的随机化策略;
  • rasterize_mode(默认classic):classic使用 EWA 体积泼溅加 [0.3, 0.3] 屏幕空间模糊核,antialiased模式则在分辨率变化时更稳健。

在渲染路径上,get_outputs(splatfacto.py)会依次完成相机位姿优化、包围盒裁剪、球谐颜色组合与 gsplat 光栅化调用,其中高斯的位置(means)、旋转四元数(quats)、尺度(scales,经指数映射)、不透明度(opacities,经 sigmoid)与颜色(features_dc/features_rest,球谐系数)被直接送入光栅化器——Feature Splatting 的语义特征正是沿这一渲染管线并行蒸馏的。

在 Nerfstudio 中的注册机制

Feature Splatting 并未内置在 Nerfstudio 源码中,而是通过外部方法(External Method)机制注册。在 external_methods.py 中可以看到它的注册条目:slug 为feature-splatting,描述为"Feature Splatting with MaskCLIP ViT-L/14@336px, DINOv2 ViT-S/14, and MobileSAMv2",并绑定了对应的 pip 安装包。

其工作流程如下:

  1. 启动时,method_configs.py 调用discover_methods()扫描已安装的外部插件,并调用get_external_methods()注册所有未安装的外部方法;
  2. 未安装的外部方法会以ExternalMethodDummyTrainerConfig(external_methods.py)占位,出现在ns-train --help列表中并标注[External, run 'ns-train feature-splatting' to install]
  3. 用户直接运行ns-train feature-splatting时,控制台会打印安装指引,并交互式询问是否立即执行pip install,确认后自动安装并退出;
  4. 安装完成后再次运行,即进入正常的训练流程。

因此在实践中有两种等效的启动方式:先手动pip install再训练,或直接ns-train feature-splatting并在交互提示中确认安装。这一机制同样适用于 LERF、Instruct-NeRF2NeRF、K-Planes、Zip-NeRF 等其它外部方法。

场景编辑:直接操纵高斯

得益于 3DGS 的显式表示,分组后的高斯可以被直接操纵,从而支持简单直观的编辑应用。原始 ECCV'24 论文提出了一系列编辑原语;为避免引入过多依赖或实现层面的 hack,本实现有选择地支持其中一部分:

刚体(Rigid)操作

  • 地面估计(Floor estimation):为直观的旋转与重力方向估计提供基准;
  • 平移(Translation):移动被分割的物体;
  • 透明化(Transparent):高亮被分割物体,并将背景高斯设为透明;
  • 旋转(Rotation):仅支持绕估计地面的偏航角(yaw)旋转。

非刚体(Non-rigid)操作

  • 沙状熔化(Sand-like melting):基于 Taichi MPM(物质点法)的物理模拟编辑。

这些编辑操作的对象是被分割出来的高斯分组,与前述开放词汇分割能力天然衔接:先用语言查询分割出物体,再对其施加刚体或非刚体变换,从而实现"语言驱动"的编辑流程——这也是论文标题"Language-Driven Physics-Based Scene Synthesis and Editing"的由来。

与论文版本的差异

需要注意,本实现使用的参考特征与 ECCV'24 论文版本有两处不同:

  • SAM 增强的 CLIP 特征改用 MobileSAMv2 计算:比原始 SAM 快得多,但精度略低;
  • CLIP 特征仅在图像级别计算:未采用论文中的部件级(part-level)掩码与更细粒度的特征提取。

因此,在引用对比实验或复现论文数据时,应以论文原始实现为准;本实现的定位是提供更快、更适合实时下游应用的参考实现。

引用

如果你认为该工作对研究有帮助,请引用:

@inproceedings{qiu-2024-featuresplatting, title={Language-Driven Physics-Based Scene Synthesis and Editing via Feature Splatting}, author={Ri-Zhao Qiu and Ge Yang and Weijia Zeng and Xiaolong Wang}, booktitle={European Conference on Computer Vision (ECCV)}, year={2024} }

相关阅读

  • LERF:语言嵌入辐射场——Feature Splatting 对比的基线方法,同样将 CLIP 特征引入三维表示;
  • Splatfacto:Nerfstudio 的高斯泼溅实现——本方法的 3DGS 底层主干,涵盖数据要求、导出与 FAQ;
  • 方法总览——Nerfstudio 全部内置与外部方法的索引,以及如何为仓库贡献新方法文档;
  • 外部方法注册源码与方法配置聚合源码——理解feature-splatting等外部方法如何接入ns-train命令行。

【免费下载链接】nerfstudioA collaboration friendly studio for NeRFs项目地址: https://gitcode.com/GitHub_Trending/ne/nerfstudio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 20:01:32

FastAPI实战:构建带JWT登录与断点续学的在线课程学习系统

简介:基于FastAPI框架的在线课程学习系统Python源码及项目说明,是一份面向具备一定Python基础的开发者的完整参考实现。系统以在线学习平台为场景,围绕用户、课程、学习、互动、管理五大模块构建,覆盖用户注册登录与信息维护、课程…

作者头像 李华
网站建设 2026/9/15 20:00:03

MATLAB上采样与下采样实战:BPSK链路采样率转换深度解析

简介:资源聚焦数字通信中的BPSK调制与采样率变换,面向信号处理、通信原理方向的学生及MATLAB开发者,提供可直接运行的上采样与下采样实现。BPSK通过载波相位传递0/1信息,上采样在序列中插零提高采样率,下采样则按整数因…

作者头像 李华
网站建设 2026/9/15 19:59:14

Maven构建复杂项目

最近研究开源监控平台Hertzbeat,于是github上fork了这个项目(master版本日期20251120),把代码拉到本地跑起来。Hertzbeat属于父子模块项目,通过前后端进行部署。Maven构建时软件版本要求Maven3,JDK17及以上…

作者头像 李华