当前位置:网站首页>【点云处理之论文狂读前沿版8】—— Pointview-GCN: 3D Shape Classification With Multi-View Point Clouds
【点云处理之论文狂读前沿版8】—— Pointview-GCN: 3D Shape Classification With Multi-View Point Clouds
2022-07-03 08:53:00 【LingbinBu】
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}i∈N,通过第 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}i∈N是 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中,执行了以下三个操作:
- local graph convolution
- non-local message passing
- 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,p∈Nj
其中 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=C⎝⎛F~ij,p=1,p=i∑Njmi,pj;γj⎠⎞
其中 C ( ⋅ ) \mathcal{C}(\cdot) C(⋅)是combination function, γ j \gamma^{j} γj是related parameters。
在通过non-local message passing后,特征是在考虑整个图的关系上更新的。
selective view sampling (SVS)
- 使用Farthest Point Sampling (FPS)对 G j G^{j} Gj进行下采样
- 每个下采样后的节点 v i v_i vi的最近邻 V i j \mathbf{V}_{i}^{j} Vij中,使用view-selector选择softmax函数响应最大的节点
- 将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=1∑Mi=1∑Nj+1vs∈Vij∑Lselective (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-D 和 Scan-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

边栏推荐
- First Servlet
- 高斯消元 AcWing 883. 高斯消元解线性方程组
- Debug debugging - Visual Studio 2022
- 传统办公模式的“助推器”,搭建OA办公系统,原来就这么简单!
- <, < <,>, > > Introduction in shell
- 浅谈企业信息化建设
- LeetCode 515. Find the maximum value in each tree row
- 干货!零售业智能化管理会遇到哪些问题?看懂这篇文章就够了
- 低代码起势,这款信息管理系统开发神器,你值得拥有!
- On the difference and connection between find and select in TP5 framework
猜你喜欢
20220630学习打卡
MySQL three logs
LeetCode 871. Minimum refueling times
Memory search acwing 901 skiing
Concurrent programming (V) detailed explanation of atomic and unsafe magic classes
LeetCode 508. The most frequent subtree elements and
Markdown learning
樹形DP AcWing 285. 沒有上司的舞會
LeetCode 715. Range module
Binary tree traversal (first order traversal. Output results according to first order, middle order, and last order)
随机推荐
LeetCode 1089. Duplicate zero
Divide candy (circular queue)
Alibaba canal actual combat
PHP mnemonic code full text 400 words to extract the first letter of each Chinese character
Methods of using arrays as function parameters in shell
Binary tree traversal (first order traversal. Output results according to first order, middle order, and last order)
Gif remove blank frame frame number adjustment
22-06-28 西安 redis(02) 持久化机制、入门使用、事务控制、主从复制机制
The method for win10 system to enter the control panel is as follows:
网络安全必会的基础知识
Wonderful review | i/o extended 2022 activity dry goods sharing
How to place the parameters of the controller in the view after encountering the input textarea tag in the TP framework
树形DP AcWing 285. 没有上司的舞会
Log4j2 vulnerability recurrence and analysis
How to use Jupiter notebook
Markdown learning
求组合数 AcWing 886. 求组合数 II
Debug debugging - Visual Studio 2022
PHP uses foreach to get a value in a two-dimensional associative array (with instances)
Method of intercepting string in shell