shuishen
8 hours ago 385be2eca72eb3833efa4be0a0088b34e764788a
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.