polygnn
基于多面体图神经网络的点云三维建筑重建,ISPRS 2024 顶会论文开源实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于多面体图神经网络的点云三维建筑重建,ISPRS 2024 顶会论文开源实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:无人机掠过城市上空,激光扫描仪记录下数百万个密集的三维坐标点——这些「点云」数据忠实地记录了建筑物的每一面墙、每一个屋顶的形状。然而,让计算机自动「读懂」这些离散点,恢复出精确的三维建筑模型,长期以来是计算机视觉领域的难题。传统方法要么计算量过大难以扩展,要么重建精度不足、细节丢失。
PolyGNN(Polyhedron-based Graph Neural Network)给出了一个新的答案——它发表于遥感领域顶级期刊 ISPRS Journal of Photogrammetry and Remote Sensing 2024,将图神经网络与多面体几何建模相结合,实现了从点云到三维建筑模型的高效、自动、准确重建。
图1:PolyGNN 整体架构图
三维建筑重建(3D Building Reconstruction)是数字城市、数字孪生、自动驾驶高精度地图等应用的基础支撑技术。输入数据通常是 LiDAR 或 Photogrammetry 产生的三维点云,每个点仅包含空间坐标 (x, y, z) 和可选的颜色信息。 传统的重建方法分为两类:一类是基于体素(Voxel)的方法,将三维空间划分为规则网格,计算量大、内存消耗高,难以处理大规模场景;另一类是基于网格的方法,需要先生成初始曲面再优化,容易丢失建筑特有的几何结构。 PolyGNN 的核心洞察是:建筑物的组成单元天然是多面体——墙体是矩形、屋顶是坡面、楼板是平面。Chen Zhaiyu 等作者提出将点云区域建模为凸多面体单元集合(图中的 Cell Complex),然后用图神经网络在多面体图结构上学习每个单元是否属于建筑表面,从而实现端到端的建筑重建。
PolyGNN 的网络架构包含三个核心组件: ① 编码器(Encoder):将原始点云编码为紧凑的潜在特征向量。项目支持多种编码器 Backbone:
项目提供了完整的训练-测试-重建流程:
python download.py dataset=mini — 自动从 Google Drive 下载慕尼黑建筑数据集的 mini 版本(约 200 个样本,~0.07% 完整数据集)python train.py dataset=mini — 分布式数据并行训练(DDP),支持 WandB 实验追踪和梯度冻结微调python test.py dataset=mini evaluate.save=true — 在测试集上评估,准确率通过 torchmetrics 自动计算python reconstruct.py dataset=mini reconstruct.type=mesh — 将预测的多面体标签转换为可导出 OBJ 网格文件python remap.py dataset=mini — 将重建网格映射回原始坐标系(CRS),生成统计报告
配置管理基于 Hydra,支持参数覆盖:python train.py dataset=mini encoder=PointNet gnn=GCN。完整慕尼黑数据集(332GB)托管在 Zenodo。| 组件 | 技术选型 |
|---|---|
| 深度学习框架 | PyTorch + PyTorch Geometric 2.3 |
| 图神经网络 | GCN / TAGCN / TransformerGCN |
| 点云处理 | PointNet++ / ConvONet / PointTransformer |
| 配置管理 | Hydra + OmegaConf |
| 实验追踪 | Weights & Biases (WandB) |
| 几何处理 | abspy(作者自研)、trimesh、rtree |
| 训练策略 | DDP 分布式训练、梯度编译(torch_geometric.compile)、CyclicLR 调度器 |
PolyGNN 是一款重型科研工具,部署门槛相当高:
environment.yml 一键创建 conda 环境,以及 mini 数据集(约 500MB)和预训练权重,适合学习和小规模验证。值得关注的优势:
作为 ISPRS 2024 论文的官方开源实现,PolyGNN 代表了三维重建从「几何驱动」向「学习驱动」演进的趋势。它证明通过图结构建模建筑单元之间的空间关系,可以更高效地重建复杂建筑几何。随着数字孪生城市建设的加速,这类工具在城市规划、BIM 建模、历史建筑保护等领域具有广阔的应用前景。
PolyGNN 由 Chen Zhaiyu 等研究者开发,项目托管于 GitHub,数据集发布于 Zenodo。