清晨的积木工坊里,老师傅面对一筐刚倒出来的积木颗粒——它们散乱地堆在一起,没有顺序、没有方向,就像一颗颗漂浮在三维空间里的星星。老师傅的任务,是快速把每一颗积木按形状分拣到对应的箱子里:方块进蓝箱、圆球进红箱、三角进绿箱。这就是点云语义分割的日常:给每一个三维点打上“类别标签”。 工坊的老师傅是一位经验丰富的老师傅,他闭着眼睛,用手在整个积木堆里摸了一遍,就能说出每一颗积木的形状。这就是PointNet的智慧——它不看积木之间的相对位置,只关注“这一个点长得像什么”。而工坊里新来的年轻学徒则不同,他每拿起一颗积木,都要看看它周围邻居的形状,大家商量一番再决定这颗积木该进哪个箱子。这就是PointTransformer的智慧——通过“注意力机制”让每个点与周围的点充分交流。 本文将以这个故事为线索,带你理解这两代点云处理技术的核心思想。你会看到:PointNet如何用“对称”的巧妙设计应对点云的无序性,PointTransformer又如何引入“注意力”让每个点都学会参考邻居的意见。这是一个从“只看自己”到“参考邻里”的进化故事。

岗位关联

掌握PointNet与PointTransformer的对比,是理解3D视觉从“几何建模”走向“关系建模”的关键一步,也是你在做自动驾驶、机器人导航等3D场景理解任务时,选择正确模型架构的决策基础。

目录
  1. 可视化演示
  2. 点云初识
  3. PointNet创新
  4. Transformer改念
  5. 差异对比
  6. 性能实战
  7. 演进选型
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

对比PointNet逐点独立特征学习与PointTransformer注意力局部特征学习,含点云处理可视化与mIoU/参数/FPS性能对比。

本节配有交互动效(进入视口后自动加载,约 3KB)。

PointNet:逐点独立特征学习 每个点独立通过MLP提取特征 Max Pooling聚合全局特征 f_global = MAX({MLP(p_i)}) 点间无信息交互,对称函数保证置换不变性。

点云初识

清晨的积木工坊里,老师傅面对一筐刚倒出来的积木颗粒——它们散乱地堆在一起,没有顺序、没有方向,就像一颗颗漂浮在三维空间里的星星。老师傅的任务,是快速把每一颗积木按形状分拣到对应的箱子里:方块进蓝箱、圆球进红箱、三角进绿箱。这就是点云语义分割的日常:给每一个三维点打上“类别标签”。

在现实世界中,激光雷达扫描自动驾驶汽车周围的环境,得到的不是一张整齐的图片,而是一堆散乱的三维坐标点。每个点包含 $(x, y, z)$ 坐标,有时还带有颜色或反射强度。这些点的集合就是“点云”。与图片不同,点云没有天然的排列顺序——同一片场景扫描两次,点的排列顺序会完全不同,但表达的内容是一样的。

这让点云处理面临三大挑战。第一个挑战是无序性:处理结果不能因为点的排列顺序改变而改变。第二个挑战是稀疏性:远处物体表面可能只有寥寥几个点,信息量不足。第三个挑战是变换不变性:同一物体旋转、平移后,识别结果应该保持不变。这就像积木工坊里,老师傅闭着眼睛转动一颗积木,依然能认出它是方块还是圆球。

正是这三个挑战,让传统方法束手无策。在PointNet出现之前,研究者们通常先把点云转换为三维体素(像把积木切碎后塞进方格抽屉),再使用卷积神经网络处理。但这种方式计算开销巨大,而且量化过程会丢失细节。2017年,PointNet的出现彻底改变了这一局面。

点云={p1,p2,…,pN},pi=(xi,yi,zi)\text{点云} = \{\mathbf{p}_1, \mathbf{p}_2, \ldots, \mathbf{p}_N\}, \quad \mathbf{p}_i = (x_i, y_i, z_i)
点云是三维点的无序集合,每个点独立携带坐标信息,整体没有固定的排列顺序。
  1. 点云定义点云由 $N$ 个点组成,每个点是一个三维坐标。
    pi=(xi,yi,zi)\mathbf{p}_i = (x_i, y_i, z_i)
  2. 关键特性点云作为集合,任何排列顺序的变化不改变其语义含义。
    {p1,…,pN}={pπ(1),…,pπ(N)}\{\mathbf{p}_1, \ldots, \mathbf{p}_N\} = \{\mathbf{p}_{\pi(1)}, \ldots, \mathbf{p}_{\pi(N)}\}

