shuishen
23 hours ago 8f75db57f3055b2a3575c86ee3e6acf1dd56ce47
apps/workbench-console/README.md
@@ -118,6 +118,15 @@
run metadata. It remains independent of all drone products and is local-only on
`6xxx` loopback ports.
The point-cloud workflow also exposes read-only `GET /api/3d-pointcloud/tasks`
and `GET /api/3d-pointcloud/artifact-health`. Annotation-source preparation,
training, model inference, and automatic annotation write console-owned task
snapshots under `shared/outputs/05-3d-pointcloud/task-state/`. A local service
restart changes queued/running snapshots to `interrupted`, preserving inputs and
artifacts without claiming an in-memory worker continued. The task centre polls
active work, while artifact health strictly and read-only validates expected
model, inference, automatic-annotation, and annotation-revision artifacts.
The same case library also discovers completed photo-SfM and CPU-MVS result
directories. Sparse SfM cases use an interactive `THREE.Points` vertex viewer
with registration statistics, local poses and input manifest; vertices are never
@@ -201,20 +210,26 @@
display rotations about the model centre. It never changes the original point
cloud or stored annotation indices; picking and rectangle selection follow the
currently displayed orientation.
The viewer loads and renders every point contained in the selected annotation
source directly. It does not switch to a zoom-dependent local detail layer, and
point indices stay stable for browsing, manual labels, saved revisions, and
training. Large sources consume correspondingly more browser memory and GPU
resources.
The viewer keeps the overview point order and annotation indices stable for
browsing, manual labels, saved revisions, and training. Its optional local
detail layer is view-only; it never changes the labels or index contract. Large
PLY decoding yields to browser frames every 200,000 points and uses a lower
pixel-ratio cap to reduce GPU pressure. Undo, redo, and keyboard undo/redo are
available without altering source point positions.
New annotation PLY/PCD/XYZ/LAS/LAZ uploads run a dedicated preview-only CPU
step. It preserves every readable finite XYZ and available vertex RGB point
and does not run the DSM, raster/vector, mesh, or rule-semantic pipeline. A
source without vertex RGB remains viewable with a neutral preview but cannot be
sent to the current RGB semantic-model trainer.
Textured-mesh ZIP bundles are prepared separately: the PLY's face UVs and its
referenced JPG/PNG tiles are baked into sampled face-centre RGB/XYZ points. A
small visual-validation source is exposed in the normal annotation-source list
before a larger training source is materialized.
The same Add annotation source modal now has a **Textured mesh** mode for one
binary little-endian PLY that declares face UVs and `TextureFile` image tiles,
plus all matching JPG/PNG tiles selected from the exported folder. The console
checks every declared image basename against the selected files, preserves raw
bytes, creates an internal processed ZIP, and runs the fixed CPU texture baker.
The resulting sampled face-centre RGB/XYZ PLY appears in the normal annotation
source list and can enter the existing review/training workflow. It is not a
path for ordinary photos or a claim of semantic ground truth; `.frag` files are
not required for the validated PLY + JPG/PNG contract.
Sparse point-cloud, semantic-classification, supervised-prediction, and mesh
previews use the same viewer controls: local X/Y/Z orientation, click-to-set
@@ -244,27 +259,50 @@
candidate, especially for the current pole/tower class, not asset inventory or
an inspection conclusion.
For ordinary RGB/XYZ annotation sources, the same workspace provides a
**concentrated training dataset** selector. It accepts one saved immutable
revision from each of two to 24 different sources, checks source and revision
integrity on the server, maps classes by their stable English keys, and starts a
single fixed-environment CPU/GPU job. One source cannot contribute two versions
to the same dataset. Each source is split independently into local XY
train/validation/test blocks before aggregation; all selected classes must
appear across every aggregate split and still total at least 500 confirmed
points. Multi-view photo-feature revisions remain single-source and cannot be
mixed with RGB/XYZ revisions. The resulting model directory contains
`training_dataset.json` and `metrics.json` provenance for every selected source;
the prediction preview shows only the first selected local-coordinate source.
For an already selected annotation source, **Automatic annotation current
source** uses the selected local model without a second upload. Its asynchronous
candidate artifact records source/model checksums, class predictions, and
per-point confidence after a user-selected threshold. The completed run exposes an in-console, class-coloured prediction preview and predicted/high-confidence per-class counts for review. Brush/rectangle review can reject candidates or correct their classes, saving an independent correction draft. It remains separate from
per-point confidence after a user-selected threshold. The completed run exposes an in-console, class-coloured prediction preview and predicted/high-confidence per-class counts for review. A visible **Reject candidates** control selects exclusion mode for brush/rectangle review; selecting another class corrects candidate classes. The toolbar reports rejected and reclassified counts, and **Save candidate corrections** stores an independent correction draft. It remains separate from
human truth until **Confirm merge candidates** is pressed; the merge applies candidates, review corrections, then existing human labels as the highest priority, and creates a new annotation revision for
the next training cycle.
The 3D point-cloud capability is presented as four focused workspaces rather
than one long mixed result page:
The 3D point-cloud capability is presented through three focused top-level
workspaces rather than one long mixed result page:
1. **Photo 3D reconstruction**: JPG/JPEG input, sparse/dense reconstruction,
   mesh, texture, and photo-reconstruction cases only.
