RandLA-Net中特征学习提取模块解析

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

RandLA-Net实现了两个核心指标:一个是利用Random_sampling进行提速,二是设计特征提取模块解决Random_sampling带来的信息丢失问题。

下图为特征提取模块示意图:由三个模块组成,分别为LocSE,Attentive Pooling,Dilated Residual Block
在这里插入图片描述

Local Spatial Encoding(局部空间编码)

给定点云P以及每个点的特征(例如原始RGB或中间学习的特征),此局部空间编码单元会明确嵌入所有相邻点的x-y-z坐标,从而使相应的点特征始终知道其相对位置空间位置。这使LocSE单元可以显式观察局部几何图案,有效地学习复杂的局部结构。特别地,该单元包括以下步骤:
在这里插入图片描述

Finding Neighbouring Points.

对于采样出的中心点,首先通过K近邻(KNN)算法收集其相邻点。

Relative Point Position Encoding

对于中心点的每个最近的K个点,我们明确编码相对点位置,如下所示:
在这里插入图片描述

  • 一二是点的xyz位置
  • ⊕是串联操作
  • || ·||计算相邻点和中心点之间的欧几里得距离。
  • ri 是根据冗余点位置信息进行编码的。这倾向于帮助网络学习局部特征并在实践中获得良好的性能。
Point Feature Augmentation.

对于每个相邻点 ,将编码的相对点位置与它的对应近邻点特征串联在一起,从而获得增强的特征向量。

LocSE代码解析

relative_pos_encoding函数

 def relative_pos_encoding(self, xyz, neigh_idx):
        neighbor_xyz = self.gather_neighbour(xyz, neigh_idx)
        xyz_tile = tf.tile(tf.expand_dims(xyz, axis=2), [1, 1, tf.shape(neigh_idx)[-1], 1])
        relative_xyz = xyz_tile - neighbor_xyz
        relative_dis = tf.sqrt(tf.reduce_sum(tf.square(relative_xyz), axis=-1, keepdims=True))
        relative_feature = tf.concat([relative_dis, relative_xyz, xyz_tile, neighbor_xyz], axis=-1)
        return relative_feature

neighbor_xyz为获取的中心点的K个近邻点的xyz坐标
xyz_tile将中心点xyz进行扩维,relative_xyz算出中心点与近邻点之间的相对位置
relative_dis为中心点与近邻点之间的欧式距离
relative_feature为将中心点,近邻点,相对位置,欧氏距离全部串联起来,即完成局部空间编码

Attentive Pooling

<

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值