PointNet创新

老师傅面对积木堆,没有急着去拨弄每一颗积木之间的位置关系。他反而闭上了眼睛,用手掌在积木堆上一按——每一颗积木受压后都会把形状信息传回大脑,老师傅再汇总所有感知,做出分类判断。PointNet的核心理念正是如此:不使用局部结构信息,而是对每个点独立提取特征,再聚合全局特征。

PointNet的第一个创新是共享MLP。它用同一个多层感知机(MLP)对每个点独立提取特征。就像工坊的每一个传送带工位都配备了相同的“形状检测仪”,无论哪颗积木经过,都被同一套标准检测一遍。这保证了网络对点的排列顺序不敏感——因为在数学上,每个点都经过了完全相同的变换。

第二个创新是最大池化。经过共享MLP后,每个点都得到了自己的特征向量,但网络需要整合这些信息做决策。PointNet使用最大池化(Max Pooling)将所有点的特征聚合为一个全局特征向量。这就像老师傅收集了所有积木的“形状报告”后,从每一维度上选出最突出的响应,形成对整个积木堆的全局印象。最大池化是一个对称函数——无论积木以什么顺序进入,取最大值的结果都一样。

第三个创新是T-Net。为了让网络对旋转变换更鲁棒,PointNet引入了一个小型的子网络,它学习一个变换矩阵,把输入点云对齐到一个标准方向。这就像老师傅把每一颗积木都转正了再辨认——先摆正姿态,再判断形状。这个变换矩阵不仅在输入层使用,在特征层也使用了类似的变换,让特征的“姿态”也得到对齐。

f({x1,…,xn})=max⁡i{h(xi)}f(\{x_1, \ldots, x_n\}) = \max_i \{h(x_i)\}
最大池化是一个对称函数,它对所有点特征逐维度取最大值,从而保证输出与输入顺序无关。
  1. 单点特征提取每个点经过同一个多层感知机 $h$ 被映射为高维特征。
    h(pi)=MLP(pi)h(\mathbf{p}_i) = \text{MLP}(\mathbf{p}_i)
  2. 对称聚合对所有点的特征逐维度取最大值,得到全局特征。这个操作是排列不变的。
    f({x1,…,xn})=max⁡i{h(xi)}f(\{x_1, \ldots, x_n\}) = \max_i \{h(x_i)\}

Transformer改念

工坊来了位年轻学徒小智。他分拣积木的方式和老师傅完全不同:拿起一颗积木时,他先看看它周围邻居的形状,大家商量一番再决定这颗积木该进哪个箱子。小智的灵感来自Transformer——这个在自然语言处理领域大放异彩的架构,被PointTransformer成功地移植到了点云处理上。

Transformer的核心是自注意力机制。自注意力让序列中的每个元素都能“关注”序列中的其他元素,根据相关性加权融合信息。在点云场景中,每个点都可以通过自注意力参考所有其他点的特征来更新自己的特征。这就像小智在决定一颗积木的类别时,会参考工坊里所有其他积木的“意见”——但每颗积木的意见权重不同,和当前积木越相似的邻居,其意见就越被重视。

自注意力机制的强大之处在于,它让点与点之间真正产生了“交流”。但纯粹的自注意力有一个缺陷——它没有空间位置的概念。在点云中,两个相距很远的点也可能有很高的特征相似度,但三维空间中它们可能毫无关联。为此,PointTransformer引入了位置编码,把每个点的三维坐标信息注入注意力计算中。这就像小智不仅参考邻居的“意见”,还知道每个邻居离自己多远——距离近的邻居意见权重更高,远亲不如近邻。

