Manufacturing

Visual inspection on a plastics line, and the OEE story underneath it

A camera-based defect check at the end of a moulding line, plus the line telemetry that showed the real losses were upstream of the defects.

Escaped defects to customer
cut by roughly three-quarters
Inspection labour per shift
three stations → one
Unplanned downtime identified as avoidable
over a third
Sector
Injection moulding, automotive tier-2
Scope
3 lines, 11 part families
Engagement
Pilot, then plant rollout
Duration
7 months

Stack

  • PyTorch
  • ONNX Runtime
  • NVIDIA Jetson
  • OPC UA
  • MQTT
  • TimescaleDB
  • Grafana
  • React

Practices involved

Discuss a similar problem

The situation

Three operators per shift inspected mouldings by eye under a lamp. Escaped defects triggered customer complaints roughly twice a month, each one expensive in credit notes and more expensive in the supplier scorecard. The plant wanted a camera to replace the lamp.

The constraint

Two things made the obvious approach fail. First, defect examples were rare and unevenly distributed: plenty of short shots, almost no sink marks, and the ones that mattered commercially were the rare ones. Second, the line changes part family up to four times a day, and a system that needs retraining per changeover will be switched off within a fortnight.

What we built

Anomaly-first, classification second

Rather than a classifier requiring balanced examples of every defect, the primary model learns what a good part looks like per family and scores deviation. Anything above threshold is flagged. A lighter classifier then labels the common defect types where we had enough examples to be honest about it. Unknown defects still get caught; they simply arrive labelled "anomalous" rather than mislabelled.

Fixed optics, because lighting is the model

Most of the accuracy came from the enclosure: fixed geometry, controlled lighting, a trigger tied to the ejection signal. We spent more of the pilot on the rig than on the network.

Inference at the edge, with a real feedback button

Models run on the line, so a network problem does not stop production. The operator screen shows the part, the score and the region that triggered it, and offers two buttons: confirm or reject. Those judgements go back into the training set. The operators became the labelling function, which is also why they kept using it.

The telemetry nobody asked for

While instrumenting the trigger we pulled cycle time, machine state and downtime reasons from the controllers over OPC UA. That produced a proper OEE view, and it showed that defects were the smaller loss. A third of unplanned downtime traced to two mould-change procedures with no standard sequence. The vision system paid for itself; the downtime analysis paid for the next two projects.

What changed

Escaped defects dropped by roughly three quarters and inspection moved from three stations to one reviewing flagged parts. The plant now has a shared, non-negotiable definition of downtime reasons, which had previously been a source of argument between shifts.

What we would do differently

We set the initial alert threshold to favour recall and generated enough false positives in week one that the line supervisor nearly pulled the pilot. A tuning period with the system in advisory mode — flagging without stopping anything — should have been the default starting state.

Outcomes

Escaped defects to customer
cut by roughly three-quarters
Inspection labour per shift
three stations → one
Unplanned downtime identified as avoidable
over a third

Client identity withheld under a mutual NDA. Figures are illustrative — rounded and directional, meant to show the shape of the change rather than an audited result. We will walk through the real numbers, and how they were measured, under NDA on a call.

Next step

Tell us what you're trying to ship.

Send the brief, the RFP, or three messy sentences about the problem. You get a written point of view from an architect within two working days — not a sales deck.