篇目 70 · 单篇论文精读

点云上「谁挡着谁」没有标准答案:把它当一道二分类题,一份特征就能喂给任意多个视角

这一篇要回答的问题是「一朵点云上,这个点到底被挡住了没有」。这个问题严格说没有答案:点没有大小,被另一个点精确遮挡的概率近乎零;人眼能分出前后,靠的是它背后那张曲面的先验,而这份先验得从别处借。前人借过三种:先重建表面再做可见性测试(代价是重建本身还是开放问题)、HPR 那套球变换加凸包(代价是手写先验,且凸包最坏 O(n²))、投到像素平面再用二维网络判(代价是精度被分辨率锁死)。本篇换的是「这个判断怎么产生」:用八叉树 U-Net 抽出与视角无关的逐点特征,再用一个两层 MLP 把视角方向吃进去,输出「可见/不可见」两个通道。关键在于两个部件是分开的:特征抽一次,可以给任意多个视角复用,于是「换一个视角」几乎不额外花钱。账面:81k 点平均 97.4%、2k 点平均 93.0%(比最好的基线分别高 1.2 与 3.7 个百分点,复杂类别上高 5 个百分点以上);20 万点以上快 126 倍;不重训就能接住 130k 点的输入;喂进法向还能再涨。代价照写:要真值标签(而标签本身比训练还贵)、只面向单物体且视点在视觉外壳之外、输出是硬二值的。

Jun-Hao Wang(Wangxuan Institute of Computer Technology, Peking University)、Yi-Yang Tian(同前,与前者并列第一作者)、Baoquan Chen(School of Intelligence Science and Technology, Peking University)、Peng-Shuai Wang(Wangxuan Institute of Computer Technology, Peking University,通讯作者) SIGGRAPH Asia 2025 Conference Papers(Hong Kong, China,2025-12-15–18)· ACM · DOI 10.1145/3757377.3763869 arXiv:2509.24150v1 [cs.GR] · 2025-09-29 · 11 页 · 双栏 · 文字层 57,242 字符 原文没有编号式(另有 3 条未编号式,全部落块并逐步重推)· 原文图 18 张 · 原文表 9 张 · 无算法伪码块 · 许可:非 CC(PDF 内无权利块,以 arXiv 摘要页 nonexclusive-distrib/1.0 为准),不托管原文 PDF
14 章一级章节(按拆解点切)
3 式原文未编号式三条(逐步重推)
27 图元原文 18 图 + 9 表(自绘 0)
7 条边界与反例(失败案例三类 + 局限四条)
图元-段配对表 18 图 + 9 表 = 27 件图元 · 全部 E 类原样引用 · 自绘 0
图元原文角色档归属支撑的论断讲解层次状态
图 1-1Fig. 1E第 1 章本篇要解决的问题与四条下游应用一次摆齐①②图注 +③④正文原样引用 · 未修改
图 3-1Fig. 2E第 3 章特征与视角解耦:抽一次、多视角复用①②图注 +③④正文原样引用 · 未修改
图 4-1Fig. 3E第 4 章八叉树 U-Net 的分辨率阶梯与通道数规则①②图注 +③④正文原样引用 · 未修改
图 7-1Fig. 5E第 7 章高曲率区上的逐点误差(红=误报、蓝=漏报)①②图注 +③④正文原样引用 · 未修改
图 7-2Fig. 6E第 7 章真实扫描(Google Scanned Objects)上的同一套对照①②图注 +③④正文原样引用 · 未修改
图 8-1Table 1E第 8 章19 类 × 4 档的核心读数(含「有法向」后四行)①②图注 +③④正文原样引用 · 未修改
图 8-2Fig. 4E第 8 章跨数据集的定性对照(ABC)①②图注 +③④正文原样引用 · 未修改
图 9-1Table 2E第 9 章训练时没见过的 5 个类别①②图注 +③④正文原样引用 · 未修改
图 9-2Table 3E第 9 章换到 ABC 数据集(训练集仍是 ShapeNet)①②图注 +③④正文原样引用 · 未修改
图 10-1Fig. 7E第 10 章2048–130k 点不重训的精度曲线①②图注 +③④正文原样引用 · 未修改
图 10-2Fig. 11E第 10 章五种实现的耗时随点数的走势①②图注 +③④正文原样引用 · 未修改
图 11-1Table 4E第 11 章1% 与 2% 噪声下的精度①②图注 +③④正文原样引用 · 未修改
图 11-2Fig. 9E第 11 章含噪点云的定性结果①②图注 +③④正文原样引用 · 未修改
图 11-3Fig. 10E第 11 章残缺点云的定性结果①②图注 +③④正文原样引用 · 未修改
图 12-1Table 5E第 12 章八叉树深度 6–9 的耗时与精度①②图注 +③④正文原样引用 · 未修改
图 12-2Table 6E第 12 章换成 Transformer 特征提取器①②图注 +③④正文原样引用 · 未修改
图 12-3Table 7E第 12 章位置编码与更深的 U-Net①②图注 +③④正文原样引用 · 未修改
图 12-4Fig. 12E第 12 章失败案例(薄结构/大曲率凹面/多层遮挡)①②图注 +③④正文原样引用 · 未修改
图 12-5Fig. 13E第 12 章场景级点云上的表现①②图注 +③④正文原样引用 · 未修改
图 13-1Fig. 14E第 13 章只画可见点 ⇒ 遮挡区自动消失①②图注 +③④正文原样引用 · 未修改
图 13-2Fig. 15E第 13 章视点相关重建(无法向也能连面)①②图注 +③④正文原样引用 · 未修改
图 13-3Table 9E第 13 章网格重建精度(Chamfer/Hausdorff/F1)①②图注 +③④正文原样引用 · 未修改
图 13-4Fig. 16E第 13 章26 个视角聚合出的法向与泊松重建①②图注 +③④正文原样引用 · 未修改
图 13-5Table 8E第 13 章法向预测精度(与 PCPNet 对照)①②图注 +③④正文原样引用 · 未修改
图 13-6Fig. 17E第 13 章把可见性接到阴影贴图上①②图注 +③④正文原样引用 · 未修改
图 13-7Fig. 8E第 13 章300 次迭代找出的最大/最小可见视点①②图注 +③④正文原样引用 · 未修改
图 13-8Fig. 18E第 13 章最好/最差视点优化过程的损失曲线①②图注 +③④正文原样引用 · 未修改
角色档:本篇 27 件图元(18 图 + 9 表)全部登记为 E 类(证据图),它们承载可核对的读数或不可复现的原始输出(九张定量表:四档密度主表、未见类别、跨数据集、两档噪声、深度消融、Transformer 消融、位置编码消融、法向精度、网格重建精度;五张逐点误差/定性对照:Fig. 5/6/9/10/4;两组结果图:不重训的规模曲线与六条耗时曲线;三张失败与场景:Fig. 12/13 与 Fig. 8 的视点优化;五张应用图:Fig. 14/15/16/17/18;一张 teaser:Fig. 1)。按分区裁决 E 类禁止自绘,故一律引用原图,自绘 0 张,S 类配额未动用。
式:原文没有编号式(首扫按「整行等于 (N)」数出 0 条,逐行复核确认),但有 3 条独立成行的未编号式,本篇全部落块并逐步重推: 第 3 章 §3.2 两条(视角位置编码 γ(pi) 与 交叉熵损失 L,原文 p3 左栏)、第 4 章 §4.3 一条(视点选择损失 L(v),原文 p9 左栏);三条的字号都是 8.97 pt 的正文级、且都不是行内嵌在段落里,故按分区「未编号式」口径落块,编号位显示「未编号」。
没有算法轨:原文不含任何 ALGORITHM N: 形式的伪码块(与篇目 68 的 3 块不同型),故本篇不派生 algs/ 轨。
许可:非 CC。所据 PDF 内没有任何权利块, Copyright/Permission/Not for redistribution/ACM Reference Format/ACM ISBN 等 13 个关键词全部 0 命中,故以 arXiv 摘要页为唯一证据源,该页 License 字段为 nonexclusive-distrib/1.0(arXiv 非独占分发);另有两处旁证同向:Related DOI 指向 SIGGRAPH Asia 2025 正式会议论文,arXiv HTML 版在作者块下印出 © acmlicensed。这是「PDF 内无权利块」型的第三例(前两例是篇目 60 与 68)。落点两件(index.html + thumb.webp,不含托管的 paper.pdf),卡片 chip 带 warn;图件仍原样零加工引用 + 逐图署名(四字段:图号/页码/版权/未修改,版权栏写 © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM)。
四处必须自己核的取证事实:① 3 条未编号式的判定位置: 首扫按「整行等于 (N)」数出 0 条编号式,逐行复核发现 §3.2(p3 左栏)两条、§4.3(p9 左栏)一条独立成行的公式;取证手段是把 p3 左栏 y 190–210 与 p9 左栏 y 450–480 两处逐 span 打印,逐字确认边界;② 图内标签的字族与系列此前几篇都不同 , 本篇图内标签是 Calibri 5.05–5.78 pt(p8 三处图例、p9 三十处坐标轴刻度),而正文是 LinLibertineT 8.88/9.06 pt、图注是 LinBiolinumT 7.89–8.05 pt;因此本篇的图元定框不能沿用「按字号排除正文」的老判据,必须按字族 + 字号双条件判;③ 两处错编码已还原: txexs 字体的 U+0010/U+0011 两个控制符,按上下文还原为公式里的大方括号 [/];④ 图元定框换了一轨:get_image_info() 的 bbox 在「同一张位图多处裁剪放置」时报的是裁切前的原始位置(p5 实测声明 x[14.9, 602.1] 而墨迹只到 x[52.0, 557.8]),故本篇图轨一律以墨迹行块定框,并以「逐边外扩 6 pt 的邻域墨密度 > 3%」做自检(27/27 全部通过)。
两处原文口径不一致(点名但不动原文,本页一律以配表的逐格读数为准):① 81k 档的改进幅度:摘要与 §4.1 写「1.5% 以上」,而 Table 1 的 Mean 列逐格相减是 1.2;② ABC 数据集的档位:§4.1 写「2k 与 81k 上分别为 89.0% 与 92.5%」,而 Table 3 的列只有 2k/8k/32k,且 32k 档是 92.4。
另需记的:27 件全部为横幅,无一件走 tall 限高容器(纵横比 1.004–6.339;最宽扁是 Fig. 7 的 6.339,最接近方形是 Fig. 16 的 1.004);所有图件的裁切都保证框内只含图内标签、不含正文或图注。本篇的逐格读数全部取自 Table 1–9 的逐行重建(tables-rows.txt),没有从正文的叙述里抄数, 上面那两处「正文与配表不一致」正是这样被发现的。
原文摘要 Abstract, p.0(英文原样引用 · 照录自 arXiv 摘要页 · 原文未分小节)

Point clouds are widely used representations of 3D data, but determining the visibility of points from a given viewpoint remains a challenging problem due to their sparse nature and lack of explicit connectivity. Traditional methods, such as Hidden Point Removal (HPR), face limitations in computational efficiency, robustness to noise, and handling concave regions or low-density point clouds. In this paper, we propose a novel approach to visibility determination in point clouds by formulating it as a binary classification task. The core of our network consists of a 3D U-Net that extracts view-independent point-wise features and a shared multi-layer perceptron (MLP) that predicts point visibility using the extracted features and view direction as inputs. The network is trained end-to-end with ground-truth visibility labels generated from rendered 3D models. Our method significantly outperforms HPR in both accuracy and computational efficiency, achieving up to 126 times speedup on large point clouds. Additionally, our network demonstrates robustness to noise and varying point cloud densities and generalizes well to unseen shapes. We validate the effectiveness of our approach through extensive experiments on the ShapeNet, ABC Dataset and real-world datasets, showing substantial improvements in visibility accuracy. We also demonstrate the versatility of our method in various applications, including point cloud visualization, surface reconstruction, normal estimation, shadow rendering, and viewpoint optimization. Our code and models are available at https://github.com/octree-nn/neural-visibility.

这一篇要讲清的 14 件事
  • 一个点是不是被挡住了,为什么严格说没有答案,以及前人是怎么绕开它的。
  • 前人三条路(表面重建、HPR、二维投影网络)各自缺的那一块。
  • 把它当二分类:特征抽一次、视角复用多次这个结构是怎么省下钱的。
  • 特征提取器:点云怎么变成八叉树,U-Net 的分辨率阶梯与通道数有什么规矩。
  • 视角方向怎么编码成高频信号,两条未编号式逐项拆开。
  • 训练标签从哪来:先修网格,再撒点,再用射线求交。
  • 主对照:红点是误报、蓝点是漏报,误差落在高曲率区。
  • 19 个类别 × 4 档密度的完整读数,以及「有法向」那一档还能再涨多少。
  • 泛化:训练时没见过的 5 个类别,和换一个数据集。
  • 尺度与速度:不重训接住 130k 点,以及五种实现的耗时走势。
  • 噪声与残缺:为什么它比 HPR 抗噪,以及在哪些地方还是会漏。
  • 消融:八叉树深度、Transformer,以及那 0.5 个百分点到底来自哪一项。
  • 五条应用:可视化、视点相关重建、法向估计、阴影投射、视点选择。
  • 结论、四条局限,以及出处与许可。

1点云上「谁挡着谁」严格说没有答案

1.1 「这个点被挡住了没有」严格说没有答案

这一章的起点是一句听起来像抬杠的话:对一朵点云,问「这个点从这个视点看得见吗」,严格来说是没有答案的。原文给的理由很直接,一个点在数学上是无限小的,所以「被另一个点精确挡住」的概率近乎零[§1, p0]。可人眼看点云时明明能分出前后,这份「前后」其实来自我们对它背后那张曲面的先验,而不是来自点集本身。

这句话不是修辞,它决定了整篇的写法。既然答案不在点集里,任何方法都得从别处借一份先验。原文把前人借先验的方式分成三条,而它接下来做的选择,就是换一个借法[§1, p0–p1]。

图 1-1:一朵点云、一个视点、四步下游:从「哪些点看得见」一路接到网格(E 类 · 证据)· 原文 Fig. 1, p0
图 1-1 一朵点云、一个视点、四步下游:从「哪些点看得见」一路接到网格(E 类 · 证据)· 原文 Fig. 1, p0 怎么读 ①图注:原文的 teaser 从左到右摆了四格:输入点云、给定视点下预测出的可见点(被挡住的点不再画出)、由这份可见性估计出的法向、以及用泊松重建得到的最终网格。它在图注里同时给出三条主张:直接预测每个点的可见性、实时、在噪声与不同密度的点云上依然准确,并且强调正是这一点「使一系列应用成为可能」[Fig. 1 图注, p0]。 ②读法:这张图要横着看,看的是「一条链」而不是「一张图」。四格之间存在严格的依赖顺序:可见性错一点,法向就会在遮挡边界上被拉歪,网格就会在凹处糊掉。所以每一格的判别点都落在前后两格的接口上,第一格里看「被挡住的点是否真的消失了」,第二格里看遮挡轮廓是否干净(有没有一层该隐去的点浮在表面),第三格里看法向在剪影处有没有突然反向,第四格里看凹区有没有被填平。这张图也是全篇的路线图:后面九章(第 7–13 章)几乎都是在把这条链的某一环放大。 来源:Neural Visibility of Point Sets, Fig. 1, p0 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:把这条链按「一份输入、一次前向、多次查询」拆开,正好对上前人绕不开的那个成本:表面重建那一路要先把点连成面(第 2 章),HPR 那一路每换一个视点就要重算一次凸包(第 2 章),本篇把与视角无关的那一半只算一次,八叉树 U-Net 抽出逐点特征,之后每换一个视角只跑一次两层 MLP[§3, p2]。teaser 第二格与第一格的差别,就是这一份特征被复用之后的结果;第 3 章的结构图会把这条分界线画出来。

④边界:这张图演示的是单朵点云、单一物体、视点落在视觉外壳之外的常规情形。它没有覆盖三件事:残缺点云(点被抠掉之后,遮挡关系本身会变,第 11 章)、场景级点云(多个物体之间的相互遮挡,第 12 章末尾)、以及薄结构与多层遮挡(第 12 章的失败案例)。读这张图时不要把「四步链跑通」当成所有输入的保证。