Attention(Q,K,V)=softmax(QKTd)V\text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{softmax}\left(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d}}\right)\mathbf{V}
自注意力通过查询(Q)与键(K)的相似度来确定值的加权权重,位置编码为这个相似度增加了空间距离的先验。
  1. 查询与键每个点生成查询向量 $\mathbf{Q}$ 和键向量 $\mathbf{K}$,用于计算点与点之间的相关性。
    Q=XWQ,K=XWK\mathbf{Q} = \mathbf{X}\mathbf{W}_Q, \quad \mathbf{K} = \mathbf{X}\mathbf{W}_K
  2. 相关性计算用点积衡量两个点的相关程度,除以 $\sqrt{d}$ 防止数值过大。
    score=QKTd\text{score} = \frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d}}
  3. 权重归一化对每个点与所有点的相关性分数做 softmax,得到和为1的注意力权重。
    attention_weights=softmax(score)\text{attention\_weights} = \text{softmax}(\text{score})
  4. 加权求和用注意力权重对值向量 $\mathbf{V}$ 加权求和,得到更新后的特征。
    Output=attention_weights⋅V\text{Output} = \text{attention\_weights} \cdot \mathbf{V}

差异对比

现在,我们把老师傅的PointNet和小智的PointTransformer摆在一起,仔细看看他们的分拣方式有多大的不同。

第一个差异是局部感知。PointNet完全没有局部感知能力——它只看单点,对“这个点的邻居是谁”漠不关心。而PointTransformer通过自注意力天然具备了局部感知能力,每个点都能感知到邻域内的结构信息。这就像老师傅只靠摸形状就能分拣,而小智还知道“带圆球的旁边通常有三角块”这种局部模式。

第二个差异是计算复杂度。PointNet的复杂度是 $O(N)$,与点数成线性关系,效率极高。而PointTransformer的自注意力复杂度是 $O(N^2)$,因为每个点都要与所有其他点计算相关性。这就像老师傅闭眼摸积木,摸一个算一个;而小智每拿起一个积木都要和全场所有积木商量,越到后面越吃力。为此,实际工程中通常使用局部注意力、随机采样等方式来控制计算量。

第三个差异是信息聚合方式。PointNet使用最大池化聚合全局信息,它得到的是一种“全局概要”——对每个特征维度取最大值,保留的是最突出的响应。而PointTransformer通过注意力加权求和聚合信息,得到的是“全局平滑融合”——每个特征维度是所有点信息的加权平均。这就像老师傅归纳的是“堆里最大的那个积木是什么”,而小智给出的是“整个积木堆的平均偏好”。

性能实战

理论分析再精彩,最终还是要用数据说话。在标准3D语义分割数据集S3DIS和ScanNet上,两个模型的差距非常明显。

精度大幅提升:PointTransformer在S3DIS数据集上的平均交并比(mIoU)达到了70%以上,相比PointNet的约53%提升了近17个百分点。这就像小智的分拣准确率从老师傅的七成提升到了九成以上——因为他能参考邻居信息,减少了很多判断错误。

显存开销增大:高精度的代价是更大的资源消耗。PointTransformer的显存占用通常是PointNet的5-10倍,训练时间也显著增长。如果工坊只有一台老旧的传送带,可能带不动小智这种“全场商量”的工作方式。

数据需求变高:注意力机制的参数量更大,需要更多训练数据来充分拟合。在数据充足的大型数据集上,PointTransformer的优势非常明显;但数据量小时,它的表现可能还不如简洁的PointNet。这就像小智的“邻里商量”模式,需要见过足够多的积木组合模式,才能做出准确的判断。

演进选型

从PointNet到PointTransformer,点云处理走过了一条清晰的演进路径。这条路径的核心,可以总结为从对称到注意、从全局到局部。

从对称到注意:PointNet依赖最大池化这种对称函数来解决无序性问题,是一种“不看关系”的策略。而PointTransformer用注意力机制取代了简单的池化,让点与点之间产生动态的关系建模。这不仅是技术的升级,更是一种思考方式的转变——从“孤立地看每个点”到“让点与点互相交流”。

从全局到局部:PointNet的特征聚合是全局的,一个点的最终特征要参考整个点云,这在点云规模大时难免“顾此失彼”。而PointTransformer通过局部注意力机制,让每个点重点关注周围的邻居,局部结构信息得到更充分的利用。

在实际选型时,需要按需选择。如果项目对实时性要求极高、算力有限、数据量不大,PointNet仍然是很好的选择——它简洁高效,运行如飞。如果追求最高精度、数据充足、算力允许,PointTransformer是更优的选择。此外还有一条折中路线:在模型的前几层使用PointNet式的共享MLP快速降采样,在高层使用PointTransformer式的注意力结构精修细节——这也是当前许多先进模型(如PointNeXt)的设计思路。

