【点云处理之论文狂读前沿版8】—— Pointview-GCN: 3D Shape Classification With Multi-View Point Clouds

摘要

  • 绕着物体从多个视点捕获部分点云进行3D shape classification
  • Pointview-GCN具有multi-level的Graph Convolutional Networks (GCNs),以fine-to-coarse的方式聚合单个视角点云的形状特征,从而达到对物体的几何信息多视角关系进行编码的目的
  • 代码详见:https://github.com/SMohammadi89/PointView-GCN PyTorch版本

1.引言

  • 现实生活中捕获到的点云数据都是从不同视角下获得的部分点云
  • Graph Convolutional Networks (GCNs)证明了其在多视角下对语义关系编码进行特征聚合的强大能力
  • Pointview-GCN提出了一个具有multi-level GCNs的网络,从多个视图的部分点云中聚合形状特征,以fine-to-coarse的方式挖掘相邻视图中的语义关系
  • 在不同层的GCNs间加入skip connection
  • 提出了一个新的数据集,该数据集包含单个视角的点云数据

2.相关工作

MVCNN使用max-pooling从不同的视图中聚合特征,最终得到一个全局形状descriptor,缺点是 没有考虑多视图数据之间的语义关系。

View-GCN提出了一个基于view的图卷积网络,在数据中捕获结构关系,但是以上方法都是在图像上聚合特征。

3.方法

  • 首先从物体的不同视角下拍摄多个部分点数据
  • 利用backbone提取每个部分点云的特征
  • 创建一个带有 N N N个节点的图 G = { v i } i ∈ N G=\left\{ {v_i} \right\}_{i \in N} G={vi}iN,通过第 i i i个单视角点云数据的形状特征 F i F_i Fi表示节点 v i v_i vi,其中 F = { F i } i ∈ N \mathbf{F}=\left\{ {F_i} \right\}_{i \in N} F={Fi}iN G G G的所有节点特征, v p v_p vp v i v_i vi的相邻点(kNN), G G G的邻接矩阵为 A \mathbf{A} A

提出网络的特征聚合包含了多个level的GCNs,如图2所示,level的最优数量 M M M通过实验确定。

在第 j j j个level 中,对输入的 G j G^j Gj执行graph convolution操作,更新节点特征 F i F_i Fi,随后跟一个可选择性的 view-sampling,得到更小的graph G j + 1 G^{j+1} Gj+1 G j + 1 G^{j+1} Gj+1中包含了 G j G^{j} Gj最重要的视图信息。

G j + 1 G^{j+1} Gj+1又被作为输入被放入第 j + 1 j+1 j+1个level中。

3.1. Graph convolution and Selective View Sampling

在第 j j j个level中,执行了以下三个操作:

  1. local graph convolution
  2. non-local message passing
  3. selective view sampling (SVS)

Local graph convolution

考虑节点 v i j v_i^j vij及其相邻节点,local graph convolution通过下式更新节点 v i j v_i^j vij的特征:
F ~ j = L ( A j F j W j ; α j ) \tilde{\mathbf{F}}^{j}=\mathcal{L}\left(\mathbf{A}^{j} \mathbf{F}^{j} \mathbf{W}^{j} ; \alpha^{j}\right) F~j=L(AjFjWj;αj)
其中 L ( ⋅ ) \mathcal{L}(\cdot) L()表示LeakyReLU操作, α j \alpha^{j} αj W j \mathbf{W}^{j} Wj为权值矩阵。

non-local message passing

接下来还要再通过non-local message passing更新 F ~ j \tilde{\mathbf{F}}^{j} F~j,考虑 G j G^{j} Gj中所有节点间的长距离关系。每个节点 v i v_i vi首先更新其到相邻顶点间边的状态:

m i , p j = R ( F ~ i j , F ~ p j ; β j ) i , p ∈ N j m_{i, p}^{j}=\mathcal{R}\left(\tilde{F}_{i}^{j}, \tilde{F}_{p}^{j} ; \beta^{j}\right)_{i, p \in N^{j}} mi,pj=R(F~ij,F~pj;βj)i,pNj

