3D 稀疏模式重建¶
在此页面中,我们将介绍一个简单的演示示例,该示例训练一个 3D 卷积神经网络,该网络从 one-hot 向量重建 3D 稀疏模式。 这类似于 Octree Generating Networks, ICCV’17。 输入的 one-hot 向量指示 ModelNet40 数据集中的 3D 计算机辅助设计 (CAD) 椅子索引。
我们使用 MinkowskiEngine.MinkowskiConvolutionTranspose
以及 MinkowskiEngine.MinkowskiPruning
逐步地将体素上采样 2 倍,然后删除一些上采样的体素以生成目标形状。 一般网络架构看起来类似于下图,但细节可能有所不同。

在我们继续之前,请先阅读 训练和数据加载教程。
构建稀疏模式重建网络¶
要从向量创建在 3D 网格世界中定义的稀疏张量,我们需要从 \(1 \times 1 \times 1\) 分辨率体素中逐步上采样。 在这里,我们使用一个块,该块由 MinkowskiEngine.MinkowskiConvolutionTranspose
、MinkowskiEngine.MinkowskiConvolution
和 MinkowskiEngine.MinkowskiPruning
组成。
在前向传播期间,我们为 1) 主要特征和 2) 稀疏体素分类创建两条路径,以删除不必要的体素。
out = upsample_block(z)
out_cls = classification(out).F
out = pruning(out, out_cls > 0)
在输入稀疏张量达到目标分辨率之前,网络会重复一系列上采样和剪枝,以删除不必要的体素。 我们在下图中可视化结果。 请注意,最终的重建非常准确地捕获了目标几何。 我们还可视化了上采样和剪枝的分层重建过程。

运行示例¶
要训练网络,请转到 Minkowski Engine 根目录,然后键入
python -m examples.reconstruction --train
要可视化网络预测,或尝试预训练模型,请键入
python -m examples.reconstruction

该程序将可视化两个 3D 形状。 左边一个是目标 3D 形状,右边一个是重建的网络预测。
整个代码可以在 example/reconstruction.py 中找到。