在工坊的故事里,老师傅和小智并非谁完全取代谁——大型智能工厂或许需要小智的全场协调,但街角的小作坊里,老师傅的闭眼摸形依然是最稳妥的生存之道。

AI 应用场景

自动驾驶场景理解

阶段:3D感知与语义分割

解决的问题:自动驾驶汽车需要实时理解周围环境,把激光雷达扫描到的点云逐点分类为“路面”“车辆”“行人”“建筑”等。传统基于体素的方法计算量大、精度有限,而PointNet的高效性适合实时处理,PointTransformer的精度优势则能显著降低对远处小物体的漏检率。

具体案例:某自动驾驶公司在其感知管线中,对近距离区域使用PointTransformer精细分割以准确识别行人和骑行者姿态,对远距离区域使用蒸馏后的轻量网络快速粗分割,两者结合在nuScenes数据集上将语义分割mIoU提升了12%,同时保证单帧处理时间在30ms以内。

工业零件分拣

阶段:机器人抓取规划

解决的问题:仓库机器人需要从料筐中识别不同零件的类别和位姿,才能准确地抓取和分拣。点云语义分割在此任务中比RGB图像更可靠(不受光照影响),PointNet适合快速粗分类,PointTransformer能更好地区分形状极为相近的零件。

具体案例:某物流企业的分拣机器人使用PointTransformer对料筐点云进行语义分割,将方形、圆形、异形三类零件的分类准确率从90%提升到98.7%,通过注意力机制对遮挡场景下的局部结构建模,即使零件互相堆叠也能保持正确分割。

Python 演示

python93 行
import torchimport torch.nn as nnimport torch.nn.functional as Fimport math  class PointNet(nn.Module):    """PointNet:每个点独立做MLP,再用最大池化聚合全局特征。"""     def __init__(self, in_channels=3, out_channels=10):        super(PointNet, self).__init__()        self.mlp = nn.Sequential(            nn.Linear(in_channels, 64),            nn.BatchNorm1d(64),            nn.ReLU(),            nn.Linear(64, 128),            nn.BatchNorm1d(128),            nn.ReLU(),            nn.Linear(128, 256),        )        self.classifier = nn.Linear(256, out_channels)     def forward(self, x):        # x: (B, N, C)        B, N, C = x.shape        x = x.view(B * N, C)        features = self.mlp(x)  # 每个点共享同一个MLP        features = features.view(B, N, 256)        global_feat = features.max(dim=1)[0]  # 最大池化聚合        out = self.classifier(global_feat)  # (B, out_channels)        return out  class PointTransformer(nn.Module):    """简化版PointTransformer:自注意力 + 位置编码。"""     def __init__(self, in_channels=3, d_model=128, out_channels=10):        super(PointTransformer, self).__init__()        self.d_model = d_model        self.input_proj = nn.Linear(in_channels + 3, d_model)        self.q_proj = nn.Linear(d_model, d_model)        self.k_proj = nn.Linear(d_model, d_model)        self.v_proj = nn.Linear(d_model, d_model)        self.output_proj = nn.Linear(d_model, d_model)        self.classifier = nn.Linear(d_model, out_channels)     def forward(self, x):        # x: (B, N, C)        B, N, C = x.shape        device = x.device         # 生成坐标网格作为相对位置编码        idx = torch.arange(N, device=device).float().view(1, N, 1)        idx = idx.expand(B, N, 1)        pos_enc = torch.cat([idx / N,                             (idx / N) ** 2], dim=-1)  # (B, N, 2)        pos_enc = pos_enc.expand(B, N, 2)        x = torch.cat([x, pos_enc], dim=-1)  # (B, N, C+2)         h = self.input_proj(x)  # (B, N, d_model)        q = self.q_proj(h)        k = self.k_proj(h)        v = self.v_proj(h)         attn_scores = torch.bmm(q, k.transpose(1, 2)) / math.sqrt(self.d_model)        attn_weights = F.softmax(attn_scores, dim=-1)  # (B, N, N)         attn_out = torch.bmm(attn_weights, v)  # (B, N, d_model)        h = h + self.output_proj(attn_out)  # 残差连接         global_feat = h.mean(dim=1)  # 全局平均池化        out = self.classifier(global_feat)  # (B, out_channels)        return out  def demo():    torch.manual_seed(42)    B, N, C = 8, 1024, 3    x = torch.randn(B, N, C)  # 模拟点云:8个场景,每场景1024个点     pn = PointNet()    pt = PointTransformer()     out_pn = pn(x)    out_pt = pt(x)    print("PointNet output shape:", out_pn.shape)    print("PointTransformer output shape:", out_pt.shape)    print("PointNet params:", sum(p.numel() for p in pn.parameters()))    print("PointTransformer params:", sum(p.numel() for p in pt.parameters()))  if __name__ == "__main__":    demo()
目的:用PyTorch实现PointNet和PointTransformer的简化前向传播,直观对比“共享MLP+最大池化”与“自注意力+位置编码”两种架构的核心逻辑。
  1. features = features.view(B, N, 256)把展平的特征恢复为 (Batch, Points, Channels) 形状,便于逐点池化
  2. global_feat = features.max(dim=1)[0]在点维度上做最大池化,是PointNet对点云无序性的核心解决方案
  3. pos_enc = torch.cat([idx / N, (idx / N) ** 2], dim=-1)生成归一化的坐标位置编码,让注意力感知“距离”
  4. attn_weights = F.softmax(attn_scores, dim=-1)对注意力分数做softmax归一化,得到和为1的权重分布
  5. h = h + self.output_proj(attn_out)残差连接,让原始特征与注意力提取的特征叠加,训练更稳定

