Image Segmentation
PyTorch
English
painting-vision-robotics-kit
semantic-segmentation
robotics
edge-ai
construction-ai
autonomous-painting
wall-painting-robot
paint-coverage-estimation
building-facade
drywall
skirting-detection
window-detection
lidar
depth-validation
segformer
deeplabv3
Eval Results (legacy)
Model card: correct evaluation attribution (hosted best.pt = facade checkpoint; C2-cal release candidate)
Browse files
README.md
CHANGED
|
@@ -30,30 +30,24 @@ model-index:
|
|
| 30 |
results:
|
| 31 |
- task:
|
| 32 |
type: image-segmentation
|
| 33 |
-
name: Wall / window / other
|
| 34 |
dataset:
|
| 35 |
-
name: painting_vision held-out test split
|
| 36 |
type: painting-vision-real-data
|
| 37 |
split: test
|
| 38 |
metrics:
|
| 39 |
- type: mean_iou
|
| 40 |
-
value: 0.
|
| 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.
|
| 47 |
-
name:
|
| 48 |
- type: iou
|
| 49 |
-
value: 0.
|
| 50 |
-
name: window IoU
|
| 51 |
-
- type: precision
|
| 52 |
-
value: 0.8343
|
| 53 |
-
name: window precision
|
| 54 |
- type: recall
|
| 55 |
-
value: 0.
|
| 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
|
| 73 |
-
>
|
| 74 |
-
> dataset tooling ship together and are covered
|
|
|
|
| 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
|
|
|
|
| 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 |
-
|
| 219 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 220 |
|
| 221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 222 |
| --- | --- |
|
| 223 |
-
|
|
| 224 |
-
|
|
| 225 |
-
|
|
| 226 |
-
|
|
| 227 |
-
|
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 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 |
-
|
| 243 |
|
| 244 |
**Not intended:** unattended safety-critical control without calibrated geometry, clearance validation and a
|
| 245 |
-
human-approved deployment;
|
| 246 |
-
|
| 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.
|