其中 R ( ⋅ ) \mathcal{R}(\cdot) R()表示一对视图间的relation function, β j \beta^{j} βj是related parameters。

之后通过下式更新顶点的特征:
F ~ i j = C ( F ~ i j , ∑ p = 1 , p ≠ i N j m i , p j ; γ j ) \tilde{F}_{i}^{j}=\mathcal{C}\left(\tilde{F}_{i}^{j}, \sum_{p=1, p \neq i}^{N_{j}} m_{i, p}^{j} ; \gamma^{j}\right) F~ij=CF~ij,p=1,p=iNjmi,pj;γj
其中 C ( ⋅ ) \mathcal{C}(\cdot) C()是combination function, γ j \gamma^{j} γj是related parameters。

在通过non-local message passing后,特征是在考虑整个图的关系上更新的。

selective view sampling (SVS)

  1. 使用Farthest Point Sampling (FPS)对 G j G^{j} Gj进行下采样
  2. 每个下采样后的节点 v i v_i vi的最近邻 V i j \mathbf{V}_{i}^{j} Vij中,使用view-selector选择softmax函数响应最大的节点
  3. 将coarsened G j + 1 G^{j+1} Gj+1和更新好的 F j + 1 \mathbf{F}^{j+1} Fj+1放入下一层继续处理

3.2. Multi-level feature aggregation and training loss

在每一层graph convolution后,都有一层max-pooling作用在 F j \mathbf{F}^{j} Fj上,目的是得到每个level上的全局形状特征 F global  F_{\text {global }} Fglobal 

最终的全局形状特征 F global  F_{\text {global }} Fglobal 是所有level中被pool后特征的拼接。

从第一层的convolution level 到最后一层的convolution level 之间加入了一个residual connection,避免当GCNs level的数量增加导致的梯度消失现象。

训练损失包含两个元素,全局形状损失 L global  L_{\text {global }} Lglobal 和selective-view形状损失 L selective  L_{\text {selective }} Lselective 
L = L global  ( S ( F global  ) , y ) + ∑ j = 1 M ∑ i = 1 N j + 1 ∑ v s ∈ V i j L selective  ( V ( F s j ; θ j ) , y ) \begin{aligned} L=& L_{\text {global }}\left(\mathcal{S}\left(F_{\text {global }}\right), y\right)+\\ & \sum_{j=1}^{M} \sum_{i=1}^{N^{j+1}} \sum_{v_{s} \in \mathbf{V}_{i}^{j}} L_{\text {selective }}\left(\mathcal{V}\left(F_{s}^{j} ; \theta^{j}\right), y\right) \end{aligned} L=Lglobal (S(Fglobal ),y)+j=1Mi=1Nj+1vsVijLselective (V(Fsj;θj),y)
其中 L global  L_{\text {global }} Lglobal 是交叉熵损失, S \mathcal{S} S是包含了全连接层和softmax函数的分类器, y y y是形状分类。 L selective  L_{\text {selective }} Lselective  是用于view selector的交叉熵,保证所选的视图可以识别形状形状分类。 V ( ⋅ ) \mathcal{V}(\cdot) V()是用于view selector的函数,参数为 θ j \theta^{j} θj F s j F_{s}^{j} Fsj是下采样后的节点。

在训练时,只有 L global  L_{\text {global }} Lglobal  参与。

4.实验

Dataset generation

ModelNet40包含了12311个model,40个类别
ScanObjectNN包含了2909个model,15个类别
基于此构建了4个数据集:Model-D, Model-H, Scan-DScan-H
D表示二十面体(20个viewpoints),H表示半球(12个viewpoints)

Implementation details

backbone:PointNet++ /DGCNN

4.1. Comparison against state-of-the-art methods

4.2. Ablation studies

Effects of levels of GCN and skip connection

Effects of number of input views

半球体视角设计精度不如二十面体,可能是因为底部没有采集到足够的信息。

Effects of PointNet++ models of varying classification accuracy

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值