常见误区

误区PointNet对每个点独立处理,所以它对局部结构完全漠不关心,一点邻域信息都没有。

正解PointNet确实没有显式的局部特征提取模块,但它通过多层MLP的层级特征和全局最大池化的组合,仍然可以直接从坐标中隐式学习到一些局部模式。例如,两层MLP的输出可以组合出“某个点附近同时存在两个同类点”这类信息,只不过这种能力远不如注意力机制那样灵活、直接。

为何常见:人们容易被“每个点独立”的字面含义误导,忽略了深层神经网络本身具备的特征组合能力。

误区PointTransformer的精度更高,所以不管什么任务,用PointTransformer就对了。

正解PointTransformer的精度优势建立在充足的数据和算力基础上。在小数据集上,PointNet简洁的结构更容易收敛,泛化性可能反而更好。同时,PointTransformer的 $O(N^2)$ 复杂度在点云规模超过10万点时,训练和推理都极其耗时,工程上往往需要稀疏化或局部采样来妥协。

为何常见:看到SOTA指标就认为“最强即最优”,忽视了工程落地中数据量、算力、实时性的综合权衡。

误区Transformer的自注意力机制会自动理解点与点的空间位置关系,所以不需要额外的位置编码。

正解自注意力计算的相似度只基于特征本身,完全不知道点的坐标信息。两个在空间中相距甚远的点,只要特征相似,注意力权重就会很高。PointTransformer必须通过显式的位置编码把空间坐标注入注意力计算,网络才能感知“远亲不如近邻”。

为何常见:NLP领域的Transformer不需要位置编码(有相对位置编码)也能工作,让人误以为空间信息是自带的。

面试题

Q1. PointNet中用于解决点云无序性的关键操作是?

单选题 · easy

  • A.卷积核共享
  • B.随机丢弃点
  • C.最大池化聚合← 正确答案
  • D.全连接分类层

答案:C。最大池化是置换不变(排列不变)的对称函数,无论点的输入顺序如何变化,逐维度取最大值的结果都相同。卷积核共享(A)主要用于参数量控制,随机丢弃点(B)是数据增强,全连接层(D)用于分类输出,它们都不具备排列不变性。

Q2. PointTransformer相比PointNet最核心的改进是?

单选题 · easy

  • A.更深的网络结构
  • B.引入注意力机制← 正确答案
  • C.使用更多训练数据
  • D.增加点云采样密度

答案:B。PointTransformer的核心创新是将自注意力机制引入点云处理,让每个点能参考邻域内其他点的特征进行特征更新,实现局部结构感知。更深的网络(A)和数据增密(D)只是量变,注意力机制是质变;更多数据(C)是训练策略而非网络结构改进。

Q3. 关于PointNet的T-Net模块,下列说法正确的是?

单选题 · mid

  • A.它用于加速网络训练
  • B.它学习变换矩阵对齐点云姿态← 正确答案
  • C.它替代了最大池化层
  • D.它增加点云的点数密度