2前人三条路,各缺一块

原文用四个粗体小标题铺开相关工作,但真正要读者记住的是三条路线各自在哪儿断的[§2, pp.1–2]。

2.1 前人借先验的四条路

第一条路:先重建表面,再做可见性测试。点云本身没有被挡的概念,那就先把它变成有面的东西,隐式函数[Hoppe 等 1992;Kazhdan 等 2006;Ohtake 等 2003;Carr 等 2001;Kazhdan 与 Hoppe 2013;Hou 等 2022;Lin 等 2022]、移动最小二乘[Alexa 等 2003;Fleishman 等 2003]、以及各种神经隐式表示[Park 等 2019;Mescheder 等 2019;Chen 与 Zhang 2019;Gropp 等 2020;Wang 等 2023]都算这一类。它缺的那一块是「重建本身还是开放问题」,原文点名引了 2017 年那篇综述[Berger 等 2017],并且指出大、含噪、方向不一致的点云上重建尤其贵[§2, p1]。这条路把难题挪了个位置,没有消掉它。

第二条路:点云上的直接可见性,也就是 HPR。它的做法干净:把点云按视点做一个球变换,再求凸包,落在凸包上的点就算可见[Katz 等 2007;Katz 与 Tal 2015]。后续工作分别去补三件事,抗噪与残缺[Mehra 等 2010]、球变换的理论前提与 HPR 的性质[Katz 与 Tal 2015]、用近似凸包提效率[Silva 等 2012],以及让它可微[Katz 与 Tal 2025]。它缺的那一块是「凸包本身贵」:平均 O(n log n)、最坏 O(n²)[§4.1, p6],而且用近似凸包换来的速度是要用精度赔的;更要紧的是它靠的是一个人手设计的先验(球变换),在凹区、噪声、低密度点云上系统性地吃亏[§2, p1]。

第三条路:把点云投到像素平面,用二维网络判可见[Pittaluga 等 2019;Song 等 2021]。它缺的那一块是「分辨率」,判据落在像素上,于是精度被图像分辨率与点云密度同时锁住,换一个尺度的点云就要重来[§2, p1]。本篇的第 9 章会把它作为三个基线之一(InvSfM)量化出来:2k 点时平均只有 39.5%,81k 点也只有 70.9%[Table 1, p4]。

第四条其实不算「路」,而是工具:三维深度学习本身。体素 CNN[Maturana 与 Scherer 2015;Wu 等 2015]、稀疏体素 CNN[Wang 等 2017;Graham 等 2018;Choy 等 2019]、点云网络[Qi 等 2017a, b;Li 等 2018]、以及近年的三维 Transformer[Zhao 等 2021;Guo 等 2021;Engel 等 2021;Wu 等 2022, 2024;Wang 2023]都在这一栏里。原文在这里只下一句断言:它把这些工具用在了一个新问题上,而这一步本身即可算作贡献[§2, p2]。

这一章的方法论价值在于「先立标准再挑工具」。原文没有说「我们的网络更强」,它先指出前三条路缺的分别是「重建的代价」「先验的手工性」「分辨率的锁定」,然后只挑了最后一条当作工具,因为它既不引入新的几何先验,也不把判据绑在像素上。第 14 章的局限一节会承认,这个选择也带来它自己的代价:训练要真值标签。

2.2 三条路缺的其实不是同一种东西

把三条路「缺的那一块」换算成同一把尺子,会发现它们缺的并不是同一种东西。第一条路缺的是算力与鲁棒性:它得先把点连成面,而这一步在大尺度、含噪、法向不一致的输入上会失败,失败之后整条链无从谈起[§2, p1]。第二条路缺的是先验的可迁移性:球变换是人写死的几何构造,它在凸的区域上很准,而凹区、低密度区、噪声区恰恰是它最不设防的地方;后续那几件工作(补抗噪、补理论前提、补近似凸包)都是在给同一个手写先验打补丁[Mehra 等 2010;Katz 与 Tal 2015;Silva 等 2012]。第三条路缺的是尺度不变性:判据落在像素上,于是同一朵点云换个分辨率就是一个新问题[§2, p1]。三条路的故障模式都落在输入的某一侧极值上:点云太大、噪声太多、分辨率太高。本篇换掉的是「先验借在哪一层」这个位置,而不是「哪条路更好」这个排序:把曲面这件事交给网络去学,但只要求它学在一个与视角无关的特征空间里[§3, p2]。代价因此从「输入的极值」挪到了「标签的可得性」上,这是第 6 章与第 14 章要一起算的一笔账。

还有一条标准原文没有明写,但从第 13 章可以倒推出来:可微性。HPR 那条路的可微版本是后来的事[Katz 与 Tal 2025],而本篇因为整条链只是「特征加一个两层 MLP」,天然对视角可导[§4.3, p9]。它换来的是一类新的用法,而不只是一点精度:一旦对视点可导,视点本身就能被当作优化变量(第 13 章第五条应用)。选工具这一步因此不只是在挑「哪个更准」,也是在挑「后面能长出哪些用法」。原文把「可微」单独列进优点清单时,指向的其实是它能兑现的应用面[§1, p1]。

2.3 一张取舍表:本篇站在哪一格

把三条路并排摆成一张取舍表,本篇的位置就一目了然:

路线借的先验借用方式缺的那一块与本篇的关系
表面重建后再判可见「点来自一张曲面」显式重建曲面重建本身是开放问题,且大/噪/无方向的点云上很贵被绕过
HPR(球变换 + 凸包)「可见点落在变换后的凸包上」人手写进算法先验是手写的;凸包贵(最坏 O(n²))被作为主对照
二维投影 + 像素网络「可见性可以从图像里读出来」从数据学判据锁在图像分辨率与点云密度上被作为第三对照(InvSfM)
本篇「曲面—可见性」这一对关系从数据学,但学在与视角无关的特征空间里要真值标签;只面向单物体—

这张表有两条读法上的讲究。其一,四条路借的其实是同一份先验(「点来自曲面」),差别只在「借的手法」,显式重建是把曲面造出来,HPR 是把曲面这件事写成一个几何构造,二维投影是把曲面留在像素里,本篇是把它交给网络。这就是为什么第 1 章那句「严格说没有答案」不是修辞:四条路都在回答同一个本不存在答案的问题。其二,只有本篇与第三条路是「学」出来的,而后者的判据落在图像上、前者落在点上,这正是第 9 章里 InvSfM 掉到 39.5% 的根源:它的判据落在了像素上,而像素分辨率与点云密度同时锁着它。把这张表放在全篇之前读,后面九章那些数字就有了坐标系。

3把它当一道二分类题:方法总览

原文的做法可以压成一句话:给每个点输出一个两通道的分数,得分高的那一路就是它的可见性。但真正撑起后面所有性能数字的,是这句话被拆成了两个部件[§3, p2]。

3.1 两个部件、一条分界线

部件一:特征提取器。一个建在八叉树卷积(O-CNN[Wang 等 2017])之上的 U-Net[Ronneberger 等 2015],它只看点云本身,完全不知道视点在哪,输出是每个点的一条特征向量[§3, p2]。「与视角无关」这个限定是整篇的成本结构所在,一朵点云的这一遍前向只跑一次。

部件二:可见性预测器。一个两层 MLP,输入是「上一步的特征 + 视角方向」,输出两个通道(可见/不可见)[§3, p2]。它极轻,所以可以反复跑:换一个视角,只要把新的方向喂进去再走一次前向,不需要重算特征。原文把这条性质表述得很直白:同一份特征可以被任意多个视角复用[§3, p2]。

3.2 分界线为什么划在视角这一刀上

分界线为什么划在这一刀上,是这一章最该问的问题。把视角一起交给 U-Net 学,技术上完全可行(把方向向量当成额外的输入通道即可),原文不这么做,是因为两件事的变化频率差得太远:点云在一帧里是固定的,而视点在一帧里可能被查询成百上千次,第 13 章的视点优化要跑 300 次前向,法向估计要跑 26 次[§4.3, pp.8–9]。变化频率差得远,就该把不变的那一半缓存起来,这就是分界线必须划在这里的理由,也是「与视角无关」这个限定会在第 5 章被反复强调的原因。

第二处值得单独看的是 MLP 拿到的东西:它是「逐点特征」与「编码后的视角方向」两样拼起来的,目标里并没有某个全局的视角嵌入,这意味着每个点各自判自己的可见性,不必先假设「同一视角下所有点的可见性共享某种结构」。这个选择在数据上的后果,第 8 章会以「HPR 在复杂类别上落后 5 个百分点以上」的形式显示出来[Table 1, p4]。

第三处是参数量的分配:U-Net 承担了几乎全部参数(原文在消融里交代过,把 U-Net 加深到 5 层会把参数量从 40M 推到 130M),而那个两层 MLP 只有 128/64 两个隐层[§4.2, p7]。「重的一端只算一次、轻的一端反复算」这条原则,与后面所有的性能数字都直接相关,第 10 章那条「20 万点以上快 126 倍」的读数,就是这条原则在大规模输入上的兑现[§1, p1]。

图 3-1:两个部件、一条分界线:左边的东西只算一次,右边的东西每换一个视角算一次(E 类 · 证据)· 原文 Fig. 2, p2
图 3-1 两个部件、一条分界线:左边的东西只算一次,右边的东西每换一个视角算一次(E 类 · 证据)· 原文 Fig. 2, p2 怎么读 ①图注:图从左到右串了四段:输入点云、U-Net 特征提取器、位置编码后的视角方向与特征的结合、轻量 MLP。图注给了三条关键说明:提取器抽的是与视角无关的特征、这些特征在多个视点之间共享、视角方向被编码到高维空间后与特征结合,产生「视角相关特征」,最后由 MLP 在每个点上估出可见性[Fig. 2 图注, p2]。图里还标出了两个张量的名字(View-Independent Feature 与 View Direction)与三个部件的名字(Feature Extractor/Visibility Predictor/Input)。 ②读法:先找那条「共享线」,它就是 View-Independent Feature 那条支路:它左边的所有计算与视点无关,右边的所有计算与视点有关。判别点因此有两个:第一,结合那一步是「乘」还是「接」(原文在实验里试过两种,见第 5 章);第二,MLP 有多薄:图上它是整条链里最小的一个方块,而它的薄正是「可以每帧重跑」的前提。这张图是全篇的骨架:第 4 章放大左边的方块,第 5 章放大右边的方块与那个结合符号。 来源:Neural Visibility of Point Sets, Fig. 2, p2 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:这张图上的分界线,正好解释了第 10 章那两条曲线为什么形状不同。特征提取器那一侧的耗时随点数增加但会收敛到一个常数(八叉树把输入重采样到了固定分辨率),而 MLP 那一侧的耗时随点数近似线性增长(每个点都要过一次前向)[§4.1, p6]。两条曲线加起来,「点数很多」时真正的瓶颈从 U-Net 挪到了 MLP;第 10 章的图会给出一条大约在 5 万点附近的分界。

④边界:这张图画的是「一次特征、一个视角」的最小闭环,它没有画出两种原文明确放弃的做法。其一,把点膨胀成面元或球再泼溅到 Z 缓冲[Zwicker 等 2001;Rusinkiewicz 与 Levoy 2000;Guennebaud 等 2004],原文拒绝它的理由是半径难定、而且往往要用到点法向,而法向并非总是可得[§2, p1];其二,把点云投到像素空间再用二维网络判:否定理由是精度被分辨率与密度锁住[§2, p1]。读这张图时不要把「特征 + 视角」当成唯一合理的分解方式,它是原文为了「省一次前向」而做的取舍。

4特征提取器:点云进八叉树,U-Net 把特征长回来

4.1 把无连接的点云变成逐点特征

这个部件的任务是把「一朵没有连接关系的点云」变成「每个点一条特征向量」。原文的路线是先规整化、再卷积、最后插值回去,三步各有一处设计决定[§3.1, p2]。

第一步:归一化到单位立方体,再递归细分成八叉树。细分的停止条件是到达最大深度,最细一层的节点里存的是落在该体素内那些点的平均坐标,这就是 U-Net 的输入信号;如果点云带法向,就把平均法向与平均坐标拼在一起作为输入[§3.1, p2]。这一步的作用是把「无序、密度不均」这个麻烦换掉,八叉树本质上是一次输入重采样,第 10 章讲可扩展性时会回到这一点。

第二步:U-Net 在八叉树上做卷积。它的组件是一堆残差块 + 下采样层 + 上采样层 + 跳跃连接,每个残差块里是两层八叉树卷积,中间夹批归一化与 ReLU[§3.1, p2]。下采样一路把分辨率降下来、通道数升上去,上采样一路反过来。

第三步:把最细一层的节点特征插值回原始点。原文用的是定义在八叉树上的插值模块[Yang 等 2021],把节点特征「泼溅」到输入点上,得到逐点特征[§3.1, p2]。这一步的必要性来自第二步:网络是在八叉树的节点上算的,而下游要的是每个点上的特征。

图 4-1:一张「分辨率—通道数」的对照表:三个阶段、每个阶段几块残差,以及通道数怎么翻倍又减半(E 类 · 证据)· 原文 Fig. 3, p3
图 4-1 一张「分辨率—通道数」的对照表:三个阶段、每个阶段几块残差,以及通道数怎么翻倍又减半(E 类 · 证据)· 原文 Fig. 3, p3 怎么读 ①图注:图注给了三条可核对的规则,图里的 𝑁× 表示该阶段的残差块个数、残差块里初始通道数是 32、每经过一个下采样层通道数翻倍,每经过一个上采样层通道数减半[Fig. 3 图注, p3]。图内标注了一串部件名(Octree-based residual block、Conv3×3、Octree BN、ReLU、Addition、Skip connection)与输入输出符号(P_in/O_in/O_out/F_out,右下角图例说明 P 是点云、O 是八叉树、F 是特征),横向还标着一列数字 2× 3× / 4× 6× / 2× 2× 2× 2×。 ②读法:把这张图当「预算表」读,不要当流程图读。2× 这一类记号是该阶段残差块的个数,因此每个阶段的算力大致正比于「块数 × 通道数」;沿着下采样方向读,块数在涨(2→3→4→6)、通道数也在涨,两者相乘意味着深层那一段是全网络最贵的地方。判别点在跳跃连接:它把上采样时的高分辨率细节从下采样那一侧直接搬过来,没有它,最细一层的特征会只剩深层那点粗信息。这条链也解释了「与视角无关」为什么能成立:整张图上没有出现任何与视点有关的输入。 来源:Neural Visibility of Point Sets, Fig. 3, p3 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:把图注那三条规则连起来,可以算出这条链的参数与分辨率走向。设初始通道 32:下采样一次通道 64、再一次 128;上采样时反过来减半。残差块数在下采样侧是 2、3、4、6,在最细那一层(八叉树最大深度)做卷积,因此深度直接决定卷积的体素数量。第 12 章会给出这四条规则的实测代价:八叉树深度从 6 加到 9,耗时 30.7 → 75.0 ms(2.44 倍),而精度只从 95.7% 走到 97.4% 再回落到 97.3%[Table 5, p7],深度 8 是这条曲线上的拐点。同一章还会给出另一条读数:把 U-Net 加厚到 5 层,参数量 40M → 130M,测试精度却一样[§4.2, p7],这说明这张图的容量在深度 8 + 初始通道 32 这一档已经够用。

④边界:这张图有一个隐含前提:八叉树的最大深度是可设的、而且深度决定了输入被重采样到什么分辨率。它的代价写在「细」与「贵」上:深度不够会丢掉细节(精度掉到 95.7%),深度过大则卷积的体素数量暴涨(75.0 ms)[Table 5]。另有一处不在这张图上、但在同一部件里的边界:输入信号可以是「坐标」也可以是「坐标 + 法向」,后者更强但要额外输入(第 8 章的后四行)。读这张图时不要以为通道数翻倍是免费的,它与阶段块数一起决定了这套结构的算力重心。

5可见性预测器:视角怎么编码、特征怎么共享

右边这个部件只有两步:先把视角方向编码成高频信号,再把它与特征结合、交给两层 MLP[§3.2, p2–p3]。

5.1 先定网络:两层 MLP

