1,本文亮点
(1)建立了edge branch(边分支)为point branch提供该区域的上下文信息。
(2)设计了hierarchical graph 结构,使生成的信息从粗糙到细致
2,Overview 本文的结构与pointnet++相似,都是编码-解码的框架。Encodeing stage与pointnet++相似都是经过了sampleing,grouping 和pointnet,如如图(2)所示。经过编码阶段的下采样点云数目减少为N0,并且作为Decoding stage阶段的输入。解码阶段通过边特征与点特征的相互反馈,是提取的信息由粗糙到细致。其中,skip connetction作用是为了提供低阶信息。
边特征作用:provide extra contextual information(local intrisinc gemetric and regional semantic finformation) for point featurn learninng
3,模型详解
(1)Point Module
PointModule以上一层的point features和edge features作为输入,通过点云上采样(point featrue interpolation,点云特征插值)生成本层的特征。(上采样的作用是恢复点数,因为通过编码阶段的下采样点数减少所以在解码时要恢复点数,本人的理解)。
(2)Edge Branch
edge branch 简单的看就是不停的对边特征进行编码及上采样。那么编码是怎么进行的了,无非就是各种特征融合与MLP变换,例如,如下图所示,新边特征怎么来的了,根据两点的坐标差,两点的当前特征,做个MLP变换,然后结合旧边(上一层)特征,继续做个MLP变换。
上图左边是边模型的整体结构,右边是边的编码结构。边模型通过以上一层边特征和本层点特征为输入,通过图网络反应局部信息和边编码输出本层经过细化后的边特征。
(3)Hierarchical Graph Construction
论文中图的构建是分层的,是一个由粗糙到细致的过程,从而为点模型提高越来越精细的上下文特征信息。刚开时图是由编码阶段后点云的数量N0决定的。边E0是由每个点的k个最邻近点组成。
对于第L层的构建:由于point module经过上采样后点数目增多,那么构成的图对应点数目也增多,那么对应新增加点对应的边特征是怎么形成的呢?就是利用edge upsampling.
edge up-sampling的目标就是给上采样后的 新边 添加特征,其具体原理总结为一句话就是。
利用(连接边的)两点在当前层的邻居,互为旧层邻居的边特征(通俗的讲就是,我的邻居和你的邻居,如果在上层互为邻居,那么上层这条边就是我要用来计算新边特征的一条),做个线性插值。
但是既然这两点在旧层不存在,哪里会有什么共同邻居了,其实这两点本来是存在的,只是被采样了,我们现在只是再次把他放回去找共同邻居而已。
例如上图,i,j为经过点模型新增加的点,通过寻找i,j 的共同邻居来作为新增边的特征。图中第三副就是i,邻居点的特征边,第四幅图中红色的边就是两个点邻居共同拥有的边。