GaugeAnything / README.md
James-joobs's picture
card: profile_width_cnn ≈18.6μm (GPU run variance note)
13a13e5 verified
|
Raw
History Blame Contribute Delete
4.45 kB
metadata
license: apache-2.0
language: en
tags:
  - industrial-inspection
  - metrology
  - crack-detection
  - segmentation
  - measurement
pipeline_tag: image-segmentation

GaugeAnything — task heads for promptable quantitative inspection

Masks in, millimeters out. These are the trained task heads of GaugeAnything — a promptable quantitative inspection pipeline for industrial micro-vision (SAM 3 backbone + metrology core).

🌐 Project page: https://falcons-eyes.github.io/GaugeAnything/ · 📊 All numbers below are audited (held-out splits, multi-seed where applicable, protocols in the repo).

Checkpoints

File Task Audited result Training data Use
profile_width_cnn.pt 1-D crack-width regression from a 501-px brightness profile (the "signal for HOW WIDE" head) table test MAE ≈18.6 μm (~1 μm GPU run variance); end-to-end promptable 39.9 μm MAE / 23.2 μm median (localization-gated) krkCMd, 14,424 profiles (CC BY 4.0 — license-clean) ✅ commercial OK
gaugehead_tiny_width.pkl Tiny owned crack-width specialist over SAM-mask/image statistics held-out source rel.err 0.472 vs 5-bin quantile 0.480 and old neural M2 0.564; worst source still 0.720 CrackSeg9k M2 cache ⚠️ research (subset licenses vary)
gaugehead_tiny_width_conformal.pkl GaugeHead-Tiny + 90% conformal interval (log cross-conformal; μ + σ-diagnostic + q) keeps rel.err 0.4724 with per-source coverage 0.91/1.00/0.95 @90%; adaptive variants collapse on the worst source (0.21/0.11) — see repo experiments/results/m2_uncertainty_conformal.json CrackSeg9k M2 cache ⚠️ research (subset licenses vary)
m2_refiner.pt Measurement-aware crack mask refiner (UNet, 1.9M) superseded baseline: a logit-threshold + quantile calibration beats it (0.437 vs 0.564 rel. err) — kept for reproducibility CrackSeg9k train sources ⚠️ research (subset licenses vary)
matte_fray_directional.pt Alpha matting head for fuzzy-boundary (fray) defects, directional synthesis v2 real MT-fray preservation IoU 0.949 vs classical guided filter 0.860 synthetic compositing over Magnetic-Tile free images ⚠️ research (MT license unstated)
matte_fray.pt v1 (blob synthesis) — kept as the honest negative: real-transfer failure 0.483 see repo progress logs same ⚠️ research
draem_uneven.pt DRAEM-lite reconstruction head for boundaryless (uneven/mura) defects test AUC 0.636 (classical illumination-residual baseline: 0.669) synthetic mura over Magnetic-Tile free images ⚠️ research

The SAM 3 backbone is not redistributed here — get it at facebook/sam3 (separate license, gated).

Usage (profile width head)

import torch, numpy as np

ckpt = torch.load("profile_width_cnn.pt", map_location="cpu")
# architecture: see experiments/krkcmd_signal_width.py::build_1d_net in the GitHub repo
from gaugeanything_repo.experiments.krkcmd_signal_width import build_1d_net, norm_profile
net = build_1d_net(); net.load_state_dict(ckpt["model"]); net.eval()

profile = np.asarray(...)          # 501 samples of image brightness across the crack
x = torch.from_numpy(norm_profile(profile)).view(1, 1, -1)
width_um = float(net(x))            # crack width in micrometers

Full pipeline (prompt → SAM 3 localization → perpendicular profile → width) lives in the GitHub repo — see experiments/krkcmd_signal_width.py and docs/WIDTH_BOTTLENECK_ANALYSIS.md for why width is read from the signal, not from mask geometry.

Honest limitations

  • profile_width_cnn is trained on 6400-dpi scanner profiles of concrete (krkCMd); transfer to other resolutions/materials is not yet validated — scale-normalize inputs.
  • End-to-end accuracy is localization-gated: coverage 46–66% on the scanner domain; points failing the gate are reported as "not measurable", not guessed.
  • Heads marked research await upstream dataset license clarification before commercial use.

Citation

@misc{gaugeanything2026,
  title  = {GaugeAnything: Promptable Quantitative Inspection for Industrial Micro-Vision},
  author = {Joo, Hyunwoo},
  year   = {2026},
  url    = {https://github.com/falcons-eyes/GaugeAnything}
}