GeoTransformer关于torch.einsum()操作的记录

GeoTransformer中最核心的集合位置编码部分,有一个维度的问题之前一直没有搞清楚,下面举例来说明:
源点云的点特征:(B,N,256)。 源点云的几何位置编码:(B,N, N, 256)
目标点云的点特征:(B,M,256)。 目标点云的几何位置编码:(B,M, M, 256)

接下来是Attention计算步骤:
(1)首先进行特征映射。
点特征过MLP映射为 Q、K、V,维度为(B,N,256)
QKV进行4head划分,上面特征rearrange为:(B,4,N,64)

同样地,几何位置编码:(B,N, N, 256)经过MLP,然后化为4个头 :(B,4,N, N, 64)

(2)接着就是注意力矩阵

毫无疑问的是:用Q(B,4,N,64)和 K(B,4,N,64)进行einsum。

torch.einsum('bhnc,bhmc->bhnm', Q, K)

这一步能够看懂,并且理解,就是算两个点特征之间的点积相似度。

接着,用Q(B,4,N,64)和 几何位置编码(B,4,N, N, 64)进行einsum

torch.einsum('bhnc,bhnmc->bhnm', Q, P)

这一步怎么理解呢,其实它的计算步骤可以简化为:

torch.einsum('nc,nmc->nm', Q, P)

也就可以理解为,对于N个256维度的特征中的每一个256。 都要和M个256进行比较,然后形成M个相似度分数。
最终一共有N x M个相似度分数。

从几何意义上来看,这里一边是某个点P,经过KPConv卷积出来的256维度特征,另一边呢,是这个点P和本点云上所有其他点所形成的256维的几何编码,这个编码也是通过点P和其他点连线,与,其他点的邻域连线,的夹角,来确定的。

似乎无法直观地明白这种相似性的意义,算一个 网络学的几何特征, 和 , 手工建立的这种特征,的相似性。实在令人费解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值