先定网络本身:两层全连接,隐层维度分别是 128 与 64,中间有批归一化与 ReLU,输出两个通道分别表示「可见」与「不可见」的分数[§3.2, p2]。原文顺带交代了一次取舍,隐层更大收敛更快,但精度提升不显著,所以留在这一档[§3.2, p2]。

5.2 视角方向怎么编码成高频信号

再定视角方向的编码。视角方向是一个三维单位向量 p = (p₁, p₂, p₃),原文不做归一化之外的处理,而是逐分量展开成一串正弦/余弦[§3.2, p2–p3]:

— γ(p_i) = [ sin(2⁰πp_i), cos(2⁰πp_i), …, sin(2^{L−1}πp_i), cos(2^{L−1}πp_i) ](原文未编号式 · §3.2, p3)

这条式是本篇唯一的「输入侧」公式,而它的每一项都有来历。原文的动机抄的是 NeRF 与 Fourier Features 那一族[Mildenhall 等 2020;Tancik 等 2020]:网络直接吃低维坐标时学不出高频细节,先把坐标抬到高维再喂进去就能学出来[§3.2, p2]。

逐项拆:频率取 2 的幂,于是第 k 项覆盖的角频率是 2^{k−1}π;L 条频率首尾相差 2 的 L−1 次方倍,等于把「粗到细」整个频段一次铺满。sin 与 cos 必须成对:只用 sin 的话,p_i 与某个对称位置的取值会撞在一起,加一条相位差 90° 的 cos 就能把两者分开。每个分量送出 2L 个数,三个分量拼起来是 6L 维。原文并没有对 p 做额外的尺度缩放,因为它已经是单位向量,p_i ∈ [−1, 1],第 0 档频率给出的是最粗的一圈起伏。

然后是与特征的结合。原文把编码后的方向向量与 U-Net 的输出逐元素相乘,得到「视角相关特征」,再喂给 MLP;它明确比较过「乘」与「拼接」两种做法,并报告乘法略好[§3.2, p3]。注意这里没有另一条公式,结合方式被当作设计选择直接说明,而不是写成一条需要推导的式子。

最后是损失。可见性判定是二分类,所以原文用交叉熵[§3.2, p3]:

— L = − (1/N) · Σ_{i=1}^{N} [ y_i log(ŷ_i) + (1 − y_i) log(1 − ŷ_i) ](原文未编号式 · §3.2, p3)

逐项拆:N 是每个训练批里的点数,外面的 −1/N 是对批内求平均(不是求和,因此损失与批大小无关);yi 是第 i 个点的真值可见性(取 0 或 1)、ŷ_i 是网络给出的可见性;因为 yi 只能取 0 或 1,中括号里两项每次只有一项真的在算,点可见时 (1−y_i) = 0,右项消失;点被挡住时 y_i = 0,左项消失。这就是二元交叉熵的常规形态,也因此不需要再套一层 softmax:两个通道取其一即可,等价于对单通道做 sigmoid。

这里值得把「乘」与「接」的差别单独讲一遍,因为原文只给了一句结论[§3.2, p3]。设某点的特征为 f(128 维),编码后的方向向量为 e(6L 维)。拼接交出的是 [f ; e] 这个 128 + 6L 维向量,交给 MLP 之后,网络要自己学出「哪几维是特征、哪几维是方向、它们怎么互动」,这是一个乘法结构,但要用一层全连接去近似它。逐元素相乘交出的则是 f ⊙ e(把 e 广播/投影到 128 维再逐元素乘),它把「方向调制特征」这件事直接写进了结构,网络不必再学这个乘法,只需要学「调制之后往哪边走」。这就是原文那句「乘法略好」背后的机理:它把一个本该由网络学出来的算子,改成了直接写进结构里的乘法。同一条逻辑也解释了 6L 维为什么会淹掉 128 维:在拼接方案里,方向侧的维度直接进入第一层的权重,L 一大会让方向信息在初始化时压过特征信息;而在乘法方案里,方向侧只充当系数,维度大小不改变量级。这是本篇里唯一一处「结构即先验」的设计,也是它比后来者更容易复现的原因之一。

5.3 两条式合起来:频率选择性与硬边界

③推导(两条式的联合):把 U1 代进「结合」那一步、再把结合后的向量代进 U2,就能看出一件原文没有明说的事,编码后的视角方向与逐点特征相乘,等于给每个点、每个视角造出一组「频率选择性」的输入:U1 决定网络能看到多细的视角变化,U2 决定网络把「可见/不可见」这条边界推到哪里。工程上的含义是:U1 里 L 太小,视角变化就被抹平成常数(网络等于不区分视角);L 太大则 6L 维输入会淹掉那 128 维的特征。原文没有给 L 的扫描实验(第 12 章的消融只做了「有/无位置编码」这一档),因此这条式的 L 是一个原文未交代的超参,这构成本篇的一处信息缺口,第 14 章的局限会点到它。

④边界:这两条式合起来描述的是一个「单点、单视角、二值」的判定。其一,判定是硬二值的,没有「半可见」这一档:原文自己在结论里把「改成概率化的可见性」列为未来工作[§5, p9];其二,交叉熵按点平均,因此遮挡边界上那一小撮错点对损失的贡献与大片错点是一样的权重,而第 7 章的定性图恰好显示误差就集中在边界与高曲率区;其三,U3 那一条视点选择的损失(第 13 章)用的 o_i(v) 正是这里输出的「不可见分数」,所以它可微这件事也是从这两条式继承来的。

6标签从哪来:先修网格,再撒点,再用射线求交

监督学习要真值,而真值恰好是这一篇要解决的那个量。原文把这件事讲得很清楚:ShapeNet 这类公开三维数据集只给网格,既没有可见性标注,网格本身的质量也常常不够(有洞、有自交)[§3.3, p3]。所以它自己造标签,一共三步[§3.3, p3]:

6.1 标签三步:修网格、撒点、射线求交

第一步,修网格。用已有的方法[Wang 等 2022]把 ShapeNet 的网格修成水密且流形,因为下一步的射线求交要求「内外分明」,一个有洞的网格会让射线从洞里穿过去,于是本该被挡住的点被标成可见。

第二步,在表面上随机采 200k 个点,得到输入点云。

第三步,逐点判定。在点云包围球表面上随机均匀取一个视点;把每个点与该视点连成线段,与所有三角面做求交;有交则该点不可见,无交则可见;对点云里每个点重复一遍,就得到这一场的可见性标签[§3.3, p3]。

三步合起来看,原文其实给标签定了一个明确的口径:可见性不是对「点集」定义的,而是对「点集背后的那张曲面」定义的。这与第 1 章那句「严格说没有答案」正好闭合,答案来自曲面这个先验,只不过这份先验是从数据里借的,不是人手写进算法的。原文也在同一段里交代了这个选择的代价与补救:训练用合成数据,但第 4 章会验证它能迁移到真实扫描[§3.3, p3]。

6.2 这套标签的账:比训练还贵

这套流程的账,值得单独算一遍,因为它是本篇最容易被忽略的成本。一朵点云 200k 个点、每个点要与整张网格的所有三角面求交,ShapeNet 的单个模型动辄几万个面,逐点逐面的朴素做法是 2×10⁵ × 10⁴ 量级,即便用包围盒层次或 GPU 的光线求交把它压到对数级,一朵点云仍是一次可观的开销;而训练集里每种密度、每个视点都要这样来一遍。原文对此一个字也没提,只说「训练用合成数据」[§3.3, p3];但从这段流程能推出一个结论:这套方法的门槛不在训练本身,而在标签生产线上,它需要「有水密网格」这个前提(ShapeNet 是被专门修过的),以及一次性的求交算力。这也解释了为什么它很难只靠少量真实扫描复现:真实扫描没有水密网格,标签就无从生成。

另一处值得留意的是这套标签的「粒度」。扰动幅度的单位是包围盒尺寸的百分比[§4.1, p6],可见性的判据则是「这条线段是否与任何三角面相交」,两者都是严格的几何量,没有任何人工标注的主观成分。这一点让本篇的所有精度指标都可以被独立复现(只要拿到同一份修补网格),而这也是它能给出第 8 章那张 16 × 19 的逐格表的前提:没有主观标签,才敢把小数点后一位摆出来。

③推导:这三步的每一步都在为「标签可信」服务,而且顺序不可换。修网格必须在撒点之前(撒完点再修网格,点与面的关系就对不上了);求交必须在包围球上取视点(视点若落在物体内部,遮挡关系会退化成「全都不可见」)。这套流程还有一个副产品:因为它对每个点独立做求交,所以标注是逐点真值而不是图像真值,这一点直接决定了后面所有指标都是逐点可见性精度,而不是渲染意义上的图像误差。第 7 章那两张定性图里的「红点/蓝点」,就是这套逐点真值算出来的误报与漏报。

④边界:这一章的方法有三处它自己承认或可推知的边界。其一,真值依赖那一步网格修补的质量:修补出的曲面若与物体的真实表面有偏差,标签就带着系统误差,而原文没有报告修补失败的比例。其二,视点被限制在包围球表面上,因此训练分布里没有「视点跑到物体内部或很远处」的情形;第 14 章的局限一节也承认,本篇面向的是单物体、视点位于视觉外壳之外的场景[§5, p9]。其三,求交是逐点逐面的精确计算,200k 点乘上面数意味着标注本身比训练还贵,这是「用算力换标签」的一次性成本,它不重复发生,但也决定了这套方案很难只靠少量数据复现。

7把误差画出来:红点是误报、蓝点是漏报

7.1 两张误差对照墙:红点与蓝点

在给数字之前,原文先用两张对照墙把「谁在哪儿错」摊开。两张图的读法完全一致:从左到右依次是输入点云、真值可见性、HPR、HPRO、InvSfM 与本篇,红色点表示误报(判成可见、其实被挡)、蓝色点表示漏报(判成不可见、其实是可见的)[Fig. 5/Fig. 6 图注, p5]。

图 7-1:同一朵点云、六列对照:红点与蓝点就是误报与漏报(E 类 · 证据)· 原文 Fig. 5, p5
图 7-1 同一朵点云、六列对照:红点与蓝点就是误报与漏报(E 类 · 证据)· 原文 Fig. 5, p5 怎么读 ①图注:每朵点云含 100k 个点;从真值那一列开始,每一列用红/蓝标出该方法的错点,红=误报、蓝=漏报;图注给的结论是本篇的预测更准,在高曲率区尤其明显[Fig. 5 图注, p5]。②读法:这张图不能「整体比谁的点少」,要按区域比。判别点有三个:第一,看凹区:那里最容易被判成可见却其实被挡(红点集中);第二,看剪影边缘:那里点密度在屏幕上突然变稀,二维方法最容易漏(蓝点集中);第三,看内部结构(杯口、椅子腿这一类):那里是「多层遮挡」的第一现场。原文只对第一项下了断言(高曲率区),后两项留给第 12 章的失败案例。 来源:Neural Visibility of Point Sets, Fig. 5, p5 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算:这张图的两种颜色在正文里有一组可以当场对上的读数。原文在消融一节给出了 ShapeNet 上的错误率,本篇漏报 4.3%、误报 2.0%,而 HPR 是漏报 9.2%、误报 1.1%[§4.2, p7]。把这四个数摆开,图 7-1 里「蓝点明显变少、红点未必更少」这件事就有了解释:本篇把 HPR 的漏报砍掉了 4.9 个百分点(9.2 → 4.3),代价是误报多了 0.9 个百分点(1.1 → 2.0)。换句话说,它把一部分「把看不见的判成看得见」的错误,换成了「把看得见的判成看不见」。这条换算决定了这张图该怎么看:本篇那一列应当比 HPR 少一片蓝,而红点未必更少。

④边界:这张图的每组点云是 10 万点,属于「点足够密」的那一端;而原文在 Table 1 里给出的最大优势发生在 2k 那一档(+3.7),说明这张图并不是本篇优势最大的场景。另有一处读法上的陷阱:红蓝点只标「对与错」,不标「错多少」,一个点被误判的代价与它的位置无关,而实际应用里遮挡边界上的错点比物体内部的错点更致命(第 13 章的可视化与阴影都会把它放大)。读这张图时不要把「点少」等同于「错得轻」,也不要用它去替代第 8 章那张逐格数表。

图 7-2:把同样的对照搬到真实扫描上:几何复杂度更高,训练却只用过 ShapeNet(E 类 · 证据)· 原文 Fig. 6, p5
图 7-2 把同样的对照搬到真实扫描上:几何复杂度更高,训练却只用过 ShapeNet(E 类 · 证据)· 原文 Fig. 6, p5 怎么读 ①图注:列序与图 7-1 完全相同;点云来自 Google Scanned Objects[Downs 等 2022];原文在图注里不提数字,只在正文说一句 「这些真实点云的几何复杂度明显高于 ShapeNet」[§4.1, p7]。②读法:这张图的判别点只有一个:本篇那一列有没有「系统性崩掉」。真实扫描里既有噪声、又有扫描缺失,还有不属于训练分布的高曲率细节;如果网络只会背 ShapeNet 的形状,这一列就会整片泛红。原文的读法是在凹区与高曲率处仍然更准[§4.1, p7]。把它与图 11-2(含噪)/图 11-3(残缺)连起来看,三张图其实在问同一件事的三个变体。 来源:Neural Visibility of Point Sets, Fig. 6, p5 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

7.2 把「错」分成四类来数一次

把「错」分成四类来数一次,这两张图的位置才清楚。逐点二值判定一共只可能出四种结果:判对可见、判对不可见、把可见判成不可见(漏报)、把不可见判成可见(误报)。后两类就是图上的蓝与红。原文在消融一节给出一组全局读数(本篇漏报 4.3%、误报 2.0%,HPR 漏报 9.2%、误报 1.1%)[§4.2, p7],把这四个数做成一张 2 × 2 的对照:

方法漏报率误报率两类合计
本篇4.3%2.0%6.3%
HPR9.2%1.1%10.3%

这张小表给出两个不常被同时提到的结论。其一,本篇把总错误率从 10.3% 压到 6.3%(降 39%),而其中绝大部分来自漏报那一栏(−4.9)。其二,误报那一栏它是输的(2.0 对 1.1),也就是说它换了一种「错法」。为什么这种换法对本篇有利、对下游未必有利,要分两头说:在「只画可见点」这类应用里(第 13 章的可视化),误报意味着屏幕上多出一层本该被挡住的点,而这比少画几个点更显眼;在「视点选择」那条优化里,o_i(v) 恰好就是「不准」的那一支,误报会让优化目标本身被污染[第 13 章 U3]。原文只强调了漏报那一侧的优势,这张 2 × 2 是把另一半补上。

③复算:这两张图本身没有数字,但它们的结论可以被第 8 章的逐点数表交叉验证。图 7-1 说「高曲率区更准」,对应到 Table 1 里就是复杂类别上的较大差值,2k 档的 Bench 列,本篇 92.1 对 HPR 86.0(+6.1),Table 列 95.2 对 87.5(+5.3)[Table 1];而简单类别上差距明显收窄,最极端的是 Bag 列在本篇与 HPR 之间只差 1.9(94.6 对 92.7)。换句话说,「高曲率更准」不是一句形容,它在数表上表现为「复杂类别的差值系统性大于简单类别」。

④边界:这两张图都是 10 万点的单物体点云,因此它们共同回避了两个更难的情形:点很少时(2k 档的表现要差得多,见第 8 章)、以及多个物体相互遮挡的场景(第 12 章末尾的场景级结果)。另有一处口径要提醒:图 7-1 的图注说每组 100k 点,而同一篇的 Table 1 分档是 2k/8k/32k/81k,没有 100k 这一档,两处的点云不是同一批,不要拿图上的观感去推表里的数字。

8主表:19 个类别 × 4 档密度

这是全篇信息量最大的一张表:行 = 4 个方法 × 4 档点密度(外加本篇「有法向」的 4 行),列 = 平均值 + 18 个 ShapeNet 类别,一共 16 行 × 19 列[Table 1, p4]。四个方法分别是 HPR[Katz 与 Tal 2015;Katz 等 2007]、HPRO[Katz 与 Tal 2025]、InvSfM[Pittaluga 等 2019]与本篇;点密度取 2k/8k/32k/81k[§4.1, p3]。

8.1 读表前的三个口径

