Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: cc-by-4.0
|
| 3 |
+
tags:
|
| 4 |
+
- mesh-segmentation
|
| 5 |
+
- part-segmentation
|
| 6 |
+
- point-cloud
|
| 7 |
+
- building
|
| 8 |
+
- architecture
|
| 9 |
+
- onnx
|
| 10 |
+
- 3d
|
| 11 |
+
- qtmesheditor
|
| 12 |
+
library_name: onnx
|
| 13 |
+
pipeline_tag: other
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
# QtMeshEditor — Building Part Segmentation
|
| 17 |
+
|
| 18 |
+
A point-cloud part-segmentation network (PointNet++-style) that labels each
|
| 19 |
+
point of a **building** mesh as `wall`, `roof`, `window`, `door`, `chimney`,
|
| 20 |
+
or `foundation`, exported to **ONNX** for local inference via ONNX Runtime.
|
| 21 |
+
|
| 22 |
+
One of the category-specialised segmentation models built for
|
| 23 |
+
**[QtMeshEditor](https://github.com/fernandotonon/QtMeshEditor)** (epic #818,
|
| 24 |
+
Track B2) — a free, open-source 3D mesh & animation editor. The app
|
| 25 |
+
auto-detects the mesh category with a companion
|
| 26 |
+
[point-cloud classifier](https://huggingface.co/fernandotonon/QtMeshEditor-mesh-segmentation-category)
|
| 27 |
+
and dispatches to this model for buildings; siblings:
|
| 28 |
+
[body](https://huggingface.co/fernandotonon/QtMeshEditor-mesh-segmentation),
|
| 29 |
+
[vegetation](https://huggingface.co/fernandotonon/QtMeshEditor-mesh-segmentation-vegetation),
|
| 30 |
+
[vehicle](https://huggingface.co/fernandotonon/QtMeshEditor-mesh-segmentation-vehicle).
|
| 31 |
+
Aggregate download source used by the app:
|
| 32 |
+
[QtMeshEditor-models](https://huggingface.co/fernandotonon/QtMeshEditor-models)
|
| 33 |
+
(`segment/meshseg_building.onnx`).
|
| 34 |
+
|
| 35 |
+
## Model
|
| 36 |
+
|
| 37 |
+
- **Input:** a sampled point cloud `float32 [1, N, 3]` (normalised to a centred
|
| 38 |
+
unit box; +Y up).
|
| 39 |
+
- **Output:** per-point class logits over 7 channels
|
| 40 |
+
(`unknown, wall, roof, window, door, chimney, foundation`); argmax → label,
|
| 41 |
+
scattered back to mesh vertices/faces by nearest sampled point.
|
| 42 |
+
- **Architecture:** shared per-point MLP + two kNN local-aggregation blocks
|
| 43 |
+
(in-graph `cdist`+`topk`, ONNX-exportable) + a global max-pooled feature;
|
| 44 |
+
~0.78 MB. Trained at the app's inference sample size (4096 points).
|
| 45 |
+
|
| 46 |
+
## Training data & license
|
| 47 |
+
|
| 48 |
+
Trained **from scratch, 100% on procedurally generated synthetic buildings we
|
| 49 |
+
own** (no third-party data at all): parametric houses / towers / huts with
|
| 50 |
+
gable, pyramid, and flat roofs (triangle/quad surface patches), proud window
|
| 51 |
+
panes in rows, doors, chimneys, and foundation slabs — labels are exact by
|
| 52 |
+
construction. Weights released under **CC-BY-4.0**; please credit
|
| 53 |
+
*QtMeshEditor*.
|
| 54 |
+
|
| 55 |
+
## Evaluation
|
| 56 |
+
|
| 57 |
+
- Held-out synthetic validation accuracy: **86.9%** (per-point, unknown
|
| 58 |
+
masked). Real-world CC0 building kits are the planned next data slice
|
| 59 |
+
(mined via submesh/material-name labels).
|
| 60 |
+
|
| 61 |
+
## Reproducing
|
| 62 |
+
|
| 63 |
+
`scripts/export-meshseg-onnx.py --category building` in the QtMeshEditor repo
|
| 64 |
+
(one-time, offline; the app never runs Python). Strategy + roadmap:
|
| 65 |
+
`docs/MESH_SEGMENTATION_STRATEGY.md`.
|
| 66 |
+
|
| 67 |
+
## Versions
|
| 68 |
+
|
| 69 |
+
- **v1.0.0** (current) — initial synthetic-only release (#818 Track B2).
|