[读论文]meshGPT

概述

  • 任务:无条件生成mesh (无颜色)
  • 数据集:shapenet v2
  • 方法:先trian一个auto encoder,用来获得code book;然后trian一个自回归的transformer
  • mesh表达:face序列。face按规定的顺序;每个face用三个顶点的坐标表示

Learning Quantized Triangle Embeddings (一个auto encoder)

[读论文]meshGPT_第1张图片

  • mesh表示为triangle face的序列。
    • triangle的顺序?作者直接按照Polygen来的:
    • 先排列vertex,再按vertex来排triangle
    • vertex是按zyx的顺序,从低到高排
    • triangle是从最low的vertex,次low的,最后到最high的vertex来排列。
  • face怎么表示呢?直接用3 vertices的9 coordinates 来表达一个face不太好;因此作者就这样:
    • 图卷积或的face feature vector
      • 用图来表达,图的节点是face,边是face的邻接关系
      • node features初始化为9个顶点的位置,face normal,edge between angles,area
      • 经过若干SAGEConv 层(也就是encoder E),得到每个face的feature vector Z
    • quantization: residual vector quantization (RQ)
      • 作者发现每个face只搞一个code效果不好。于是作者用stack of D codes per face。
      • 另外发现最好是按vertex来quantize
      • T = RQ (Z; C, D) , Z是刚才的face features,C是codebook, D是depth。 T就是得到的tokens。每个t就是一个codebook C里面的index,指向C里面的一个embedding e。(后面的transformer要用的就是这个e和codebook)
    • Decoder把face embeddings给decode成triangles
      • 先把D个features合成一个,方法是summation和concatenation
      • 用的是一个1D ResNet34 decoding head G,把刚才的这个code给decode成triangle序列,顺序就是刚才讲得顺序。每个face表示为9 coordinates。
        • 发现coordiantes预测为某些固定点的概率,会比直接回归坐标更准(图4)

[读论文]meshGPT_第2张图片

mesh generation with transformers

[读论文]meshGPT_第3张图片
像文字接龙的语言模型一样,自回归地训练transformer:

  • transformer训练时的输入,是刚才得到的e,(加上learned position encoding等);
  • 经过一个类似GPT的transformer,预测下一个token e在codebook中的index
  • 用交叉熵loss来train

得到mesh:

  • 接龙完成后(得到stop signal后),用刚才的resnet decoder G来得到mesh。
  • 用meshlab搞了一个后处理,来合并距离很近的点

训练时间

训练时间:
AutoEncoder用了2 A100, 2 days
transformer用了4 A100, 5 days

数据集:
ShapeNetV2, 所有55个categories来train GPT; 但在chair,table,bench和lamp这四个类别上finetune。

消融实验

[读论文]meshGPT_第4张图片

你可能感兴趣的:(AI,读论文,point,cloud,AIGC)