先交代表前的三个口径,否则读不出表的锋利处。第一,HPR 与 HPRO 需要调参:它们有一个控制球变换核函数的参数 γ,原文扫了三组参数、报出每组里最好的结果;并指出实际场景里不可能对每一朵点云单独调参[§4.1, p3]。第二,InvSfM 用的是作者提供的预训练模型,图像分辨率按原论文取 512[§4.1, p3]。第三,本篇在推理阶段不调任何参数[§4.1, p3]。换句话说,这张表是「调过参的对手 vs 不调参的本篇」。

图 8-1:一张 16 × 19 的表:每一格都是逐点可见性精度,最后四行是「额外喂了法向」的本篇(E 类 · 证据)· 原文 Table 1, p4
图 8-1 一张 16 × 19 的表:每一格都是逐点可见性精度,最后四行是「额外喂了法向」的本篇(E 类 · 证据)· 原文 Table 1, p4 怎么读 ①图注:点云分别含 2048/8192/32768/81920 个点,记为 2k/8k/32k/81k;表中给的是平均精度与逐类别精度;最后四行(带底纹)是本篇在有点法向时的结果,并特别说明其他方法无法把点法向作为输入[Table 1 图注, p4]。②读法:先横着读一行、再竖着读一列。横着读是为了看同一方法在不同密度上的爬升(密度越大越容易,四个方法都涨);竖着读是为了看同一密度下不同类别的差异。判别点有两个:其一,比的是「本篇那一行」与「基线的最高那一行」,而不是与某个固定基线比;其二,最后四行的对照对象只能是本篇自己(因为别人吃不了法向)。这四行必须当「上界参考」读,不能加进胜负统计。 来源:Neural Visibility of Point Sets, Table 1, p4 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(本页逐格算过):把「最好的基线」取为该档里 HPR/HPRO/InvSfM 三者的最高值,再与本篇相减:

④边界:这张表有三处它自己框定的读法。其一,胜负统计里不该包含最后四行:它们是「本篇 + 额外输入」,与其他方法不同起点。其二,对手是被调过参的:因此这张表度量的是「调参之后对手的最好水平」,本篇的优势是「不调参还能超过它」,这个说法比「精度更高」更准确,也更经得起推敲。其三,这张表的类别划分来自 ShapeNet,类别之间的差异既有几何复杂度,也有点数在表面上的分布差异,原文没有把这两个因素分开,所以「复杂类别更准」这条结论里,有多少来自曲率、有多少来自点分布,本篇没有回答(第 12 章的消融也没有涉及)。还有一处不该忽略:这张表里有一格本篇是输的,2k 档的 Pillow 列,本篇 93.3 对 HPR 94.6(−1.3);原文用的措辞是「几乎在所有情形下胜出」[§4.1, p3],这个「几乎」对应的正是这一类格子。

密度本篇(Mean)最高基线(Mean)差值
2k93.0HPR 89.3+3.7
8k96.3HPR 93.6+2.7
32k97.2HPR 95.1+2.1
81k97.4HPR 96.2+1.2

8.2 这条主线:差值随密度单调收窄

这张小表本身就是本篇的一条主线:差值随密度单调收窄(3.7 → 2.7 → 2.1 → 1.2)。它说明本篇的优势主要来自「信息不足时把先验补上」,而不是「信息充足时算得更准」,点越密,几何本身就够用了,先验的边际价值越低。三处原文给的数字可以当场对上:2k 档的 +3.7 与摘要里「by 3.7% with 2k points」一致;「up to 6.1% in certain categories」对应 2k 档 Bench 列(92.1 对 86.0);「complex categories such as table and bench … by over 5.0%」对应 2k 档的 Table 列 +5.3 与 Bench 列 +6.1[Table 1;§1, p1;§4.1, p4]。

第四处原文数字对不上,这里要点名:原文在 §4.1 写 「81k 点平均 97.4%,比最好的既有方法高出 1.5% 以上」,摘要也写 「by 1.5% with 81k points」[§1, p1;§4.1, p3];而按 Table 1 的 Mean 列逐格相减,81k 档是 97.4 − 96.2 = 1.2 个百分点(相对提升 1.25%),不是 1.5。本页以 Table 1 的逐格读数为准,并把这句话记为原文的一处口径不一致(同一段里 2k 档的 3.7 与类别上的 6.1 都能对上,因此这处不像抄写错误,更像是正文与配表的版本不同步)。

8.3 「有法向」那四行能再涨多少

再看「有法向」那四行(只能与本篇自己比):2k 档 93.0 → 97.3(+4.3)|8k 档 96.3 → 97.7(+1.4)|32k 档 97.2 → 97.6(+0.4)|81k 档 97.4 → 97.6(+0.2)[Table 1]。这条递减数列比「法向有用」这句话有价值得多:它说明法向补的正是「点太少时缺的那份局部几何」,到了 81k 档,点本身已经足够描述曲面,法向几乎不再带来增益。原文对此的表述是「纳入法向进一步提升性能,并以可观幅度超过其他方法」[§4.1, p4],这个说法在 2k 档成立,在 81k 档则是「持平」。

图 8-2:换一个数据集看图:ABC 上的同一套六列对照(E 类 · 证据)· 原文 Fig. 4, p4
图 8-2 换一个数据集看图:ABC 上的同一套六列对照(E 类 · 证据)· 原文 Fig. 4, p4 怎么读 ①图注:这一条图注只有一句 「Results on ABC Dataset.」,没有给列序说明;列序按同一篇的图 7-1/7-2 推定为输入点云、真值、HPR、HPRO、InvSfM、本篇(图内标签也逐列印证:Point Cloud/GT/HPR/HPRO/InvSfM/Ours)[Fig. 4 图注与图内标签, p4]。②读法:图注极短,所以读法必须从正文借,正文交代了 ABC 与 ShapeNet 的两处差异:① 点云分布不同(跨数据集),② ABC 里有些点云含多个物体[§4.1, p4]。判别点因此落在「多物体那一行」:本篇面向单物体,多物体是它明知处理不好的情形,这一列的表现就是它跨数据集掉分的直接来源。 来源:Neural Visibility of Point Sets, Fig. 4, p4 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:这张图的正确定位是 Table 3 的定性配图,而不是独立证据,它只给了六列对照、不给数字,因此它的读法必须挂在 Table 3 的列上。把两者接起来读,能看出一件数表读不出的事:Table 3 里三个基线在 2k 档的落差并不大(HPR 88.0 对 HPRO 80.4),而图上的观感差距要大得多,这说明逐点精度差几个百分点,落到图像上会变成「轮廓干净/轮廓毛糙」这种质变。这也是这一篇要把定性图放在定量表旁边的原因:表回答「差多少」,图回答「差在哪」。

④边界:这张图与它的表共享同一处未交代的前提,多物体那一类到底占多少。原文说 ABC 里「有些点云含多个物体」,但没有给比例;因此从这张图看不出它的掉分是「普遍现象」还是「少数样本拖累的平均值」。第二处边界是视角:图上的世界坐标朝向是固定的,而跨数据集掉分最可能发生在「点云朝向与 ShapeNet 的习惯不同」这一类情形上,固定的图注无法暴露这种系统性偏差,要查它得看按朝向分组的统计,而原文没有做。读这张图时把它当「有没有明显崩坏」的检查,不要当「跨数据集质量」的度量。

9换个类别、换个数据集:泛化

泛化在这篇里被拆成两个不同的问题,用两张表分别回答。

9.1 换类别:5 个没见过的类别

第一个问题:换类别。原文只用 ShapeNet 的 13 个类别训练(而主表用的是 18 个),把剩下 5 个类别留作测试[§4.1, p4]。

图 9-1:「见过」与「没见过」并排摆:5 个类别、4 档密度、逐格只差零点几个点(E 类 · 证据)· 原文 Table 2, p6
图 9-1 「见过」与「没见过」并排摆:5 个类别、4 档密度、逐格只差零点几个点(E 类 · 证据)· 原文 Table 2, p6 怎么读 ①图注:Seen 表示该类别出现在训练集里,Unseen 表示没出现;列是 Bag/Bed/Bottle/Pillow/Phone 五个类别,行按密度成对出现(Unseen 2k 与 Seen 2k 相邻)[Table 2 图注, p6]。②读法:这张表要「成对读」,每一对(Unseen 与 Seen)在同一密度下点数相同、输入完全相同,唯一的差别就是训练时有没有见过这个类别。因此判别点唯一:同一对之间差多少。如果差得大,说明网络学的是「记住形状」;如果几乎不差,说明它学的是「可见性这件事本身的规律」。 来源:Neural Visibility of Point Sets, Table 2, p6 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(逐对相减):2k 档:Bag 94.6/94.6(0.0)|Bed 90.4/90.7(−0.3)|Bottle 94.1/94.3(−0.2)|Pillow 93.1/93.2(−0.1)|Phone 96.9/97.0(−0.1);8k 档:−0.1/−0.1/−0.2/−0.1/−0.1;32k 档:−0.1/0.0/−0.1/0.0/−0.1;81k 档:−0.1/0.0/−0.1/0.0/−0.1[Table 2]。四档 20 对里,最大值是 0.3(Bed 的 2k 档),平均降幅 0.14 个百分点。原文的表述是「下降不到 0.3%」[§4.1, p4]。按平均值算这个说法成立,按单格算最大的一格恰好是 0.3,本页按单格口径记为「最大 0.3 个百分点」。

④边界:这张表最容易被过度解读,所以边界要说在前面。「少训 5 个类别没代价」只在 ShapeNet 的 18 个类别之内成立,这 5 个与其余 13 个同源同风格(都是刚体家具与日用品),换成人体、植被、建筑这一类形状族就不能外推。另一处更隐蔽的边界是「评价指标」:这里量的是逐点可见性精度,而「没见过类别」真正的难点在渲染上未必是逐点精度,一个从未见过的形状上,即使每个点的可见性判对了,连线成面(第 13 章)仍可能失败,而这张表对此一无所知。最后一点:原文只报了这一组 5 个类别,没有做「留一类别」的多次划分,因此这条结论的稳定性没有被检验。

这条结果的含义比它看起来更强。注意这五个「没见过」的类别并没有变难,把它们与主表 Table 1 的同一格对照(Table 1 是用 18 类训练的):2k 档 Bag,Table 2 的 Unseen 是 94.6,Table 1 的本篇也是 94.6;Bed 在 Table 2 是 90.4、Table 1 是 90.6[Table 1/Table 2]。也就是说「少训 5 个类别」几乎没有代价。这与第 8 章那条「优势集中在稀疏点云」是同一件事的两面:本篇学到的先验是与类别无关的遮挡规律,而不是某一类形状的模板。

9.2 「泛化」的两种含义差一个数量级

这里必须把「泛化」的两种含义分开,因为本篇在两种含义上的表现差了一个数量级。第一种是类别泛化:换一个没见过的形状类别,表 2 给出的代价在 0.3 个百分点以内;第二种是分布泛化:换一套数据集的采集方式,表 3 给出的代价是 4.0–4.8 个百分点,而且对最强基线的优势从 +3.7 缩到 +0.2[Table 2/Table 3]。同一套网络、同一个训练集,两个方向的落差差了十几倍,这件事本身比任何一个具体数字都更有信息量。它说明网络学到的「与类别无关」是真的(换成没见过的家具,遮挡规律照样成立),而它学到的「与分布无关」并不成立(换成另一套采集方式,同一套规律要重新校准)。只报前者的文章会显得通用,只报后者的文章会显得没用;两件事必须并排读。这也顺带说明了第 10 章那条曲线为什么值得单独看:「点更密」与「换一套采集方式」是两回事,同一套采集方式下把点数从 2k 加到 130k,精度几乎不动(图 10-1);而换一套采集方式,点数一样却掉 4 个点。把这两件事混起来谈「泛化」,会得出互相矛盾的结论。

9.3 换数据集:训练集仍是 ShapeNet

第二个问题:换数据集。把只在 ShapeNet 上训练过的模型直接拿到 ABC 上测[§4.1, p4]。

图 9-2:训练集仍是 ShapeNet,测试集换成 ABC:2k/8k/32k 三档、四个方法(E 类 · 证据)· 原文 Table 3, p6
图 9-2 训练集仍是 ShapeNet,测试集换成 ABC:2k/8k/32k 三档、四个方法(E 类 · 证据)· 原文 Table 3, p6 怎么读 ①图注:表里第一行是列头 Point Number,取值 2k/8k/32k;四行分别是 HPR/HPRO/InvSfM/Ours[Table 3 图注与表体, p6]。图注说明这是用 ShapeNet 训好的模型在 ABC 上的结果。②读法:与 Table 1 对照着读,看「同一方法在两套数据上掉了多少」。判别点在 InvSfM 那一行,它对数据分布最敏感,因此它的掉幅可以当作「跨数据集有多难」的标尺;本篇那一行的掉幅则说明它的先验有多通用。 来源:Neural Visibility of Point Sets, Table 3, p6 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(跨表对照,本页算过)ABC 上的逐档差(本篇 − 最高基线):2k 档 89.0 对 HPR 88.0 ⇒ +1.0;8k 档 91.7 对 90.5 ⇒ +1.2;32k 档 92.4 对 92.2 ⇒ +0.2[Table 3]。再与 ShapeNet 的同一档比:2k 93.0 → 89.0(掉 4.0)|8k 96.3 → 91.7(掉 4.6)|32k 97.2 → 92.4(掉 4.8);而 HPR 同期的掉幅是 89.3 → 88.0(掉 1.3)|93.6 → 90.5(掉 3.1)|95.1 → 92.2(掉 2.9)[Table 1/Table 3]。两个读数值得并排记住:其一,本篇掉得比 HPR 多(4.0–4.8 对 1.3–3.1);其二,掉完之后仍然领先,但优势从 +3.7/+2.7/+2.1 缩到 +1.0/+1.2/+0.2。原文对这一掉的解释只有一句:两个数据集的点云分布不同,而且 ABC 里有些点云含多个物体、这是本篇处理不好的情形[§4.1, p4]。

这里还有第二处数字对不上,一并点名:原文在同一段写 「our method achieves accuracies of 89.0% and 92.5% on point clouds with 2k and 81k points」[§4.1, p4],而 Table 3 的列头只有 2k/8k/32k,没有 81k 这一列,且 32k 档的读数是 92.4 而非 92.5[Table 3]。本页按 Table 3 的三列复算,并把这句话记为与第 8 章那处同源的口径不一致(正文数字与配表列不严格对齐)。

9.4 掉幅拆开:三处可能的来源

把这 4.0–4.8 个百分点拆开,至少有三处可能的来源,而原文一处也没有分开。其一,形状族的差异:ShapeNet 是干净的水密网格采样,ABC 是 CAD 模型,后者表面有大量精确的平面与硬边,而本篇学到的先验里有一条是「法向在大部分区域连续」(第 13 章那条 26 视点聚合法向的读数就是这个意思),这条先验在硬边上并不成立。其二,多物体:原文自己在同一段承认 ABC 里有些点云含多个物体[§4.1, p4],而整篇的设定是单物体(第 6 章的标签口径、第 12 章的失败案例都建立在这个前提上),多物体意味着「物体之间的遮挡」被算进了同一个包围球,共享的八叉树分辨率会被摊薄。其三,密度定义:ABC 上「32k 点」与 ShapeNet 上「32k 点」是不是同一种稀疏程度,从这几页的读数无法确认(Table 3 没有标点云总数)。三处的权重原文没有给分离实验。工程上的直接后果是:如果要在自己的扫描数据上用它,不能拿 ShapeNet 的精度当预期,也不该拿 ABC 的掉幅当上界,只能自己重训一份,或者至少自己量一次掉幅。

④边界:这两张表各自的边界很不一样,不能混着说。Table 2 的结论边界很窄:「少训 5 个类别没代价」只在 ShapeNet 的 18 个类别之内成立,这 5 个类别与其余 13 个同源同风格,换成完全不同的形状族(比如人体、植被)就不能外推。Table 3 的结论边界则落在「分布」上:ABC 是 CAD 模型,点云分布与 ShapeNet 不同,且含多物体,这两件事在本篇里没有被分开,因此那 4.0–4.8 个百分点的落差里,「分布不同」与「多物体」各占多少,原文没有回答。另有一处要提醒:Table 3 没有标注点云总数,而 Table 1 的最后一档是 81k,两套数据的密度定义是否一致,从这一页的读数无法确认。