答案:B。T-Net是一个子网络,学习一个变换矩阵(如3x3或64x64),将输入点云或特征对齐到一个标准姿态,从而提升网络对旋转的鲁棒性。它不加速训练(A),不替代池化(C),也不增密点云(D)。

Q4. PointTransformer的注意力计算中,位置编码的作用是?

单选题 · mid

  • A.减少计算复杂度
  • B.注入空间位置先验← 正确答案
  • C.替代所有全连接层
  • D.增加网络的宽度

答案:B。自注意力自身不感知空间坐标,两个相距很远的点只要特征相似就会获得高注意力权重。位置编码将点的三维坐标信息注入注意力计算,使网络能感知“远亲不如近邻”的先验。它不负责降复杂度(A),不替代全连接层(C),不增加宽度(D)。

Q5. 下列哪个不属于点云处理的三大挑战?

单选题 · easy

  • A.无序性
  • B.稀疏性
  • C.变换不变性
  • D.色彩多样性← 正确答案

答案:D。点云三大挑战是无序性(点的排列顺序不定)、稀疏性(远处物体点数少)、变换不变性(旋转平移后语义不变)。色彩多样性(D)不是点云处理的基本挑战,点云的颜色只是附加信息,不影响基本方法设计。

Q6. 关于PointNet和PointTransformer的性能对比,正确的有?

多选题 · mid

  • A.PointTransformer在S3DIS上mIoU通常高于PointNet← 正确答案
  • B.PointNet的计算复杂度低于PointTransformer← 正确答案
  • C.PointTransformer的显存占用一般小于PointNet
  • D.PointNet在小数据集上可能比PointTransformer更容易收敛← 正确答案

答案:ABD。PointTransformer在标准数据集上精度显著更高(A对);PointNet复杂度为 $O(N)$,PointTransformer为 $O(N^2)$(B对);高精度的代价是显存占用大,PointTransformer一般比PointNet多5-10倍(C错);PointNet结构简洁、参数量少,小数据下更容易收敛(D对)。

Q7. 在PointTransformer中,注意力权重的计算方式是?

单选题 · mid

  • A.查询与键的点积后归一化← 正确答案
  • B.查询与值的点积后归一化
  • C.键与值的点积后归一化
  • D.对所有特征直接取平均

答案:A。自注意力的标准流程是用查询向量Q与键向量K做点积,得到点与点之间的相关性分数,再经softmax归一化得到注意力权重,最后对值向量V加权求和。Q与V(B)、K与V(C)的点积没有意义,取平均(D)是普通池化而非注意力。

Q8. 关于PointNet的对称聚合函数,以下理解正确的有?

多选题 · hard

  • A.最大池化是置换不变函数← 正确答案
  • B.平均池化也可以作为对称聚合函数← 正确答案
  • C.对称聚合函数可以表达点云中的局部结构关系
  • D.求和池化也可以作为对称聚合函数← 正确答案

答案:ABD。最大池化、平均池化、求和池化都是对称函数——输入顺序变化时输出不变(A、B、D对)。但纯对称聚合丢失了点的相对位置关系,难以表达局部结构(C错),这正是PointTransformer引入注意力机制的原因。

Q9. PointTransformer在处理大规模点云时,为降低计算复杂度常采用下列哪种策略?

单选题 · hard

  • A.增加网络深度
  • B.采用局部注意力或随机采样← 正确答案
  • C.代替位置编码
  • D.添加更多池化层

答案:B。自注意力复杂度为 $O(N^2)$,点云规模增大时计算量急剧上升。工程上通常通过局部注意力(只让邻近点交互)或随机采样减少参与注意力的点数来控制复杂度。增加深度(A)、加池化(D)对复杂度影响不大,替代位置编码(C)不可行。

Q10. 下列哪些是PointNet引入的关键创新?

多选题 · easy

  • A.共享MLP逐点特征提取← 正确答案
  • B.最大池化全局聚合← 正确答案
  • C.T-Net输入变换对齐← 正确答案
  • D.自注意力机制

答案:ABC。共享MLP解决无序性问题的基础(A对),最大池化是聚合全点特征的对称操作(B对),T-Net是一种数据依赖的变换网络(C对)。自注意力机制属于PointTransformer而非PointNet(D错),这也是两代模型的分水岭。