From 385be2eca72eb3833efa4be0a0088b34e764788a Mon Sep 17 00:00:00 2001 From: shuishen <1109946754@qq.com> Date: Mon, 31 Aug 2026 09:04:45 +0800 Subject: [PATCH] feat(pointcloud): complete annotation and result lifecycle workflows --- apps/workbench-console/README.md | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 105 insertions(+), 11 deletions(-) diff --git a/apps/workbench-console/README.md b/apps/workbench-console/README.md index 5cf5c6f..f77753d 100644 --- a/apps/workbench-console/README.md +++ b/apps/workbench-console/README.md @@ -38,15 +38,22 @@ Vite 开发服务固定使用 `http://127.0.0.1:6174/apps/workbench-console/`,会通过本机代理读取 `6173` 的结果工件。 -## GPU execution +## CPU and GPU execution -Object detection and ChangeStar change detection retain their CPU environments -and add separately verified CUDA environments. The server probes only the fixed -`01-object-detection-cuda` or `00-change-detection-cuda` interpreter before a -run; a successful probe selects CUDA, otherwise the corresponding fixed CPU -interpreter is used. User requests cannot supply an interpreter, device path, -or command. Each capability writes the requested and actual device to its run -metadata. This console remains loopback-only and independent of drone products. +Object detection, ChangeStar change detection, and point-cloud supervised +training/inference expose `auto`, `cpu`, and `cuda` choices. The local service +always invokes only fixed allowlisted virtual environments. `auto` probes the +capability's fixed CUDA interpreter, chooses it only when PyTorch confirms CUDA, +and otherwise uses its retained CPU environment. `cpu` does not probe the GPU. +`cuda` fails explicitly when the probe fails; it never silently becomes a CPU +run. New `run_metadata.json` files record requested/actual device, environment, +PyTorch version, fallback state, and fallback reason. Photo 3D reconstruction, +point-cloud geometry, semantic rule classification, file conversion, exports, +and the console itself remain CPU workflows. The current photo-MVS CUDA tools +are not validated and are not exposed as a console option. + +User requests cannot supply an interpreter, device path, or command. This +console remains loopback-only and independent of drone products. ## 地图底图 @@ -127,7 +134,7 @@ rendered as DSM or GeoJSON without valid georeferencing. The top-level `05-3d-pointcloud` workflow switch keeps incompatible inputs -separate. `照片三维重建` accepts 3-30 JPG/JPEG files from one coherent camera +separate. `照片三维重建` accepts 3-1000 JPG/JPEG files from one coherent camera sequence through bounded binary uploads, preserves the raw bytes, then runs a background CPU SfM/MVS job and polls `queued`, `sparse_sfm`, `dense_mvs`, `complete`, or `failed` status. Its GPS/RTK-prior option uses the verified @@ -137,6 +144,16 @@ GeoAI footprint vector workflow. Creating a run or discovering a new case does not require rebuilding the frontend; `npm run build` is only required after changing the Vue/TypeScript console source. + +The reconstruction job response also reports actual completed workflow +milestones from its fixed scripts: feature extraction, matching, sparse mapping, +RGB preparation, undistortion, dense fusion, meshing, texture export, and final +artifact packaging. The displayed percentage is a weighted stage milestone, not +a remaining-time estimate: COLMAP and OpenMVS do not expose reliable live +sub-stage percentages. + +The fixed CPU photo-reconstruction timeout is 24 hours for large sequences. It +is a hard safety limit, not a predicted completion time. The same workspace also exposes point-cloud semantic classification: PLY/PCD/XYZ/LAS/LAZ files are sent through bounded binary streaming, retained @@ -148,9 +165,32 @@ also expose an action that classifies only their fixed local `dense.ply`; the server never accepts a browser-supplied path. -Semantic cases with a generated RGB annotation source provide a separate manual -annotation and supervised-training area. Brush and rectangle selections become +Semantic cases with a generated RGB annotation source, plus complete +`multiview-feature-*` directories whose ordered original-RGB PLY/NPZ checksum +contract passes, provide a separate manual annotation and supervised-training +area. The fusion source is labelled as a photo-feature review sample and is not +fed into the existing PointNet-style trainer as if it were Point Transformer V3. +After sufficient reviewed labels, its `多视角特征训练` action uses a separate +CPU/CUDA local-attention baseline over the fixed same-order feature NPZ. It +requires each reviewed class to span XY training, validation, and test blocks. +This is not the uninstalled official Pointcept/Point Transformer V3 stack and +is not exposed in the generic arbitrary-cloud model-application workflow. +Brush and rectangle selections become separate annotation revisions rather than altering source clouds or rule results. +The annotation workspace can also add an independent local PLY/PCD/XYZ/LAS/LAZ +source through its bounded binary upload route. The server preserves its raw +bytes, starts a background CPU preview job, and adds the derived RGB/XYZ preview +to the source list only after successful processing. The taxonomy is local +annotation metadata: users can add a Chinese label, lowercase English key and +RGB colour, and the server assigns an unused LAS-compatible code. Saved +revisions snapshot their class metadata; a custom class referenced by a saved +revision cannot be deleted. These controls do not manufacture semantic truth or +replace reviewed labels required for supervised training. +For a source that is no longer needed, **Remove complete data chain** first +fetches a server-calculated deletion plan, then requires an irreversible +confirmation. It removes only fixed local point-cloud raw/processed/output +directories plus discovered annotation, training, and inference dependents. +`baseData` and external source inputs are excluded from every removal plan. The annotation point viewer uses sRGB-correct anti-aliased circular points. Browse mode keeps left-drag rotation; brush/rectangle mode reserves left-drag for labels, with right-drag rotation, middle-drag panning and wheel zoom. @@ -161,6 +201,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. +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. + +Sparse point-cloud, semantic-classification, supervised-prediction, and mesh +previews use the same viewer controls: local X/Y/Z orientation, click-to-set +orbit centre, top-down view, and reset. These controls only transform the +centred display wrapper; source PLY/GLB files and downloadable outputs remain +unchanged. An incorrect revision can be removed after confirmation, but the endpoint only removes that revision directory and cannot remove LAS/PLY sources, semantic results, or training outputs. A local training job requires two classes with at @@ -184,6 +244,13 @@ candidate, especially for the current pole/tower class, not asset inventory or an inspection conclusion. +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 +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: @@ -202,3 +269,30 @@ families, but the pages never render the unrelated result bands together. The model workspace deliberately uses its generated annotation sources and trained models rather than a general case library. + +## Result removal + +Every connected capability case library provides a complete-result removal +control. It first reads a server-calculated deletion plan, then requires a +second irreversible confirmation. A removable console run is restricted to the +fixed `shared/outputs/<capability>/runs/<run-id>/` layout and removes only that +output, its console-upload raw copy, processed copy, and known dependent +artifacts. `baseData`, external source inputs, sibling runs, and project +baseline/validation cases are never removed. Baseline and validation cases show +their protected status instead of accepting deletion. + +The point-cloud training-model selector has a separate removal control. It +removes the selected locally trained model plus its discovered inference and +automatic-annotation outputs, while preserving annotation revisions, `baseData`, +and external input files. + +## Maintenance conventions + +Run `npm run build` after changing Vue, TypeScript, CSS, or build-time client +configuration. A new result, a data-processing run, or a server-only API change +does not require a frontend rebuild. + +The local console is not visually inspected through browser automation. For a +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. -- Gitblit v1.9.3