10尺度与速度:不重训也能接住 130k 点

先给一个能看见的场景:把同一件物体从 2k 点加密到 130k 点。在别的方法上,这往往意味着要么重训一次模型、要么看着帧率一路跌下去;在这一篇上,它意味着什么都不用改。这一章回答两个不同的问题:换了点数规模要不要重训,以及到底快在哪里。

10.1 换了点数规模要不要重训

第一个问题:可扩展性。原文的解释落在八叉树上:八叉树会把输入点云重采样一遍,于是不同采样密度的点云会得到大致一致的特征[§4.1, p4]。它的实验是:只在 2k 到 8k 的点云上训一个模型,然后拿 16k 与 130k 的点云去测,不重训[§4.1, p4]。

图 10-1:三格点云、三个精度数字:训练只见过 2k–8k,测试却一路加到 130k(E 类 · 证据)· 原文 Fig. 7, p5
图 10-1 三格点云、三个精度数字:训练只见过 2k–8k,测试却一路加到 130k(E 类 · 证据)· 原文 Fig. 7, p5 怎么读 ①图注:规模范围是 2048 到 130k 点,全程不重训;结论是精度没有随规模显著下降[Fig. 7 图注, p5]。图内还印着三个可核对的数字:2k points, accuracy = 96.7、16k points, accuracy = 98.1、130k points, accuracy = 97.7。②读法:竖着看这三格,看的是「同一份权重能不能吃下不同规模」。判别点不在于「130k 那格准不准」,而在于16k 到 130k 之间没有断崖,如果八叉树重采样真的有效,这条曲线应该平;如果模型偷偷记住了点数,曲线上就会出现台阶。另一个判别点是 2k 那一格为什么比 16k 还低:点子少时几何本身就不够,这一格正是第 8 章那条「稀疏档优势更大但绝对精度更低」的另一种呈现。 来源:Neural Visibility of Point Sets, Fig. 7, p5 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算:图上三个数串起来是一条很平的曲线:2k → 96.7、16k → 98.1、130k → 97.7,从 16k 到 130k 只掉了 0.4 个百分点,而点数涨了 8 倍。这里有一处口径要提醒:图 10-1 的 2k 档读数是 96.7,而 Table 1 的 2k 档均值是 93.0[Fig. 7 图内标注;Table 1]。两者不是同一套评估,图 10-1 用的是在 2k–8k 上专门训过的模型,Table 1 用的是主实验模型,且第 8 章那张表里 2k 档的对手也是另一套参数。本页因此明确:这两个 96.7 与 93.0 不可横向比较,原文也没有说它们是同一件事。

④边界:这张图的全部结论都建立在「八叉树重采样有效」这个前提上,而这个前提有两处它自己没写的限制。其一,重采样是把双刃剑:点数从 130k 降到八叉树能表达的体素数之后,「点云更密」带来的信息被丢掉了,这解释了为什么 130k 档(97.7)反而低于 16k 档(98.1)。其二,训练与测试的规模区间重叠:训练用的是 2k–8k,测试的 16k 落在训练区间的 2 倍处,130k 是 16 倍,再往上(比如百万点)能不能保持这条平线,图上没有答案。本页另提醒一处读法:图内的三个数字与 Table 1 的分档不是同一套评估(见上文 ③),不要拿 96.7 去和 93.0 做比较。

10.2 快在哪里:三条复杂度的对照

第二个问题:效率。原文先给了三方的复杂度:HPR 平均 O(n log n)、最坏 O(n²)(n 是点数,因为它要为每个视点构造凸包);Efficient HPR[Silva 等 2012]用 GPU 近似凸包把平均复杂度压到 O(n log n / m)(m 与 GPU 核数有关);本篇 O(n/m),因为特征提取只跑一次,之后每个视点只过一次两层 MLP[§4.1, p6]。

图 10-2:一张双对数曲线:六条时间曲线随点数怎么长,以及 U-Net 那一份是常数(E 类 · 证据)· 原文 Fig. 11, p7
图 10-2 一张双对数曲线:六条时间曲线随点数怎么长,以及 U-Net 那一份是常数(E 类 · 证据)· 原文 Fig. 11, p7 怎么读 ①图注给了三条关键限定:HPROp 是 HPRO 的并行实现,显存占用显著更高,在 24GB 显存下只能测到 15k 点;Efficient HPR 的数据取自[Silva 等 2012];Feature Extractor 那条线是本篇 U-Net 的耗时,且它对每朵点云只前向一次[Fig. 11 图注, p7]。纵轴是对数刻度的毫秒数(图内刻度 0.1 / 1 / 10 / 100 / 1000 / 10000 / 100000),横轴是点数(千,到 200)。②读法:这是一张双对数图,所以「直线」代表幂律,「水平线」代表常数。判别点有三个:第一,Feature Extractor 那条线为什么会走平,八叉树把输入重采样到固定分辨率,U-Net 的算力因此与原始点数脱钩;第二,Ours 那条线为什么在 5 万点之后改斜率,瓶颈从 U-Net 换成了逐点过 MLP;第三,HPROp 那条线为什么只画到 15k,它是显存上限,不是算法上限。 来源:Neural Visibility of Point Sets, Fig. 11, p7 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算:把三条复杂度并排看,就能读出「126 倍」是从哪儿来的。HPR 的 O(n log n)(最坏 O(n²))与本篇的 O(n/m) 之间的差距随 n 增大而拉大;原文给的读数是 「点数超过 20 万时比当时最好的方法快 126 倍」[§1, p1]。同一段的另一条读数更值得记住:HPROp 在 24GB 显存下只能处理 15k 点[Fig. 11 图注],而本篇的曲线一路画到 200k,也就是说在大规模这一档上,对手不只是慢,而是根本跑不了。这与「比较」这一节的口径合起来读:第 8 章那张表里 HPR/HPRO 是调过参的最好水平,而这一章说明越往大点数走,可比的对手越少。图上这两条线的交叉点,其实就是第 3 章那条分界线在耗时上的投影:分界线左边(与视角无关的那一半)的耗时不随点数增长,右边(逐点过 MLP)的耗时随点数线性增长,所以「点数越多、瓶颈越往 MLP 那一侧移」是结构决定的,不是工程调优的结果。

④边界:这张图与这张表都建立在「特征只前向一次、之后每视角只跑 MLP」这个前提上。它管不到两件事:其一,多视角的总成本:如果一帧要查询很多个视角,Ours 那条线要乘上视角数(原文只说 MLP 极轻,没有给多视角的实测);其二,显存:原文拿 HPROp 的 24GB 上限当作对手的边界,但没有报出本篇自己的显存占用(第 12 章那条「参数量 40M」是模型规模,不是显存峰值)。读这张图时不要把「快 126 倍」当成普适结论,它对应的是 20 万点以上的大点云这一档。

10.3 多视角的总成本:为什么它随视角数几乎不涨

这里把「多视角」这一项单独估一次,因为它是本篇最实用的一条性质,而原文偏偏没给数。按图 10-2 的走势:点数很多时,Feature Extractor 那条线走平(常数),Ours 那条线的斜率主要来自逐点过 MLP。设第 k 个视角的成本为 c_k,由于特征复用,第一个视角的成本包含 U-Net 那一份,之后每个视角的边际成本只剩 MLP 那一份,也就是说 N 个视角的总成本约等于 U-Net + N × MLP,而不是 N × (U-Net + MLP)。这就是本篇与 HPR 在「同一帧要看多个视角」这类需求上的差距来源(HPR 每个视角都要重算凸包)。第 13 章那条「26 个视点投法向」正是这条性质的一次实际使用:如果每换一个方向都要重抽特征,那一步的成本会立刻变成 26 倍;而在这个结构下,它只多出了 25 次轻量前向。这条估算也给出一个可检验的预测:视角数越大,本篇相对 HPR 的优势越大,读者若要在自己的场景里复现这一点,只需固定点数、把视角数从 1 扫到 64 再比总耗时。

11噪声与残缺:鲁棒性

先给一个能看见的场景:同一件物体扫两遍,一遍是手持扫描的原始点云,表面覆着一层细沙似的抖动;另一遍只扫到半个身子,背面是一片空白。真实扫描的点云会带来两类「不干净」:坐标带噪声,以及整片点缺失。原文把这两件事分开测[§4.1, p6]。

11.1 噪声怎么测

噪声的测法是:给每个点加均匀分布的扰动(做法沿用[Mehra 等 2010]),噪声幅度以包围盒尺寸的百分比计;训练用 2% 噪声,测试用 1% 与 2% 两档[§4.1, p6]。

图 11-1:两档噪声 × 四档密度 × 四种方法:注意 HPR 在 2k 加 1% 噪声时跌到 81.4(E 类 · 证据)· 原文 Table 4, p6
图 11-1 两档噪声 × 四档密度 × 四种方法:注意 HPR 在 2k 加 1% 噪声时跌到 81.4(E 类 · 证据)· 原文 Table 4, p6 怎么读 ①图注:点云含 2048(2k)与 8192(8k) 个点,噪声水平 1% 与 2%;结论是本篇鲁棒性强、持续优于 HPR[Table 4 图注, p6]。表体是双栏排的:左半是 2k 与 8k、右半是 32k 与 81k,每行写四个数(低密度两个、高密度两个),列头在第一行给的是 Noise Level + 1% + 2%。②读法:必须把它与 Table 1 并排读,因为「抗噪」这个说法只有在「同一方法掉了多少」上才有意义。判别点有两个:其一,同一点数下从无噪到 1% 掉了几点;其二,从 1% 到 2% 又掉了几点:后者是斜率,前者是截距。 来源:Neural Visibility of Point Sets, Table 4, p6 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

11.2 噪声与残缺不是一回事

这里要先把「噪声」与「残缺」这两件事的区别讲清,否则后面两张图会读混。噪声是「点都在,但位置不准」:每个点仍在它该在的表面附近,只是坐标被推离了一小段,于是局部的点密度几乎不变,但「哪些点靠得够近可以构成一个面片」这件事被扰乱了。残缺是「点不在,但留下的都很准」:被挖掉那一片的几何只能靠邻域外推,而留存的点之间连接是可靠的。这两件事对网络提出的要求正好相反:前者要求它别被局部扰动带跑(所以它必须学一点「形状层面」的东西,而不只是「邻居平均」);后者要求它能把缺口补上(所以要靠先验外推)。原文把两者放在同一节里讲、用同一句「鲁棒性强」概括[§4.1, p6],但支撑它们的机制并不是同一个,看数据也能印证:噪声那一档有完整的 Table 4(八格数字),残缺那一档只有图 11-3 一张图、没有任何量化。本节因此把它们分开读:噪声可信度更高(有表),残缺只能当定性证据。

③复算(本页逐格算过)。先算「与最高基线的差」:

④边界:这张表的噪声模型是「各向同性的均匀扰动」,而真实扫描的噪声不是这个样子,扫描噪声沿视线方向、且与入射角强相关,在掠射面上最重。因此「比 HPR 抗噪 7 个百分点以上」这条结论,只在均匀扰动的设定下被证明;原文没有在真实扫描上重复这套量化(图 7-2 给了真实扫描的定性,但没有数字)。第二处边界与环境有关:噪声幅度以包围盒尺寸的百分比定义[§4.1, p6],因此同一个「2%」在一朵 30 厘米的物体与一朵 3 米扫描上的绝对量完全不同,跨数据集的噪声强度不可直接比较。第三处:这张表只测了两档噪声,而训练用的是 2%[§4.1, p6],「训练噪声 = 测试上限」这个巧合让 2% 那一栏偏乐观;若测试噪声超过训练噪声,这张表的结论未必仍成立。

密度 × 噪声本篇最高基线差值
2k · 1%88.9HPR 81.4+7.5
2k · 2%87.8HPR 79.2+8.6
8k · 1%91.8HPR 83.6+8.2
8k · 2%90.4HPR 80.8+9.6
32k · 1%93.3HPR 84.7+8.6
32k · 2%91.4HPR 81.3+10.1
81k · 1%94.0HPR 83.5+10.5
81k · 2%91.6HPR 79.3+12.3

11.3 八格读数:+7.5 到 +12.3

八格全部在 +7.5 以上,与原文那句「两个噪声档上都比其它方法高出 7% 以上」一致[§4.1, p6]。再算「从 1% 加到 2% 掉了多少」:本篇 −1.1/−1.4/−1.9/−2.4(2k/8k/32k/81k),而 HPR 是 −2.2/−2.8/−3.4/−4.2,本篇的降幅大约只有 HPR 的一半。最后把这张表与第 8 章的无噪表接起来:2k 档 HPR 从 89.3 掉到 81.4(掉 7.9),本篇从 93.0 掉到 88.9(掉 4.1)[Table 1/Table 4]。两处读数合起来给出的结论比「抗噪」具体:噪声对 HPR 的打击接近它的两倍,而且噪声越大、差距越大。

图 11-2:加了噪声之后再看一遍:本篇在遮挡边界上留下的红蓝点明显更少(E 类 · 证据)· 原文 Fig. 9, p6
图 11-2 加了噪声之后再看一遍:本篇在遮挡边界上留下的红蓝点明显更少(E 类 · 证据)· 原文 Fig. 9, p6 怎么读 ①图注:这一图注给的噪声水平写作 0.01(即 1%),并说明红点是误报、蓝点是漏报,结论是本篇显著提升了精度[Fig. 9 图注, p6]。②读法:与图 11-1 的表配着看。表给的是「掉了几个点」,图给的是「错在哪儿」。判别点在遮挡边界那条带:噪声把点推离真实曲面之后,边界附近的点最容易在「可见」与「不可见」之间翻转,因此红蓝点会沿着剪影连成一条线;如果某方法的错点从「一条线」扩散成「一大片」,说明它的判定不只看局部几何。 来源:Neural Visibility of Point Sets, Fig. 9, p6 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算:噪声对不同方法打击得并不均匀,而这件事在图上看不出来、在表上很清楚。把 Table 4 与 Table 1 的同一档相减(1% 噪声对无噪):HPR 在 2k 档从 89.3 掉到 81.4(−7.9)、本篇从 93.0 掉到 88.9(−4.1);而 InvSfM 在 2k 档从 39.5 掉到 39.2,只掉了 0.3[Table 1/Table 4]。这三个数的排列很说明问题:InvSfM 几乎不受噪声影响,原因在于它本来就判不准,它 2k 档的原始精度只有 39.5,噪声再大也跌不到哪儿去。因此「谁更抗噪」这件事必须与「它的起点在哪」一起读:本篇是四者里起点最高、同时跌得最少的那个,这才是这张图要传达的。

④边界:图 11-2 与图 11-1 的噪声档不完全对齐:图注写的是 0.01(1%)[Fig. 9 图注, p6],而表里有 1% 与 2% 两栏、训练用的是 2%[§4.1, p6]。因此这张图只支持「1% 噪声下的观感」,不能拿它去推断 2% 那一栏。另一处:这张图同样只覆盖单物体、且点是「均匀撒在曲面上」的那一类,扫描数据的「点分布疏密不均」这个特点在图中并不出现,而疏密不均恰恰是噪声在实际扫描里最难受的地方。

图 11-3:把点抠掉一块再看:训练时从没见过残缺点云,本篇仍然接住了(E 类 · 证据)· 原文 Fig. 10, p6
图 11-3 把点抠掉一块再看:训练时从没见过残缺点云,本篇仍然接住了(E 类 · 证据)· 原文 Fig. 10, p6 怎么读 ①图注:模型只在 ShapeNet 上训练,却能对残缺的点云准确预测可见性;正文补了一句理由,它从训练数据里学到了形状先验,因此能向残缺数据泛化[Fig. 10 图注;§4.1, p6]。②读法:这一图与图 11-2 问的是同一件事的两个方向:噪声是「点多了但都不准」,残缺是「点少了但都准」。判别点在于缺失区域那一块颜色是怎么填的,如果网络只会看局部邻域,缺失区会整片判错;如果它真的学到了形状层面的先验,缺失区会被「猜」得大致正确。原文只给结论不给量化,因此这张图的读法止于「有没有大面积崩」。 来源:Neural Visibility of Point Sets, Fig. 10, p6 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:这张图与第 9 章那张泛化表其实在测同一件事,只是把「哪些类别没见过」换成了「哪些点没见过」。Table 2 测的是类别层面的外推(训练时整类缺失),这张图测的是数据层面的外推(同一类形状,但表面上一片点被挖掉)。两者能撑住的原因也应当是同一个:网络学的是「曲面在局部怎么延伸」这条规律,而不是「某类形状长什么样」。把这条推论与第 6 章的标签口径接起来看:训练标签是对点云背后的曲面求交算出来的[§3.3, p3],因此网络在训练时见过的是「曲面—可见性」这一对关系,而不是「点—可见性」;当一片点被挖掉时,曲面这一侧的信息还在(由邻域推出),于是可见性仍可预测。这是本篇看起来「天然抗残缺」的机制性解释,而原文只给了结论、没给这条推理。

