
理解Spirula Studio的遮罩策略keep_prompted与负向短语的隐藏语义【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studioSpirula Studio 是一款跨厂商的 3D Gaussian Splatting 训练工具视频 → 高斯 → 网格支持 Vulkan 或 CUDA 后端。它的 SAM 遮罩模块里藏着两套容易被忽视的语义keep_prompted极性翻转和负向短语negative phrases的显式保留规则。理解这两点才能避免重建结果丢主体或删不掉干扰物的常见翻车。遮罩的基准语义255 保留在 Spirula Studio 中写进数据集masks/目录的二值遮罩表达的是哪些像素要保留白色255 参与重建黑色 剔除。这个约定决定了默认行为——你输入的文本提示词命中的对象会被涂黑其余全部涂白。这正是重建流水线听到把路人遮掉时想要的结果提示词描述的是干扰物distractor比如person; car; shadow of a person。keep_prompted一句话翻转极性keep_prompted是一个布尔开关作用是翻转遮罩的极性开启后白色 提示词命中的对象其余全部涂黑。场景提示词应该描述是否开启keep_prompted街景重建想去掉行人要移除的东西干扰物否默认文物/商品拍摄只要主体要保留的东西主体是源码注释把这个场景说得很直白for a capture where the prompt names the subject rather than a distractor——即当提示词指的是主体而非干扰物时见 src/sam/Masking.h 头部注释与 src/sam/README.md 的 The mask policy 一节。还有一个隐藏细节当模型什么都没检测到时两种极性的行为也相反——默认极性整张图保留~pos_union即全真keep_prompted整张图丢弃pos_union为空。这一逻辑在 C 实现 src/sam/Masking.cpp 与历史 Python 脚本 reference/scripts/mask.py 中完全一致两者是同一策略的两种载体保证新旧流程产出同一份数据集。负向短语一个显式保留的隐藏语义负向短语GUI 中的--neg-text/ …但要保留/移除 输入框的语义和字面直觉恰好相反匹配负向短语的区域会被保留即使它同时也匹配了正向短语。也就是说负向短语不是再删一次而是从正向命集中挖回来。它是一条显式保留explicit keep优先级高于一切。以 src/sam/Masking.h 中compose_hit的注释为例a negative phrase is an explicit keep and must beat the margin——负向命中必须压过边缘膨胀dilate margin。典型用法来自官方帮助文本见 src/i18n/catalog/SamHelp.h--text person --neg-text person in a painting意思是移除街上的人但保留画框里画的人。两种极性下的完整语义表步骤默认极性移除干扰物keep_prompted只留主体正向短语命中集涂黑剔除涂白保留负向短语命中集挖回白色强制保留挖回白色强制保留未命中区域白色保留黑色剔除模型零命中整图保留整图丢弃注意负向短语在两种极性下都是强制保留——因为输出遮罩恒以什么要保留为基准而负向短语的职责始终是把这个区域从剔除名单里拉回来。在界面和命令行里如何使用GUI数据集屏幕的遮罩面板提供 要移除什么 / 要保留什么 切换对应mask_keep_subject切换后提示词占位符与帮助文本会联动变化如 the statue; its pedestal vs person; car逻辑见 src/app/gui/GuiApp.cpp 与 src/app/gui/MaskPrompt.cppCLIspirula sam track支持--keep-prompted与--neg-text选项定义在 src/app/cli/sam_main.cpp手动修图遮罩编辑器Correct Masks按 255保留 的极性编辑支持逐帧 drop/keep 图层与传播详见 docs/notes/mask-editor.md。 一个实用技巧边缘余量dilate_ratio在默认极性下向外扩张以覆盖紧贴的轮廓残色但开启keep_prompted后同样的余量会变成向内侵蚀主体——这也是遮罩编辑器刻意不复用sam::Masker余量逻辑的原因见 docs/notes/mask-editor.md What not to undo 一节。如果你的主体拍摄出现边缘被啃掉一圈先检查余量设置。小结 遮罩恒以保留什么为语义基准255 keepkeep_prompted把提示词 干扰物翻转为提示词 主体并连带翻转零命中时的兜底行为负向短语是显式保留命中即保留优先级最高与极性无关策略的唯一权威实现是 src/sam/Masking.h / src/sam/Masking.cppGUI 预览与 CLI 共用同一份所见即所得。【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考