constructelligence commited on
Commit
79ba558
·
verified ·
1 Parent(s): 7b63b24

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +54 -7
README.md CHANGED
@@ -8,6 +8,7 @@ tags:
8
  - image-segmentation
9
  - semantic-segmentation
10
  - robotics
 
11
  - construction-ai
12
  - autonomous-painting
13
  - wall-painting-robot
@@ -25,15 +26,15 @@ metrics:
25
  - mean-iou
26
  - iou
27
  model-index:
28
- - name: painting-vision
29
  results: []
30
  ---
31
 
32
- # Painting Vision — robot-ready wall-paint coverage segmentation
33
 
34
- **A frontier research preview for autonomous painting and surface-finishing robots: from pixels to an executable paint plan.**
35
 
36
- Painting Vision reads a single camera frame of a wall and returns far more than
37
  a mask. It segments the paintable surface, the fixtures and openings that must
38
  not be painted, and the substrate — then hands a downstream planner a *wall
39
  boundary, corners, a two-tool stroke plan, machine-readable waypoints, and a
@@ -47,6 +48,24 @@ the wall is, where the keep-outs are, and when the coat is complete**.
47
  > model weights are trained by the open `train.py` in this repo on
48
  > session-separated, real capture data.
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  ---
51
 
52
  ## Why this model exists
@@ -60,7 +79,7 @@ to know:
60
  - the **substrate** (e.g. drywall) so paint behaviour is not confused with surface type;
61
  - **remaining coverage** across repeated observations, so the robot knows when to stop.
62
 
63
- Painting Vision is designed end-to-end around those questions.
64
 
65
  ## Capabilities
66
 
@@ -109,6 +128,32 @@ wall/session leakage and thin classes, and recommend exactly how many more
109
  samples each gap needs. `train.py` supports class-, wall- and hybrid-balanced
110
  sampling so the balanced collection survives into the optimizer.
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  ## Quickstart
113
 
114
  ```sh
@@ -138,7 +183,9 @@ python3 depth_validate.py --depth depth.npy --intrinsics "fx,fy,cx,cy" \
138
  | --- | --- |
139
  | `models.py` | architecture factory: DeepLabV3 (MobileNet/ResNet) + SegFormer, semantic + drywall heads |
140
  | `train.py` | training, balanced sampling, window loss boost, boundary/coverage metrics |
141
- | `predict.py` | inference: masks, coverage, geometry, regularised windows |
 
 
142
  | `robot_planner.py` | boundary/corners, two-tool stroke plan, waypoints, progress state |
143
  | `window_postprocess.py` | fragment merge + oriented rectangle fitting for windows |
144
  | `depth_validation.py` | LiDAR/depth plane fit, protrusion/recess checks, metric scale |
@@ -182,7 +229,7 @@ Always validate on held-out physical walls with the production camera.
182
 
183
  ```bibtex
