constructelligence commited on
Commit
228b94b
·
verified ·
1 Parent(s): 6cd00d1

Model card: correct evaluation attribution (hosted best.pt = facade checkpoint; C2-cal release candidate)

Browse files
Files changed (1) hide show
  1. README.md +57 -42
README.md CHANGED
@@ -30,30 +30,24 @@ model-index:
30
  results:
31
  - task:
32
  type: image-segmentation
33
- name: Wall / window / other semantic segmentation
34
  dataset:
35
- name: painting_vision held-out test split (136 images, 640 px)
36
  type: painting-vision-real-data
37
  split: test
38
  metrics:
39
  - type: mean_iou
40
- value: 0.8023
41
- name: mIoU (other/wall/window)
42
- - type: mean_iou
43
- value: 0.6981
44
- name: mIoU (full 10-class)
45
  - type: iou
46
- value: 0.8716
47
- name: wall IoU
48
  - type: iou
49
- value: 0.7166
50
- name: window IoU
51
- - type: precision
52
- value: 0.8343
53
- name: window precision
54
  - type: recall
55
- value: 0.8355
56
- name: window recall
57
  ---
58
 
59
  # Painting Vision Robotics Kit — robot-ready wall-paint coverage segmentation
@@ -69,9 +63,10 @@ live paint-progress grid*, independently cross-checked against depth/LiDAR.
69
  It is built for the hard part of construction robotics: knowing **exactly where
70
  the wall is, where the keep-outs are, and when the coat is complete**.
71
 
72
- > **Release:** SegFormer-B2 at 768 px (`best.pt`, `config.json`), trained with the open `train.py` on
73
- > session-separated real capture. The segmentation model, geometry planner, depth validator, safety gate and
74
- > dataset tooling ship together and are covered by the included test suite.
 
75
 
76
  ## The open tier of a larger model family
77
 
@@ -98,7 +93,8 @@ The kit is designed end-to-end around those questions.
98
  ## Capabilities
99
 
100
  ### 1. Ten-class semantic segmentation + substrate head
101
- The released model is **SegFormer-B2**; `models.py --arch` also builds MobileNetV3-Large and ResNet-50/101
 
102
  DeepLabV3 variants for smaller or larger compute budgets. A **ten-class semantic head** is paired with a
103
  **separate drywall-material head**, so paint state and substrate are predicted independently:
104
 
@@ -215,35 +211,54 @@ python3 depth_validation.py --depth depth.npy --intrinsics "fx,fy,cx,cy" \
215
 
216
  ## Evaluation
217
 
218
- Measured under a **frozen protocol** (`benchmark/SPEC.md`, v1.0) on a held-out `test` split of 136 real
219
- frames, pinned to a `dataset_id` and the checkpoint hash in `config.json`:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
 
221
- | Metric (test split) | Value |
 
 
 
 
222
  | --- | --- |
223
- | mIoU, other / wall / window | **0.802** |
224
- | wall / window / other IoU | 0.872 / 0.717 / 0.819 |
225
- | window precision / recall | 0.834 / 0.836 |
226
- | mIoU, full 10-class | **0.698** |
227
- | painted-coverage MAE | 0.162 |
228
-
229
- The all-`other` floor is mIoU 0.110. On the validation split, painted-coverage error is 7.5 points with a
230
- **false-complete rate of 0.0** — the model did not mark an unfinished wall as complete.
231
-
232
- **Generalisation to unseen photographs.** On 117 real photographs outside the training distribution, the wall
233
- is found in **117 / 117**. The substrate signals are less mature and are released as **experimental**: wallpaper
234
- precision 0.50 (22 positives); painted vs bare drywall separated correctly in 50% of cases raw, 65% after
235
- calibration; completion sign-off on bare drywall in 1 of 19 walls. These heads should inform, not decide, a
236
- robot's actions. Surface-condition assessment (peeling,
237
- rust) is not part of this release. `train.py` reports every metric family above on any dataset you supply.
238
 
239
  ## Intended use and limitations
240
 
241
- **Intended:** assistive perception and path planning for painting/finishing
242
- robots; dataset curation and annotation QA for construction vision.
243
 
244
  **Not intended:** unattended safety-critical control without calibrated geometry, clearance validation and a
245
- human-approved deployment; substrate or completion decisions from the experimental heads alone; judging
246
- *finish quality* (streaking, thin coat, runs) or surface condition, which are outside this release.
247
 
248
  RGB alone cannot always reveal what is under a smooth surface; the model scores
249
  drywall only where visible evidence supports it and uses `unknown` otherwise.
 
30
  results:
31
  - task:
32
  type: image-segmentation
33
+ name: Wall / window / other segmentation (hosted best.pt, real facades)
34
  dataset:
35
+ name: painting_vision held-out test split, real facade subset (76 images)
36
  type: painting-vision-real-data