④边界:这一章的三件素材都只覆盖「单物体」(ShapeNet 与它的加噪/挖洞变体),因此它管不到两件事:其一,真实扫描里的噪声分布与「均匀扰动」并不一样,扫描噪声沿视线方向、且与入射角相关,而这里的模型是各向同性的均匀噪声[§4.1, p6],图 11-1 的结论不能直接搬到扫描数据上(图 7-2 用的是真实扫描,但原文没有给那里的量化);其二,残缺的比例没有扫:原文只说「残缺」,没有说挖掉多少,因此「能向残缺泛化」这句话没有给出适用范围。另有一处口径提醒:图 11-2 的图注把噪声写成 0.01(1%),而正文说训练时用的是 2% 噪声[§4.1, p6],测试时的噪声与训练时的噪声不同档,这一点在读这两张图时要知道。

12消融三条、失败案例与场景级

这一章把「哪个部件真的有用」拆成三个可测的问题,然后再交底三件它做不到的事[§4.2, pp.7–8]。

12.1 第一问:八叉树要多深

第一问:八叉树要多深。深度太小 → 表示太粗、丢几何细节;深度太大 → 特征提取变贵[§4.2, p7]。

图 12-1:两行小表:深度每加一档,时间怎么涨、精度怎么走(E 类 · 证据)· 原文 Table 5, p7
图 12-1 两行小表:深度每加一档,时间怎么涨、精度怎么走(E 类 · 证据)· 原文 Table 5, p7 怎么读 ①图注:第一行是耗时,余下是深度与精度;原文的结论是取深度 8,因为它在精度与效率之间平衡最好[Table 5 图注;§4.2, p7]。表体两行分别是 Time 30.7/35.6/49.3/75.0 与 Accuracy 95.7/97.1/97.4/97.3,列头是 Depth 6/7/8/9。②读法:这张表要当「性价比曲线」读,而不是当「越大越好」读。判别点落在深度 8 → 9 这一格:如果时间继续涨而精度不涨反退,那一档就是纯浪费。另注意耗时那一行是「特征提取」这一侧的,与第 10 章那条走平的曲线是同一个量。 来源:Neural Visibility of Point Sets, Table 5, p7 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(逐档算增量):6 → 7:时间 +4.9 ms(×1.16)、精度 +1.4;7 → 8:时间 +13.7 ms(×1.38)、精度 +0.3;8 → 9:时间 +25.7 ms(×1.52)、精度 −0.1[Table 5]。三档的边际收益一路衰减,到第四档变成负。从 6 到 9 总账:时间 30.7 → 75.0(2.44 倍),精度 95.7 → 97.3(+1.6)。这就是「深度 8」这个选择的全部依据,它恰好落在边际精度归零之前的最后一档。

④边界:这张表只报了「特征提取器」一侧的耗时,而深度同时决定另一件没被报出来的东西,显存。八叉树的节点数在最坏情况下随深度指数增长,深度 9 相对深度 8 的节点数可以差出一倍以上,而原文给的是毫秒数,没有给内存峰值。另一处边界是精度的可信区间:7 → 8 的 +0.3 与 8 → 9 的 −0.1 都在评测噪声量级之内,换句话说,97.1/97.4/97.3 这三个数在统计上未必可区分,「深度 8 最好」这句话真正的支撑在耗时那一行:斜率从 1.38 跳到 1.52。读这张表时不要把最后两位小数当成真信号。

12.2 第二问:换成 Transformer

第二问:换成 Transformer 会怎样。原文把 O-CNN 特征提取器换成 OctFormer[Wang 2023],理由是Transformer 通常被认为更擅长捕捉全局关系[§4.2, p7]。

图 12-2:把 U-Net 换成 Transformer:四档密度下两者的精度几乎重合(E 类 · 证据)· 原文 Table 6, p7
图 12-2 把 U-Net 换成 Transformer:四档密度下两者的精度几乎重合(E 类 · 证据)· 原文 Table 6, p7 怎么读 ①图注:OctFormer 的表现与 OCNN-based U-Net 相似[Table 6 图注, p7]。表体是两行:OCNN 93.0/96.3/97.2/97.4 与 Octformer 93.8/96.4/97.0/97.1,列头 Point Number 2k/8k/32k/81k。②读法:这一表的作用是「排除一个替代解释」,不是「宣布胜负」。判别点在于四列的符号是否一致,如果 Transformer 在小点数上赢、大点数上输,那就说明两种结构各有适用区间;如果四列都在噪声量级内来回摆,那就说明这个任务不需要全局注意力。原文给的判据是「差不超过 1%」[§4.2, p7]。 来源:Neural Visibility of Point Sets, Table 6, p7 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(Octformer − OCNN):2k +0.8|8k +0.1|32k −0.2|81k −0.3[Table 6]。四格绝对值最大 0.8,确实没超过 1%;但符号是反的,Transformer 在稀疏档赢 0.8,在密集档输 0.3。这条「小赢大输」的走向与第 8 章那条主线完全同向:信息不足时,全局关系能补一点;信息充足时,局部卷积已经够了。原文对此的解读是 「基于 CNN 的 U-Net 有足够容量为这个任务捕捉全局上下文」[§4.2, p7]。

④边界:这次替换只换了特征提取器,其他一切不变:同一个 MLP、同一套位置编码、同一份训练数据与同一个训练计划。因此这张表回答的是「换骨干网有没有用」,而不是「Transformer 在这类任务上好不好」;要回答后者,需要连 MLP 与训练设置一起重调,而原文没有做。第二处边界是成本没被报出来:表里只有精度,没有参数量、训练时间与显存,而 OctFormer 的注意力开销通常远高于同规模稀疏卷积,「精度差不多」这句话必须与「成本差多少」一起读才有决策价值。第三处:四档全都落在 0.8 个百分点以内,其中三档的符号还反着,因此这张表的正确用法是「排除一个替代解释」,而不是「选一个骨干网」。

12.3 第三问:位置编码与网络深度各值多少

第三问:位置编码与网络深度各值多少。原文分别测了「去掉位置编码」与「换更深的 U-Net」[§4.2, p7]。

图 12-3:三行对照:去掉位置编码、换成 5 层 U-Net、以及本篇(E 类 · 证据)· 原文 Table 7, p7
图 12-3 三行对照:去掉位置编码、换成 5 层 U-Net、以及本篇(E 类 · 证据)· 原文 Table 7, p7 怎么读 ①图注:只有一句 「Ablation study on position embedding and U-Net architecture.」,没有额外说明[Table 7 图注, p7]。表体三行:w/o position embedding 92.3/95.7/96.7/96.9、5-layer Unet 93.0/96.3/97.2/97.4、Ours 93.0/96.3/97.2/97.4。②读法:这张表的判别点可以「一眼看出来」:5-layer Unet 与 Ours 四列逐格相同,原文明确交代过这件事:把 U-Net 加深到 5 层,参数量从 40M 涨到 130M,测试精度却一样[§4.2, p7]。因此这张表真正有信息量的只有第一行。 来源:Neural Visibility of Point Sets, Table 7, p7 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(去掉位置编码的代价):2k −0.7|8k −0.6|32k −0.5|81k −0.5,四档平均 −0.575[Table 7]。原文的表述是「位置编码平均带来 0.5% 的提升,从 96.9% 到 97.4%」[§4.2, p7],注意 96.9 与 97.4 恰好是 81k 那一列的两个数,所以那句「平均 0.5%」实际上只算了 81k 一档;按四档平均应为 0.575。本页按四档口径记为 0.6 个百分点(口径不一致,量级很小)。另一条读数值得单独拎出来:位置编码的收益随点数增加而收窄(0.7 → 0.5),而它的成本是零,它只改输入侧的维度,这也是它比「加深网络」划算的地方(后者 40M → 130M 参数换来 0)。

④边界:这张表最需要提醒的一点是:5-layer Unet 与 Ours 那两行是同一组数字,逐格相同并非笔误,这是原文报告「参数量从 40M 涨到 130M、测试精度没变」这件事的方式。因此读这张表时不要把「加深度没用」当成一条被独立验证的结论,它是精度的读数相同,而不是两次独立训练的两次测量(原文没有报这两组的训练曲线)。第二处边界是关于位置编码那条式的:这一栏只做了「有/无」两档,没有扫 L(第 5 章那条 U1 里的频率条数),因此「位置编码值 0.6 个百分点」这句话里,有多少是「有编码」的功劳、有多少是「L 恰好选对了」的功劳,本篇没有拆开。第三处:这条消融是在 ShapeNet 主实验的设置下做的,没有在稀疏档以外重复,因此它不能直接外推到第 11 章那些含噪/残缺的设定。

12.4 第四、五问:做不到什么,以及场景级

第四问与第五问:它做不到什么、以及场景级。失败案例集中在三类:薄结构、大曲率凹面、多层遮挡;原文的判断是这可能要靠改网络或改训练策略来解决[§4.2, p7]。同一段还给出一组互补的错误率读数:本篇的漏报率 4.3%、误报率 2.0%,而 HPR 是 9.2% 与 1.1%;原文强调的是「漏报率比 HPR 低 4.9 个百分点」[§4.2, p7]。

图 12-4:三处失效:薄结构、大曲率凹面、多层遮挡(E 类 · 证据)· 原文 Fig. 12, p7
图 12-4 三处失效:薄结构、大曲率凹面、多层遮挡(E 类 · 证据)· 原文 Fig. 12, p7 怎么读 ①图注:整条图注只有 「Failure cases on ShapeNet.」;三类情形的说明在正文里[Fig. 12 图注;§4.2, p7]。图内标签给出各列的归属(Ours 与 HPR)。②读法:这张图的读法是「反着读」,不看它做对了什么,而看它与真值在哪一类几何上分不开。判别点在三处:其一,薄结构(板、叶、丝这一类):点本来就稀疏到不足以表达厚度;其二,大曲率凹面:凹处的可见性依赖较远的一整片几何,而网络的感受野未必够;其三,多层遮挡:前后多层叠在一起时,逐点判定的中间层最容易翻。把这张图与那组错误率并读:误报率 2.0% 高于 HPR 的 1.1%,说明本篇偏向「把看不见的判成看得见」,而这正是薄结构与多层遮挡最容易出的错。 来源:Neural Visibility of Point Sets, Fig. 12, p7 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算:这三类失败并不是「随机出错」,它们各自对应一组可以量化的错误率。原文给出的 ShapeNet 错误率是本篇漏报 4.3%、误报 2.0%,HPR 漏报 9.2%、误报 1.1%[§4.2, p7]。把这张图的三类情形对上去:薄结构(点根本不足以表达厚度)最容易出的是漏报,点被推到表面两侧,网络把它们全判成不可见;大曲率凹面与多层遮挡最容易出的是误报,凹处被远处的一片几何挡着,而网络若感受野不够,就会把中间那层判成可见。这就解释了一个看似矛盾的现象:本篇的漏报比 HPR 低得多(4.3 对 9.2),误报却略高(2.0 对 1.1),它把错误从「整片看不见」挪到了「局部多看一层」。对下游来说这不是等价的:第 13 章的可视化与阴影里,「多看一层」会在剪影处留下浮起来的点,比「少看一片」更显眼。

④边界:这张图的每一格都只给「做错了」,不给「错在哪一档密度」。结合第 8 章那条主线(密集档优势收窄到 +1.2)可以推断,这三类失败在密集点云上应当明显缓解,但图上没有标点数,因此不能从这张图判断「多少点才够」。第二处边界:三类失败里有两类(薄结构、大曲率凹面)本质上是「网络感受野」问题,一类(多层遮挡)是「逐点判定」这个形式本身的问题,前者可以靠加深/加宽解决,后者不能,因为逐点判定天然不知道「前面还有几层」。这也是原文在结论里把「概率化可见性」列为未来工作的原因[§5, p9]。

图 12-5:把范围放大到场景级:左侧输入点云,右侧是预测出的可见点(E 类 · 证据)· 原文 Fig. 13, p8
图 12-5 把范围放大到场景级:左侧输入点云,右侧是预测出的可见点(E 类 · 证据)· 原文 Fig. 13, p8 怎么读 ①图注:左列是输入点云,右列是本篇预测的可见点[Fig. 13 图注, p8]。这一条属于 §4.2 的 Scene-level Results 小节。②读法:这张图要拿第 6 章的标签口径来读。训练标签是在单物体的包围球表面上取视点生成的[§3.3, p3],而这一图换成了整片场景;判别点因此不在「像不像」,而在「有没有整片漏掉」,场景级输入的包围球远大于单个物体,同样的八叉树深度下每个物体分到的体素更少,这是这条链路在场景级上最先遇到的约束。原文在这一节只给结果、不给量化,并且在本章末尾把「扩展到场景级」明确写成局限[§5, p9]。 来源:Neural Visibility of Point Sets, Fig. 13, p8 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:这张图与全篇的标签口径之间存在一处结构性张力,值得单独说清。训练标签是在单物体的包围球表面上取视点、再对这个物体的网格求交得到的[§3.3, p3];而场景级点云的包围球把整片场景裹在里面,同一朵点云里相邻物体的尺度差异被压平。八叉树深度是固定的(第 12 章取 8),在一朵归一化后的场景点云上,每个物体分到的体素数远少于单物体时,于是这张图的失效方式不会表现为「整片翻转」,而会表现为「小物体整块糊掉」。这解释了为什么原文把它放进消融一章(Scene-level Results)而不是应用一章:它是一次边界试探,而不是一条产品能力。

④边界:这一节没有任何量化,因此它的读法必须保守。「看起来对」与「逐点精度多少」是两件事,而这里只有前者。第二处边界:场景级还牵出一个单物体设定下不存在的问题,物体之间的相互遮挡是双向的(A 挡 B 的同时 B 也可能挡 A),而逐点二值判定只回答「这个点看不看得见」,不回答「被谁挡住」;第 6 章那套射线求交标签在原理上可以推广到多物体,但需要把整片场景的网格一起拿来求交,而 ShapeNet 的修补网格是逐物体的,这也是原文把「扩展到场景级」列进未来工作而不是当前贡献的原因[§5, p9]。

12.5 四个问题连起来看,第四个侧面被漏掉了

把这一章的四个问题连起来看,会发现它们其实在回答同一件事的三个侧面,而第四个侧面被漏掉了。八叉树深度问的是「输入侧的分辨率」,Transformer 问的是「骨干网的归纳偏置」,位置编码问的是「视角信息怎么进去」,U-Net 深度问的是「容量够不够」,四者的实测影响分别是 1.6(深度 6→9 的精度总增)、0.8(最大单格差)、0.6(四档平均)与 0(完全相同)。把这四个数并排看,得到的是比「哪个部件最重要」更一般的一条判断:这个任务对架构选择相当不敏感,真正决定精度的是「输入信息有多少」,这条判断在第 8 章有独立支撑:点数从 2k 加到 81k,同一套架构的精度从 93.0 升到 97.4(+4.4);而本章四个架构变量加起来能解释的,不到它的三分之一。被漏掉的第四个侧面是「损失函数」,本章没有做「换成 focal loss 或加权交叉熵」的消融,而第 7 章那条「误报与漏报不对等」的读数恰好指向这个方向:如果边界上的错点更致命,那按位置或按难易加权才是下一个该试的变量。原文把它留在了「未来工作」的「数据增强与训练策略」那一条里[§5, p9]。