184
  @misc{constructelligence_painting_vision,
185
- title = {Painting Vision: robot-ready wall-paint coverage segmentation},
186
  author = {Constructelligence},
187
  year = {2026},
188
  note = {Research preview}
 
8
  - image-segmentation
9
  - semantic-segmentation
10
  - robotics
11
+ - edge-ai
12
  - construction-ai
13
  - autonomous-painting
14
  - wall-painting-robot
 
26
  - mean-iou
27
  - iou
28
  model-index:
29
+ - name: painting-vision-robotics-kit
30
  results: []
31
  ---
32
 
33
+ # Painting Vision Robotics Kit — robot-ready wall-paint coverage segmentation
34
 
35
+ **A lite, edge-deployable research preview for autonomous painting and surface-finishing robots: from pixels to an executable paint plan.**
36
 
37
+ The Painting Vision Robotics Kit reads a single camera frame of a wall and returns far more than
38
  a mask. It segments the paintable surface, the fixtures and openings that must
39
  not be painted, and the substrate — then hands a downstream planner a *wall
40
  boundary, corners, a two-tool stroke plan, machine-readable waypoints, and a
 
48
  > model weights are trained by the open `train.py` in this repo on
49
  > session-separated, real capture data.
50
 
51
+ ## Lite model, frontier lineage
52
+
53
+ **This kit is the *lite* tier of our models.** The published
54
+ `painting-vision-robotics-kit` is deliberately compact — a MobileNetV3/DeepLabV3-class
55
+ backbone through SegFormer-B2 (`models.py --arch`) sized to run onboard a painting
56
+ robot on CPU or a small accelerator, trading peak accuracy for latency, memory and
57
+ offline operation (ONNX / TensorRT INT8 / CoreML targets; `docs/ROADMAP.md`, Phase 3).
58
+
59
+ **Our frontier tier is the flagship.** Constructelligence is developing **frontier
60
+ construction-AI models** — larger backbones, higher-resolution and multimodal (RGB +
61
+ depth/LiDAR) input, trained on session-separated real capture. Those are a separate,
62
+ larger model class and are **not** what this card publishes. What is open here is the
63
+ *lite* variant: the same task and the same honest, testable pipeline, at a fraction of
64
+ the size, runnable on a laptop today.
65
+
66
+ Read this card as the **floor** of the range — a lite model shipped in the open by a
67
+ frontier-model team — not the ceiling.
68
+
69
  ---
70
 
71
  ## Why this model exists
 
79
  - the **substrate** (e.g. drywall) so paint behaviour is not confused with surface type;
80
  - **remaining coverage** across repeated observations, so the robot knows when to stop.
81
 
82
+ The kit is designed end-to-end around those questions.
83
 
84
  ## Capabilities
85
 
 
128
  samples each gap needs. `train.py` supports class-, wall- and hybrid-balanced
129
  sampling so the balanced collection survives into the optimizer.
130
 
131
+ ### 6. Paint colour: named, matched, per face
132
+ `paint_color.py` places the painted pixels in CIELAB, trims the darkest and
133
+ brightest 10% (shadow, glare, lap marks) and names the coat ("magnolia
134
+ #F1EBD6"), reports a k-means palette and a colour per measured wall face — so a
135
+ face painted in the wrong colour or a missed second coat is visible in the
136
+ report. A specified colour (`--reference-color`) is compared with **CIEDE2000**
137
+ and banded (≤1 exact, ≤2 a touch-up match, ≤5 the same at a glance), and
138
+ `safety_gate.py` stops the coat when the measured colour is not the specified
139
+ one. The colour printed on a paint can's label is read and checked against the
140
+ same reference, so the product on site is verified and not assumed.
141
+
142
+ ### 7. The equipment around the wall
143
+ `site_objects.py` finds paint cans, trays, brushes, rollers, ladders and dust
144
+ sheets around the wall, with no trained model (there is no annotated data for
145
+ them): gradient outlines are cut above the frame's own noise, scene structure
146
+ (skirting, ceiling, the wall/floor junction) is removed so a tin standing on the
147
+ floor is not welded onto it, outlines are closed and filled back into bodies,
148
+ and each body is scored per class from its own cues — aspect, fill, outline
149
+ straightness, nap texture, the stripe a tin's rim or a brush's ferrule makes,
150
+ the repeats tray ridges or ladder rungs make, frame position, colour. It answers
151
+ what a site asks: is the gear the plan needs here, is anything standing where
152
+ the paint is going (folded into the keep-out mask), and is the tin the right
153
+ colour. Every detection carries the cues that fired and the scores of the
154
+ classes it was *not* given; `safety_gate.py` warns by default on clutter and on
155
+ missing tools, and stops on a colour mismatch.
156
+
157
  ## Quickstart
158
 
159
  ```sh
 
183
  | --- | --- |
184
  | `models.py` | architecture factory: DeepLabV3 (MobileNet/ResNet) + SegFormer, semantic + drywall heads |
185
  | `train.py` | training, balanced sampling, window loss boost, boundary/coverage metrics |
186
+ | `predict.py` | inference: masks, coverage, geometry, regularised windows, paint colour, equipment on site |
187
+ | `paint_color.py` | the coat's colour named, paletted, per face, and matched with CIEDE2000 |
188
+ | `site_objects.py` | model-free detection of paint cans, trays, brushes, rollers, ladders, dust sheets; the colour on a tin's label |
189
  | `robot_planner.py` | boundary/corners, two-tool stroke plan, waypoints, progress state |
190
  | `window_postprocess.py` | fragment merge + oriented rectangle fitting for windows |
191
  | `depth_validation.py` | LiDAR/depth plane fit, protrusion/recess checks, metric scale |
 
229
 
230
  ```bibtex
231
  @misc{constructelligence_painting_vision,
232
+ title = {Painting Vision Robotics Kit: robot-ready wall-paint coverage segmentation},
233
  author = {Constructelligence},
234
  year = {2026},
235
  note = {Research preview}