37
  split: test
38
  metrics:
39
  - type: mean_iou
40
+ value: 0.7717
41
+ name: mIoU (other/wall/window, real facades)
 
 
 
42
  - type: iou
43
+ value: 0.838
44
+ name: wall_painted IoU (real facades)
45
  - type: iou
46
+ value: 0.642
47
+ name: window IoU (real facades)
 
 
 
48
  - type: recall
49
+ value: 0.861
50
+ name: window recall (real facades)
51
  ---
52
 
53
  # Painting Vision Robotics Kit — robot-ready wall-paint coverage segmentation
 
63
  It is built for the hard part of construction robotics: knowing **exactly where
64
  the wall is, where the keep-outs are, and when the coat is complete**.
65
 
66
+ > **Release:** `best.pt` is a SegFormer-B2 (768 px) **facade checkpoint** — walls, windows and paint coverage
67
+ > on real exteriors. The interior paint-state and substrate model (**C2-cal**) is in validation and reported
68
+ > below. The geometry planner, depth validator, safety gate and dataset tooling ship together and are covered
69
+ > by the included test suite.
70
 
71
  ## The open tier of a larger model family
72
 
 
93
  ## Capabilities
94
 
95
  ### 1. Ten-class semantic segmentation + substrate head
96
+ The model family is **SegFormer-B2** (the hosted `best.pt` is the facade checkpoint; interior classes are
97
+ C2's); `models.py --arch` also builds MobileNetV3-Large and ResNet-50/101
98
  DeepLabV3 variants for smaller or larger compute budgets. A **ten-class semantic head** is paired with a
99
  **separate drywall-material head**, so paint state and substrate are predicted independently:
100
 
 
211
 
212
  ## Evaluation
213
 
214
+ Frozen protocol (`benchmark/SPEC.md`, v1.0); every number is tied to one checkpoint.
215
+
216
+ | Checkpoint | In this repo | What it is |
217
+ | --- | --- | --- |
218
+ | `best.pt` (sha256 `3ef02176…`) | **yes** | SegFormer-B2, 768 px; semantic + material (drywall) heads; trained for exterior facades |
219
+ | `C2-cal` | release candidate | SegFormer-B2 lineage with wallpaper and condition heads, painted-wall hard negatives and reviewed real interiors; calibrated operating points |
220
+
221
+ ### This release: `best.pt` on real facades
222
+
223
+ Held-out real facade frames (76) from the 136-frame test split:
224
+
225
+ | Metric | Value |
226
+ | --- | --- |
227
+ | mIoU, other / wall / window | **0.772** |
228
+ | wall_painted IoU | **0.838** |
229
+ | window IoU · precision / recall | 0.642 · 0.717 / **0.861** |
230
+ | painted-coverage MAE | **0.114** |
231
+
232
+ **Scope.** `best.pt` is an exterior model. The other 60 frames of the split are synthetic interiors, where it
233
+ does not predict the interior classes (unpainted wall, skirting, doors, switches) and must not be used to sign
234
+ off paint: on the full 136-frame split its 10-class mIoU is 0.186 and it calls 81% of unfinished interior walls
235
+ complete. Interior work is what C2 is for.
236
+
237
+ ### Release candidate: C2-cal (not in this repo)
238
 
239
+ Same test split: 10-class mIoU **0.848**, painted-coverage MAE **0.088**. On real photographs it was never
240
+ trained on — two independently reviewed sets, with operating points fitted on set 1 and judged on held-out
241
+ set 2:
242
+
243
+ | Question (set 1 / held-out set 2) | C2-cal |
244
  | --- | --- |
245
+ | Finding the wall | 117 / 117 |
246
+ | Bare drywall signed off as finished | **0% / 0%** |
247
+ | Bare drywall found (recall) | 0.89 / 0.88 |
248
+ | Painted wall called bare board | 35% / 31% |
249
+ | Wallpaper, held-out precision / recall | 0.64 / 0.70 |
250
+ | Damage (peeling / rust) AUROC | 0.61 / 0.72 — surfaced as a proposal for a person to confirm |
251
+
252
+ `train.py` reports every metric family above on any dataset you supply.
 
 
 
 
 
 
 
253
 
254
  ## Intended use and limitations
255
 
256
+ **Intended:** with `best.pt`, assistive perception and path planning for exterior painting/finishing robots;
257
+ dataset curation and annotation QA for construction vision.
258
 
259
  **Not intended:** unattended safety-critical control without calibrated geometry, clearance validation and a
260
+ human-approved deployment; interior paint sign-off with `best.pt`; judging *finish quality* (streaking, thin
261
+ coat, runs).
262
 
263
  RGB alone cannot always reveal what is under a smooth surface; the model scores
264
  drywall only where visible evidence supports it and uses `unknown` otherwise.