2. **Point-cloud geometry processing**: PLY/PCD/XYZ/LAS/LAZ input, DSM,
   elevated-surface raster/vector, approximate mesh, and geometry downloads.
3. **Point-cloud semantic classification**: classification cases, coloured
   point preview, semantic LAS/CSV/GeoJSON and review-only rule outputs.
4. **Annotation, training, and model application**: RGB annotation source,
   annotation revisions, automatic GPU/CPU training, training metrics, and applying a trained
   model to a new RGB cloud.
3. **Point-cloud semantic classification**: one business entry with a
   left-side secondary navigation: **Semantic classification**, **Annotation
   workbench**, **Automatic-annotation review**, **Training dataset**, **Model
   centre**, and **Tasks and records**. Semantic classification offers a
   **Rule screening** route for rapid CPU candidates and a **Trained model**
   route for completed supervised models. Both create discoverable semantic
   cases, coloured point previews and downloadable classification artifacts;
   all output remains subject to human review and feedback into annotation. A
   completed trained-model result prepares a complete observed-RGB/XYZ
   `human-review-source.ply` and offers **Start human review** for correction
   and a new immutable revision. Annotation, automatic-review correction,
   concentrated training, model application, durable task status, and artifact
   health are intentionally separate steps in this secondary navigation. The
   classified LAS remains available for download and is never parsed by the
   PLY annotation viewer.
Each workspace filters the case library to its own purpose. A point-cloud run
Each top-level workspace filters the case library to its own purpose. A point-cloud run
may appear in both geometry and semantic workspaces because it has both output
families, but the pages never render the unrelated result bands together. The
model workspace deliberately uses its generated annotation sources and trained
@@ -296,3 +334,20 @@
visual UI, map, image, or 3D acceptance check, the requested interaction is
specified to the user and the user provides the screenshot; build, HTTP,
artifact, and automated checks remain independent evidence.
### Point-cloud annotation display colours
The **Manage label classes** dialog separates class creation from existing
classes and lets users adjust the display colour of any class, including a
built-in class. This updates only the local workbench taxonomy colour. It does
not change a class code, stable English key, saved annotation point indices,
saved annotation schema, model weights, model metrics, or historical prediction
artefacts. Built-in classes remain non-removable; a custom class used by a saved
revision remains non-removable.
New trained-model and automatic-annotation preview PLYs also carry an explicit
LAS-compatible `classification` vertex property. Review resolves that stable
property first and uses the current taxonomy only for display, so later colour
changes cannot reinterpret automatic-annotation candidates. Older preview files
without that property use their immutable inference-metadata colour snapshot
for compatibility, not the current editable display colour.