④边界:这一章的六个素材里,只有三张表是量化的,而且三张表的「量级」都很小,深度那一栏的边际精度不到 0.3、Transformer 那一栏不到 0.8、位置编码那一栏 0.6。这带来一条读法上的要求:不要用这些个位数的百分比去论证架构优劣,它们更像是在说明「这个任务对架构选择不敏感」。同时这一章留了一处没有回答的问题:为什么误报率(2.0%)比 HPR(1.1%)高,原文把那 4.9 个百分点的漏报优势讲了,却没有讨论误报那一侧的劣势,而误报恰恰是薄结构与多层遮挡的直接症状。读这一章时要把「错误率拆成两支」这件事记住:省下来的漏报,有一部分是用误报换来的。

13五条应用:可视化、视点相关重建、法向估计、阴影、视点选择

这一章是「一次前向多次查询」这个结构拿回来的东西。原文列了五条应用,它们共用同一份可见性输出,差别只在「下一步拿它做什么」[§4.3, pp.8–9]。

13.1 应用一:点云可视化

应用一:点云可视化。只画可见点,遮挡区自然消失[§4.3, p8]。

图 13-1:同一朵点云三种画法:只画可见点 / 上色 / 画成面元(E 类 · 证据)· 原文 Fig. 14, p8
图 13-1 同一朵点云三种画法:只画可见点 / 上色 / 画成面元(E 类 · 证据)· 原文 Fig. 14, p8 怎么读 ①图注:左列是本篇的结果,中列与右列分别用颜色与面元渲染[Fig. 14 图注, p8];图内也印着三列的名字(Points/Colored Points/Surfels)。②读法:这张图的判别点在「背面的点有没有真的消失」。只画可见点时,背面的点不是被后面的点挡住,而是根本没被画出来,因此遮挡轮廓会比任何「靠深度排序再画」的做法更干净。另一处判别点是中列与右列的差别:上色只是给可见点着上颜色(仍然是散点),面元则要额外定半径,而半径正是原文在第 2 章批评过的那件事。 来源:Neural Visibility of Point Sets, Fig. 14, p8 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:这一条应用的「算法」只有一行:把判为不可见的点丢掉再画。但这一行里藏着本篇与「靠深度排序再画」的根本差别。深度排序式的点云渲染必须先给每个点一个半径(或把它膨胀成面元/球),再把它们按深度泼溅到 Z 缓冲,原文在第 2 章正是拿这一点去否定那条老路的:半径难定,而且往往要用到点法向[§2, p1]。本篇跳过了半径这一步:可见性由网络直接给出,被挡住的点根本不进入绘制列表,因此这一条应用对「点云没有法向」这件事免疫。再看右列那两个对照:上色只是给同一批可见点换颜色(不改变几何),面元则要把点膨胀成有面积的原语,只有面元那一列重新引入了半径这个超参,也就是说图 13-1 里唯一的「旧做法」就在最右边那一格。

④边界:这张图演示的是「遮挡变干净」,它不谈两件与可视化直接相关的事。其一,绘制出来的点云仍有空洞:可见点之间的间隙不会被填上,要在屏幕上连续,仍然得靠面元或泼溅,这正是右列存在的理由。其二,可见性是逐点的、不是逐像素的:剪影处一个点「可见」意味着它没被别的点挡住,但屏幕上它仍可能与邻点重叠,重叠造成的过绘制(overdraw)不在这条链路的管理范围内。因此「只画可见点」省下的是遮挡判定与排序,不是绘制本身;原文在这一节也没有给任何绘制耗时。

13.2 应用二:视点相关重建

应用二:视点相关重建。拿到可见点之后,把它们投到视图空间做 Delaunay 三角化、再把三角网映回三维,就得到一张与视点相关的网格;为了视觉一致,边长超过阈值的三角形会被丢掉[§4.3, p8]。原文强调这件事在无法向时也能做。

图 13-2:无法向也能连面:把可见点投到视图空间做 Delaunay,再映回三维(E 类 · 证据)· 原文 Fig. 15, p8
图 13-2 无法向也能连面:把可见点投到视图空间做 Delaunay,再映回三维(E 类 · 证据)· 原文 Fig. 15, p8 怎么读 ①图注:整条图注只有 「View-dependent Surface Reconstruction.」[Fig. 15 图注, p8],做法写在正文。②读法:这张图的判别点是「面从哪里来」。它不是把点连成曲面,而是在二维视图里连好再抬回三维,所以它天然只对该视点有效(换个视点要重连),而这也正是标题里 view-dependent 的含义。第二处判别点是丢弃边长过阈值的三角形:那一步是在补「可见点之间本来就有洞」这件事,洞越大,补出来的面越假。 来源:Neural Visibility of Point Sets, Fig. 15, p8 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:这条应用在算法上是一句话,但它在整篇里的地位很特殊,它是唯一一条「把不可见信息当成噪声剔掉再重建」的路线。传统重建(第 2 章那一路)是先面后可见性:把整朵点云连成面,再判谁挡谁;这里是先可见性后面:只拿当前视点看得见的那一层点去连面。这个顺序反过来带来两个直接后果:其一,重建出的面天然是「单层」的:遮挡边界之后的几何根本不在输入里,所以它不会把背面与正面连成一团;其二,它天生与视点绑定:换个视点要重连一次,这也是标题里 view-dependent 的准确含义。丢弃长边三角形那一步是这条路线必需的安全阀:可见点之间的间隙在屏幕上就是洞,不设阈值的话 Delaunay 会在洞上架起一张假面。

④边界:这条应用与第 13 章后面几条的分量不同,它是「视点相关」的,而不是「给出一份可复用的几何」。这句话的工程含义是:如果下游要的是可交互的多视角浏览,那么每换一次视点就要重跑一次三角化(虽然可见性本身可以复用特征);原文没有报这一步的耗时。第二处边界是那条边长阈值:阈值是所有形状共用的一个超参,而它直接决定「洞被填掉还是被留下」,阈值大则假面多、阈值小则洞多,原文没有给它的取值,也没有做敏感性分析。第三处:这条路线在无法向时也能用(原文明确强调),但它给出的面没有法向信息,要接泊松重建仍需要另找法向,这正是下一条应用存在的原因。

图 13-3:重建精度四项:Chamfer 在 10⁻⁵ 量级,F1 全部 0.999 以上(E 类 · 证据)· 原文 Table 9, p9
图 13-3 重建精度四项:Chamfer 在 10⁻⁵ 量级,F1 全部 0.999 以上(E 类 · 证据)· 原文 Table 9, p9 怎么读 ①图注:这张表是在非训练数据集(COSEG)上做的重建精度评估[Table 9 图注, p9];列是 Category/Chamfer Distance/Hausdorff Distance/F1-score,行是 Chairs/Fourleg/Guitars/Lamps。②读法:这里要盯住 F1 那一列。F1 接近 1 说明重建出来的网格与真值在「有面/没面」上几乎完全一致,而 Chamfer 与 Hausdorff 量的是「离得多远」。判别点在于这两个量的量级差:Chamfer 是 10⁻⁵ 量级(近乎重合),Hausdorff 是 10⁻² 量级(个别点跑得远),这说明误差不是整体偏移,而是几处局部外凸。 来源:Neural Visibility of Point Sets, Table 9, p9 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(逐类别):Chamfer:Chairs 5×10⁻⁵ | Fourleg 7×10⁻⁵ | Guitars 5×10⁻⁵ | Lamps 5×10⁻⁵;Hausdorff:0.0228 | 0.0241 | 0.0182 | 0.0166;F1:1.000 | 1.000 | 0.999 | 1.000[Table 9]。三个读数各说一件事:Chamfer 里只有 Fourleg 偏高(7 对 5),四条腿是细长结构,而细长结构正是第 12 章列的失败案例之一;Hausdorff 的最好一档是 Lamps(0.0166)、最差是 Fourleg(0.0241),两者相差 45%,方向与 Chamfer 一致;F1 只有 Guitars 是 0.999,其余三项都是 1.000,说明「面该不该有」这个判断几乎没出错,错的是面的位置。

④边界:这张表的四个类别都来自 COSEG,而且都是「有明确主干结构」的刚体(椅子、四腿、吉他、灯),这类形状的共同点是法向在大部分区域连续、且没有薄片。因此这张表恰好避开了第 12 章列的两类失败(薄结构与大曲率凹面):如果换成布料、叶片、镂空雕塑,Chamfer 与 F1 都不可能维持在 10⁻⁵ 与 0.999 这个量级。第二处边界是「只报一个视点」:重建是视点相关的(图 13-2),而这张表没有说明是取平均还是取某个代表视点,因此它衡量的是「这个协议下的重建质量」,不是「重建质量」。第三处:F1 全部接近 1 这件事要谨慎解读,F1 高说明「有面/没面」判得准,说不明面片的位置有多准;位置精度看的是 Hausdorff(0.0166–0.0241),而在细长结构(Fourleg)上它比最好的 Lamps 差了 45%。

13.3 应用三:法向估计

应用三:法向估计。从 26 个固定视点各预测一次可见性,把法向聚合起来,再交给泊松重建;预测法向与真值法向的余弦相似度全部高于 0.93[Fig. 16 图注;§4.3, p8]。

图 13-4:26 个视点投票出法向:点 / 真值法向 / 预测法向 / 重建(E 类 · 证据)· 原文 Fig. 16, p8
图 13-4 26 个视点投票出法向:点 / 真值法向 / 预测法向 / 重建(E 类 · 证据)· 原文 Fig. 16, p8 怎么读 ①图注:从 26 个固定视点预测并聚合法向,再用泊松重建出曲面;预测法向与真值法向的余弦相似度全部高于 0.93[Fig. 16 图注, p8]。图内四列标签是 Points/GT normals/Pred normals/Reconstruction。②读法:这张图要横着看第三列与第二列的差。判别点有两个:第一,24 次前向只换来一组法向,值不值:这里的「26 个视点」正好用上了第 3 章那条「特征抽一次、视角复用」的性质(特征只抽一遍,26 个视角只各跑一次 MLP);第二,聚合为什么需要多视点:单视点看不见的点没有法向信息,多视点是在补「哪一面被看到过」这件事,所以 Pred normals 在背面会明显比 GT normals 糊。 来源:Neural Visibility of Point Sets, Fig. 16, p8 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:「26 个视点」这个数字不是随便挑的,它来自可见性本身的性质。一个点的法向要由「它周围的面往哪边朝」决定,而单次可见性判定只告诉网络「这个点看不看得见」,不告诉它「面朝哪边」,于是必须靠「从多个方向看过它」来反推朝向。26 是三维网格里一个体素的 6 面 + 12 棱 + 8 顶点的邻居数,在一朵归一化到单位立方体的点云上,这 26 个方向恰好构成一个均匀的球面采样;原文说「从 26 个固定视点预测并聚合」,聚合方式原文未展开(图注只给结论)。与前一条应用的接续关系也在这一步:图 13-2 的三角化得到面片但没有法向,这条应用把法向补上,泊松重建才能跑,两条应用在图 13-4 的最右一列合流。成本上它仍然吃到了那条复用性质:特征抽一遍,26 个视点各跑一次轻量 MLP。

④边界:余弦相似度「全部高于 0.93」是一个聚合后的读数,它掩盖了两处不均匀。其一,正反两面不对等:被 26 个视点都看得见的区域法向很准,而始终背对或掠射的区域只能靠邻域外推,原文没有分区域报这个指标。其二,「0.93」这个阈值本身是低的:余弦 0.93 对应夹角约 21.6 度,对于要驱动泊松重建的法向来说,21 度的系统偏差足以在薄壁上造成翻面;原文没有给误差的分布,只给了一个下限。第三处边界:26 个视点是在点云的包围球上均匀取的,而这一步与第 6 章造标签时取视点的方式一致,也就是说,这条应用正好落在训练分布之内;若换成「只能从有限几个真实机位看」的扫描数据,这条链的精度没有依据。

图 13-5:与 PCPNet 的三组对照:B 组几乎砍半,A 组持平甚至更差(E 类 · 证据)· 原文 Table 8, p9
图 13-5 与 PCPNet 的三组对照:B 组几乎砍半,A 组持平甚至更差(E 类 · 证据)· 原文 Table 8, p9 怎么读 ①图注:三组数据分别是 A = PCPNet 自带的测试数据、B = 本篇的测试数据(来自 ShapeNet)、C = 训练时没见过的数据(来自 COSEG);列是 Dataset/Method/Mean Radian Error/Mean Angle Error,方法只有 PCPNet 与 Ours 两种[Table 8 图注, p9]。②读法:这张表必须「一组一组读」,不能取平均。判别点在于 A 组,它是对手的主场(PCPNet 自己的测试数据),如果本篇在别人的主场也全面更好,那才是真的更好;若在主场持平或更差,就要看 B、C 两组说明了什么。 来源:Neural Visibility of Point Sets, Table 8, p9 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③复算(本页逐格算过):

④边界:A 组那一栏是这张表最该被反复看的地方,因为它标出了这套方法的适用边界。PCPNet 是在自己的数据分布上设计与调参的,在它的主场,本篇的弧度误差与它持平、角度误差反而差 2.51。原文没有解释原因,从两处线索可以推:其一,A 组的弧度误差 0.156 与 B、C 两组的 0.062/0.059 差了一倍多,说明 A 组本身就是更难的一组数据(可能是噪声更强或形状更复杂);其二,本篇的法向是靠可见性聚合出来的,而不是直接回归出来的(图 13-4),这种间接路径在难度更高的数据上更容易吃亏。第二处边界是评价口径:「平均弧度误差」与「平均角度误差」是两个不同的量,前者对小角度误差敏感、后者对大角度离群更敏感,A 组上「一个持平、一个更差」正是这两个量分歧的典型形态。读这张表时不要只看一组,也不要只用其中一个指标下结论。

数据集指标PCPNet本篇差值
A(对手主场)平均弧度误差0.1560.1560.000(持平)
A平均角度误差6.639.14+2.51(更差)
B(本篇主场)平均弧度误差0.1260.062−0.064(降 50.8%)
B平均角度误差7.233.55−3.68
C(训练未见过)平均弧度误差0.0850.059−0.026(降 30.6%)
C平均角度误差4.843.39−1.45

这张小表是全篇最诚实的一处读数:在本篇自己的数据(B)与未见过 COSEG 数据(C)上,两项误差都明显更低;而在 PCPNet 自带的测试数据(A)上,弧度误差持平、角度误差反而差 2.51。原文对这一结果的表述是「法向预测精度与 PCPNet 相当」一类的口径(表注只交代了三组数据的来源),没有展开讨论 A 组为什么更差。本页的读法是:A 组是 PCPNet 的评测协议与数据分布,本篇在这套协议下没有优势,这与第 9 章那条「跨数据集会掉 4–5 个百分点」是同一件事的另一面,只不过这一次掉到了与对手持平。

13.4 应用四:阴影投射

应用四:阴影投射。把可见性直接接到阴影贴图上:从光源视角跑一遍预测,得到光源下的深度图(阴影贴图),再用它判每个点的明暗[§4.3, p9]。

图 13-6:把光源当成一个视点:深度图就是阴影贴图,可见性判定直接给出明暗(E 类 · 证据)· 原文 Fig. 17, p9
图 13-6 把光源当成一个视点:深度图就是阴影贴图,可见性判定直接给出明暗(E 类 · 证据)· 原文 Fig. 17, p9 怎么读 ①图注:第一、三幅是从光源方向得到的深度图,用作阴影贴图;第二、四幅是带阴影的渲染结果[Fig. 17 图注, p9]。②读法:这一图是全篇「换一个视点几乎不花额外代价」这条性质的最直接兑现,光源视角在计算上与相机视角没有区别,因此同一份特征只需换一个方向再跑一次 MLP。判别点在于阴影边界:点云的阴影边界天然带噪(点没有厚度),要看的是边界是「毛的」还是「断的」。原文在这一节只给了这一张图,没有给阴影质量的量化指标。 来源:Neural Visibility of Point Sets, Fig. 17, p9 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:这一条应用把「可见性」这个词的用法换了一次对象,前四条里视点都是相机,这一条里视点变成了光源。换过来之后,整条链不需要任何改动:从光源方向跑一遍预测,得到光源方向的深度图(阴影贴图),再逐点比较深度即可判明暗[§4.3, p9]。它在全篇里的证明价值比实用价值更明确:它说明被学到的是「机制」而不是「某个相机」,一个网络可以同时当相机侧的可见性预测器与光源侧的阴影判定器,中间只换了一个方向向量。这也顺带回答了第 5 章那条疑问(视角编码到底有没有用):如果网络只学到了「相机在哪儿」的某种捷径,换成光源方向就会立刻失效;而这张图说明换过去仍然成立。

