PCBInspect-LeadDefect

Part of the SentinelPCB defect-inspection router: a region classifier dispatches each component ROI crop to a region-specific defect classifier. Sibling repos: PCBInspect-Region, PCBInspect-BodyDefect, PCBInspect-LeadDefect, PCBInspect-TextDefect.

Companion structural-feature detector (unrelated task โ€” detects MountingHole/ComponentBody/ SolderJoint/Lead, not defects): PCBInspect-AI.

Role

Defect classifier for crops routed as Lead. Binary: defect-free vs insufficient solder. Classes are naturally balanced (~1,846 each) - no rebalancing needed.

Model

  • Base: yolo26s-cls (Ultralytics), classification head, fine-tuned on AOI component-ROI crops.
  • Export: ONNX, opset 17, no NMS (classification only) โ€” single input images (1, 3, 640, 640) RGB, normalized /255, NCHW; single output output0 (1, 2) raw logits (apply softmax yourself for probabilities).
  • Classes (2), index order = labels.json: Golden, SolderInsufficient.

Data

Trained on a proprietary AOI dataset of SMT component-ROI crops (paired defect-free reference + defective capture per physical site), not publicly released. Split is grouped by physical capture site (never by raw image) so a component's reference and defect crop never straddle train/val/test.

Metrics

val (top-1 0.996, macro-F1 0.996, n=736):

class precision recall f1 support
Golden 0.997 0.995 0.996 369
SolderInsufficient 0.995 0.997 0.996 367

test (top-1 0.996, macro-F1 0.996, n=754):

class precision recall f1 support
Golden 0.995 0.997 0.996 377
SolderInsufficient 0.997 0.995 0.996 377

Limitations

None observed; test top-1/macro-F1 both 0.996 (n=754).

Usage

import onnxruntime as ort
import numpy as np
from PIL import Image

sess = ort.InferenceSession("model.onnx", providers=["CPUExecutionProvider"])
img = Image.open("crop.jpg").convert("RGB").resize((640, 640))
x = (np.asarray(img, dtype=np.float32) / 255.0).transpose(2, 0, 1)[None, ...]
(logits,) = sess.run(None, {"images": x})
probs = np.exp(logits) / np.exp(logits).sum()
print(probs)
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support