Octree Transformer读书笔记

任务

用自回归的方式来生成三维形状(3D Shape)。

问题

(1)怎么压缩数据(在分辨率较高的时候会造成内存开销过大)

(2)如何以自回归的方式生成结果

方法

整个过程分为三个阶段,(1)输入一个八叉树序列。(2)将其压缩为一个短的序列。(3)训练一个标准的transformer解码器。当完成训练以后,可以利用transformer生成一个序列向量,并且解压解码。

序列化的八叉树

首先对一个体素化的shape,用一个包围盒(bounding cube)将其围住,并对其进行细分,每一次都划分8个小的cubes。当一个cube里面,全部为空时,就停止划分。重复以上过程,直到达到体素的分辨率为止。下一步,需要将这个结果序列化为一系列连续的token。

 作者以广度优先的方式,遍历八叉树,从而能够得到一个序列化的数据(对于每个cell,作者用1代表空,用2代表混合,用3代表全满)。在这里,作者增加了一种空间的编码方式,用来替代1维的位置编码,用到这种特殊的transformer中。如上图左边的图所示,在Y轴上按照分辨率进行了编码。在每一个坐标轴上,作者都进行了这一个操作。因此,对于每一个cell,就得到了4个不同的ID:v(c), px(c), py(c), pz(c)。v(c)代表一个cell本身的值,px(c)等代表在不同的坐标轴上对shape进行编码后得到的值。

【注】这种编码方式并不需要从生成模型中获取,可以直接基于他们自己的值进行推断。这种空间位置的编码方式来替代原来的PE是值得学习的点。

序列压缩

简单的将体素做一维的展开会带来极大的运算开销,因此作者对分层的八叉树做了特殊的展开。作者在压缩时,考虑了两个原则,首先,对于所有的cell,并不是公平考虑的,应该重点考虑细节上的cell。此外,应该空间上更接近的而不是序列上更接近的单元压缩在一起。

解码

解码的过程非常重要,首先,需要生成压缩的单元信息,其次,需要从生成的信息进行解压缩的操作。解压缩的过程,只利用简单的上采样是不够的,这会丧失自编码的属性。因此,作者首先对于一系列压缩的token,首先进行反卷积,得到上采样的结果,之后需要计算依赖关系。

思索

文章的idea不错,空间编码替代常规的PE非常的新颖,但是个人任务论文对于解码等很多细节的描述并不完善,导致无法进一步研究,论文也没有开源,进一步增加了研究的难度

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值