④边界:这一节是五条应用里最短的,只有一张图,没有任何量化。这意味着两件事没有答案:其一,阴影质量怎么量:点云的阴影边界天生带噪,而「阴影边界毛糙到什么程度」没有指标;其二,多光源怎么办:一个光源换一次方向、跑一次 MLP,光源数量直接乘上这条链的查询成本,而原文没有给多光源的实验。另有一处概念上的边界:点云的阴影与「曲面是否封闭」强相关,一朵只有可见外壳的点云可以给出合理的外阴影,但自阴影(物体自身凹陷处的阴影)需要光源看不到的那些点也参与判定,而这一点在图上无法确认。

13.5 应用五:视点选择

应用五:视点选择。因为整条链可微,视点本身可以被当成优化变量。原文定义了一条不可见性分数并把它最小化[§4.3, p9]:

— L(v) = (1/N) · Σ_{i=1}^{N} o_i(v)(原文未编号式 · §4.3, p9)

逐项拆:v 是待优化的视点;oi(v) 是网络对第 i 个点给出的「不可见分数」(也就是第 5 章那个两通道输出里属于「不可见」的那一路);N 是点云总点数,外面的 1/N 是对所有点求平均。最小化 L(v) 的含义是:找一个视角,让「平均而言最多个点被看到」,这正是「挑一个最能看清整朵点云的视点」的连续化写法。原文的做法是固定网络参数、对视点做梯度下降,迭代 300 次[§4.3, p9;Fig. 8 图注]。

图 13-7:同一朵点云,优化出的一好一坏两个视点(E 类 · 证据)· 原文 Fig. 8, p5
图 13-7 同一朵点云,优化出的一好一坏两个视点(E 类 · 证据)· 原文 Fig. 8, p5 怎么读 ①图注:输入取网格的顶点、用网络抽特征,优化 300 次迭代,分别找出「最大可见」与「最小可见」的视点[Fig. 8 图注, p5];图内三格标着 Input/Maximum visibility/Minimum visibility。②读法:这张图的判别点在「最小可见」那一格。最大化可见是容易的(正对着看就行);要找一个「最看不清」的视角,说明网络真的给出了一个连续的、随视角平滑变化的分数,而不是逐视角硬判可见/不可见。这也是 U3 为什么能求导的直接证据:硬二值判定在视点连续变化时会是阶跃的,梯度会退化;而 o_i(v) 是网络的软输出。 来源:Neural Visibility of Point Sets, Fig. 8, p5 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导:把「优化视点」这件事写成 U3,需要三个前提同时成立,而这一图是它们的一次合并检验。前提一:整条链对视点可微:位置编码(U1)是光滑函数,MLP 是光滑函数,因此 o_i(v) 对 v 有梯度;前提二:网络参数在优化过程中固定:原文明确写了「保持网络参数不变」[§4.3, p9],否则优化的就不是视点而是网络;前提三:梯度下降能找到有意义的方向:这一点由图上的「最小可见」那一格来证明:如果损失曲面是平的(网络对视角不敏感),最小化会随机停在任意位置;而它确实找到了一个「什么都看不清」的视角,说明 L(v) 在球面上有明显的结构。这三条串起来,也解释了为什么「可微」在原文里被单独列为一条优点[§1, p1]。它换来的不是一个更好的模型,而是一类新的用法。

④边界:U3 最小化的是「平均不可见分数」,这个目标有两处它管不到的地方。其一,平均会掩盖局部:一个视点可以让 90% 的点可见、却把剩下 10% 的关键结构全挡住,而它的平均分仍然很好;原文没有讨论这个权衡,要避开它得把平均换成某种最小值或加权。其二,o_i(v) 是网络输出、不是真值:优化的对象是「网络认为看不清的视点」,而不是「真的看不清的视点」;这构成一个闭环偏置:网络在第 12 章那三类失败情形(薄结构、凹面、多层遮挡)上的错误,会被这条优化当成真实信号去追。第三处边界:300 次迭代这个数在图上是「够用」的(两条曲线都走平),但它只在一个物体上被验证过,换一个点云要不要更多步,图 13-8 没有答案。

图 13-8:两条损失曲线并排:一好一坏两个视点是怎么收敛的(E 类 · 证据)· 原文 Fig. 18, p9
图 13-8 两条损失曲线并排:一好一坏两个视点是怎么收敛的(E 类 · 证据)· 原文 Fig. 18, p9 怎么读 ①图注:整条图注只有 「Loss curve of best and worst view optimization.」[Fig. 18 图注, p9]。图内两格的标题分别是 Loss Curve of Best View Optimization 与 Loss Curve of Worst View Optimization;纵轴是 Loss,横轴是 Iteration(0 到 300,刻度 0/50/100/150/200/250/300);两格的纵轴范围不同,「最好」那一格的刻度是 0.29–0.33,而「最差」那一格是 0.64–0.68。②读法:注意两张图的纵轴不是同一个量程。判别点因此不是「谁更平滑」,而是终值落在哪儿:「最好」收敛到 0.29 附近、「最差」停在 0.64 附近,两者差了一倍多,这说明同一朵点云上,视点的好坏在 L(v) 这个尺度上确实被区分开了。另一处判别点是迭代数:两条曲线都在 300 步之内基本走平,说明这个优化问题在给定点上不难。 来源:Neural Visibility of Point Sets, Fig. 18, p9 · SIGGRAPH Asia 2025 Conference Papers · © 2025 Copyright held by the owner/author(s) · Publication rights licensed to ACM · 原样引用,未修改

③推导(U3 与前两条式的关系):把 U3 展开成它依赖的两步,可以看出视点选择这条应用是本篇全部设计的「兑现点」。第一步,o_i(v) 来自第 5 章那个两层 MLP,它的输入是「逐点特征 × 编码后的视角方向」,所以它对视点是连续可导的(位置编码本身就是光滑函数,U1 就是它的定义式)。第二步,U3 对 N 个点取平均,于是优化目标天然是「全局可见性」而不是「某一个点的可见性」。这两步合起来,才使「固定网络、只动视点」这件事有意义,如果不满足可微,视点只能靠采样搜索,那 300 次迭代换来的精度就无从谈起。这条链也是全篇成本结构的一次完整回收:特征在第一步之外只抽一次,300 次迭代里每次只跑一遍轻量 MLP。

13.6 五条应用的成本结构:一次查询、多次查询、闭环

把这五条应用的「成本结构」并排看,会发现它们并不是同一种东西。可视化与阴影投射是「一次查询」型:给定一个视点(或光源方向),跑一次就可以出结果,成本就是第 10 章那条「特征 + 一次 MLP」。法向估计与视点相关重建是「多次查询」型:前者要 26 个方向(图 13-4),后者每换一个视点要重连一次三角网(图 13-2),它们的成本随查询次数线性增长,而本篇的结构把这个增长的斜率压得很低(特征只抽一次)。视点选择则是「闭环」型:查询的目的不是产出结果,而是决定下一次查询该往哪儿走,300 次迭代意味着 300 次「特征 + MLP」的重复调用,而它的输出只是一个方向向量。这三型的区别决定了它们对精度的敏感度也不同:一次查询型对单点误差最不敏感(错几个点看不出来),多次查询型会把误差平均掉一部分(26 个方向投票),而闭环型会放大误差,因为 o_i(v) 既是「被优化的量」又是「评价标准」,第 13 章那条 U3 的边界里已经把这一点点出来了。原文把这五条并列成「versatility」的证据[§1, p1],而它们对同一份可见性输出的容错度其实是三档。

④边界:五条应用各自的边界不一样,但有一条是共用的:它们全部建立在「单物体、视点在视觉外壳之外」这个前提上(第 6 章标签口径的后果)[§5, p9]。分开看:可视化只对可见性本身负责,不管点云的着色与面元半径;视点相关重建的产物只对该视点有效(换个视点要重连),而且丢掉长边三角形意味着大洞处的结果不可信;法向估计用的是 26 个固定视点,背面法向的置信度天然低于正面(这也解释了表 8 里 A 组的差距);阴影投射只给了一张图,没有任何量化;视点选择优化的是平均不可见性,因此它可能选出一个「大多数点都看得见、但少数关键结构被挡住」的视点,原文没有讨论这个权衡。

14结论、局限与出处

原文的结论把贡献收成三条:① 新的问题形式化:把点云可见性判定写成学习任务,为基于点的渲染提供了一条新路径;② 高效的网络设计:3D U-Net 抽特征 + 轻量共享 MLP 判可见性,同时拿到效率、鲁棒性与泛化;③ 效果与应用的覆盖面:在 ShapeNet 与真实数据上验证,并在五条应用上落地[§1, p1;§5, p9]。

14.1 结论三条,局限四条

它同时也交底了四条局限[§5, p9]:其一,模型只面向单物体,且视点位于视觉外壳之外,扩展到场景级可见性预测或多物体场景是有价值的方向;其二,训练依赖真值可见性标签,而这些标签在真实场景里并不总是可得,未来可探索半监督或自监督来降低对标注的依赖;其三,当前输出是二值的,要更好地表达部分遮挡或透明效果,应改为概率化可见性;其四,数据增强与大规训练策略可以进一步增强泛化,尤其是在复杂的真实场景中。

这四条里,第三条与第 5 章的读法直接对上:U2 那一条交叉熵写的就是硬二值,而改成概率化意味着换掉损失的形式(从交叉熵变成某种分布匹配),这不是加一个通道就能解决的。第一条则解释了第 12 章末尾那张场景级图的地位,它是一次离题尝试,原文把它放在消融一章里、并且不把它写进结论。

致谢:本工作受国家自然科学基金(62371409)与北京市自然科学基金(4244081)资助,并感谢匿名审稿人的意见[§Acknowledgments, p9]。代码与模型开放在 https://github.com/octree-nn/neural-visibility[摘要块]。

14.2 取证细节与复现清单

这一篇的两处取证细节(供后来者复核):

其一,三处未编号式的判定位置。全文没有 (N) 形式的编号公式,首扫按「整行等于 (N)」数出 0 条;但逐行复核发现 §3.2(p3 左栏)有两条独立成行的公式(视角位置编码与交叉熵损失)、§4.3(p9 左栏)有一条(视点选择损失)。三者的字号都是 8.97 pt 的正文级、且都不是行内嵌在段落里,因此按分区的「未编号式」口径落块。取证手段:把 p3 左栏 y 190–210 与 p9 左栏 y 450–480 两处逐 span 打印,逐字确认公式的边界。

其二,图内标签字族的取证。本篇图内标签是 Calibri,5.05–5.78 pt(p8 三处图例 Point Cloud/GT/Ours,p9 三十处坐标轴刻度 0.29–0.33 与 0/50/100),而正文是 LinLibertineT 8.88/9.06 pt、图注是 LinBiolinumT 7.89–8.05 pt。这一档「图内标签专用字族」与系列此前几篇都不同,因此本篇的图元定框不能沿用「按字号排除正文」的老判据,必须按字族 + 字号双条件判。

其三,两处口径不一致的留档(本页第 8、9 章已点名,此处汇总,不做裁定、不替原文改字):① 81k 档的改进幅度:摘要与 §4.1 写「1.5% 以上」,而 Table 1 的 Mean 列逐格相减是 1.2;② ABC 数据集的档位:§4.1 写「2k 与 81k 上分别为 89.0% 与 92.5%」,而 Table 3 的列只有 2k/8k/32k,且 32k 档是 92.4。两处都属于「正文数字与配表列不严格对齐」这一型,本页一律以配表的逐格读数为准。

出处与许可:原文是 SIGGRAPH Asia 2025 Conference Papers(Hong Kong, China,2025-12-15–18)上的会议论文,ACM 出版,DOI 10.1145/3757377.3763869,ISBN 979-8-4007-2137-3/2025/12;本页所据为 arXiv:2509.24150v1 [cs.GR](2025-09-29)。许可为非 CC,所据 PDF 内没有任何版权条(13 个关键词全部 0 命中),因此以 arXiv 摘要页为唯一证据源,该页的 License 是 nonexclusive-distrib/1.0(arXiv 非独占分发);另有两处旁证指向同一结论:Related DOI 指向 SIGGRAPH Asia 2025 正式会议论文,且 arXiv HTML 版在作者块下印出 © acmlicensed(对应 LaTeX 源的 \setcopyright{acmlicensed},即出版权已授予 ACM)。本页因此不托管原文 PDF,全部 27 件图元原样零加工引用 + 逐图四字段署名。

如果想自己复现,这一篇的门槛清单大概是这样的(按原文能给到的信息整理,缺失项已标注):模型侧:八叉树 U-Net(初始通道 32、下采样侧残差块 2/3/4/6、八叉树深度 8)+ 两层 MLP(隐藏维 128/64)+ 位置编码(频率条数 L 原文未给),参数量约 40M;数据侧:ShapeNet 的 18 个类别、用已有方法修成水密网格、每朵表面采 200k 点、视点在包围盒球面上均匀取、标签由射线求交生成;评测侧:四档密度(2k/8k/32k/81k)、指标是逐点可见性精度、基线是 HPR/HPRO(各扫三组 γ 取最好)与 InvSfM(512 分辨率预训练模型);缺项:训练批大小、优化器与学习率、训练轮数、L 的取值、随机种子,这些原文都写在补充材料里(本页未据),正文只交代了「端到端训练」与损失形式[§3.2–§3.3]。把这份清单与第 12 章那三条消融并读,可以看出一件工程上的事实:这套方法的可复现性主要卡在「数据准备」这一侧(要水密网格、要一次性的求交算力),而不是卡在模型结构上,结构部分的选择几乎都不敏感(第 12 章),而数据部分的每一步都是硬前提。

本页的核查方式也在此交代一句:所有数字都取自 Table 1–9 的逐行重建(tables-rows.txt,按 y 分组、按 x 排序还原出每一行的 19 个格),没有从正文的叙述里抄数,这正是第 8、9 章那两处「正文与配表不一致」能被发现的原因:先建表、再对正文,顺序反了就看不出差异。凡本页给出的「+x.x/−x.x」,都是逐格相减或按表内公式复算得到的,读者可用同一份表逐格核对。

14.3 放回系列里看:它站在哪一格

最后,把这一篇放回系列里看,它站在哪一格。系列此前各篇改的大多是「表示」与「管线」:高斯核的形状、纹理场、致密化节奏、损失算在哪儿、光传输烘成什么;而这一篇不改渲染器、不改表示、也不产图像,它改的是「渲染器要做遮挡判断时,那个判断从哪儿来」。这条轴与前面某几篇有交集但不重合:与「全局光照」那些篇目共享「可见性」这个物理量(阴影、间接光都要它),与「重要性采样」那两篇共享「把一个人手写的决定交给小网络」这个手法(篇目 68 把换元交给网络、篇目 69 把挑灯交给网络),但对象完全不同,它们改的是「怎么采」,这一篇改的是「看得见还是看不见」。换句话说,它是那种「不显眼但会被很多下游用到」的工作:输出只有一个布尔量,却同时喂给了可视化、重建、法向、阴影与视点选择五条路。

读这一篇的正确姿势因此是「换一个问法」:不要问「它比 HPR 准多少」(那是第 8 章那张表已经回答的事,答案是 +1.2 到 +3.7 个百分点),而要问「把可见性当成一个可学的量之后,哪些原来做不到的事变得可做了」。原文给出的答案是三件:① 它可微,于是视点本身成了优化变量(第 13 章那条 U3);② 它只算一次特征就能复用到任意视角,于是「26 个视点投出法向」与「换一个光源方向看阴影」这两件事的成本被压到极低;③ 它学的是「曲面—可见性」这一对关系,于是残缺点云与没见过的类别都不构成灾难。这三件都不是「更准」能概括的,它们是「换了一个形式化之后新长出来的能力」。

本页完