我正在为点云创建一个基于图形的自动编码器。原始点云的形状是[3, 1024]
- 1024 个点,每个点有 3 个坐标
使用以下步骤将点云转换为无向图:
- 一个点变成了一个节点。
- 一个节点的特征是 3 个坐标
- 对于每个节点点,找到离它最近的 5 个节点点。它们由一条边连接
- 边的特征是它连接的两个节点之间的距离。
我使用 pytorch-geometric 来构建我的网络,并使用 pytorch3d [源] 的倒角距离作为损失函数。
我的网络架构如下:
编码器:GAT (3->16) -> GAT (16->24) -> GAT (24->36) -> shape([32*1024, 36])
解码器:GAT (36-> 24) -> GAT (24->16) -> GAT (16->3) -> shape([32*1024, 3])
所有这些层都接受节点特征和边缘特征。除此之外,我使用 Dropout 和 ReLU。
之后,我只得到原始图:[32, 1024, 3] 和预测图:[32, 1024, 3] 并将它们提供给 pytorch3d 的倒角损失。我得到了某种结果,但如果我将它们可视化,我可以看到网络没有学到任何东西。
问题是:由于我仅将节点的特征与倒角距离进行比较,网络是否甚至使用邻接矩阵和边的特征?我是否只需要进行一些微调,或者这个模型没有任何意义?
PS:在这一点上,我不关心架构或5个最近的邻居是否足够。