Sandvik Coromant · production ML
A fault detector the shop floor can trust
A causal streaming detector for cutting-insert faults, taken from a Python study to shipped C#. It caught every labelled fault without a single false alarm.
- 11/11labelled faults detected
- 0false alarms, also under leave-one-cut-out
- 1.70×separation margin at the chosen threshold
- Noneper-tool calibration needed
The problem
When a cutting insert fails mid-cut, the operator wants to know now, not in the report afterwards. Our earlier deep models (LSTM and VAE autoencoders) could see the faults, but they either raised false alarms or had to be calibrated for each tool, and nobody on a shop floor is going to calibrate a model before every job.
Simpler beat deeper
The detector that shipped is three causal stages. Each one judges a sample only on data that has already arrived, so it behaves the same live as it did in the study:
- Score. A unit-free comparison of recent load against the longer-run level. Because it is a ratio, it needs no calibration per tool or per material.
- Cut gate. Hysteresis on whether the tool is actually in the cut. Every false alarm in the study happened as the tool left the material, and the gate removed all of them.
- Persistence. The score has to stay above the threshold for a short window, chosen against the shortest real fault in the labelled data.
Evaluation that decides
The study was built to make decisions, not to produce a single accuracy number:
- Thresholds were swept, and the chosen value sits in the middle of the zero-false-alarm plateau instead of on its edge.
- Leave-one-cut-out validation still gave 11/11 detections and no false alarms.
- Ablations were measured. Adding a second sensor channel lowered the separation margin from 1.70× to 1.39×, so it stayed out. More data was not better data.
Shipping it
The parameters are fixed constants, not user settings, so a tool in the field cannot drift away from the configuration that was tested. Unit tests pin the behaviour, and an Azure ML pipeline reruns the selection and writes the winning constants straight into the C# code. In the product, the detector runs on live data next to the reference comparison and in the replay view.