Physics-Augmented 1D-CNN
An honest evaluation of bearing-fault diagnosis.
- Started
- Aug 2026
- Stack
- PyTorch · Python · Scikit-Learn · ONNX · Signal Processing
01 · Problem
The problem
Bearing-fault papers routinely report around 99% accuracy on the CWRU dataset. My own first version reported 87.58% cross-load accuracy and zero false alarms, and neither held up when I re-checked it.
- On CWRU every faulty bearing is recorded at all four motor loads, so splitting by load still tests on bearings the model has already seen.
- The healthy recordings exist only at 48 kHz while the faults are at 12 kHz. Decimating just the healthy class left artefacts that identify it almost perfectly (separability 0.99–1.00), and an electrical interference line near 4.2 kHz marked it too.
- So the real question became: does adding physics to a 1D-CNN help when the test bearing is genuinely new?
02 · Approach
How it works
- 01Build the modelPAC-1DCNN: a fixed residual high-pass filter, two convolution streams, channel and temporal attention, and post-hoc temperature scaling, with a switch to ablate each part.
- 02Build fair baselinesA standard CNN with a fixed or learnable copy of the same filter, a WDCNN-style wide-kernel CNN with and without test-time AdaBN, an ImageNet-pre-trained ResNet-18 on spectrograms, and two Random Forests on envelope-spectrum and bearing-kinematic features.
- 03Remove the shortcutsDecimate the 48 kHz healthy recordings and band-limit every recording to 3.6 kHz, below the interference line. Both artefacts drop to chance (at most 0.54 and 0.51), and a sharper filter that keeps more of the band changes no conclusion.
- 04Make the test harder, step by stepLeave-one-load-out, then holding out whole defect sizes, then Paderborn's bearing-disjoint protocols, each with low-pass, white and high-pass noise down to −5 dB.
- 05Test it like a paperFolds × seeds, paired Wilcoxon tests with Holm correction, a fold-level corrected resampled t-test, and an IEEE-format manuscript generated straight from the results.
- 06Ship to the edgeONNX FP32 and INT8 export, benchmarked on a desktop CPU with ONNX Runtime.
03 · Architecture
Architecture
PAC-1DCNN, from raw vibration to a calibrated fault class.
- 01Two vibration channels in
Drive-end and fan-end accelerometers, 1024-sample windows at 12 kHz, every recording band-limited to 3.6 kHz.
- 02Split into physics and raw
The residual filter (signal minus its 11-tap moving average) is a high-pass at about 660 Hz; the raw signal bypasses it.
- 03Two convolution streams
A short kernel on the filtered signal, a long kernel on the raw one.
- 04Fuse
A 128-channel convolution merges both views.
- 05Attend
Channel attention weights learned feature maps; temporal attention weights time steps.
- 06Classify and calibrate
Normal, inner race, ball or outer race, with logits divided by a temperature fitted after training.
04 · Results
What the numbers say
- models compared under identical protocols
- 12
- fault-size comparisons where PAC-1DCNN significantly beat a standard CNN
- 0 / 28
- −5 dB conditions where test-time AdaBN significantly improved the WDCNN-style CNN
- 18 / 18
- INT8 inference per window on one CPU thread
- 0.30 ms
- Leave-one-load-out · CWRU99.9%
- Defect size held out · CWRU44.8%
- New bearings · Paderborn P439.9%
- Artificial → real · Paderborn P335.1%
- Envelope spectrum + Random Forest60.7%
- Kinematic features + Random Forest48.3%
- Standard 1D-CNN47.7%
- WDCNN-style wide-kernel CNN47.5%
- Pre-trained ResNet-18 on spectrograms45.8%
- PAC-1DCNN44.8%
- WDCNN-style CNN + AdaBN51.2%
- WDCNN-style wide-kernel CNN34.4%
- Standard 1D-CNN26.9%
- PAC-1DCNN24.3%
- Envelope spectrum + Random Forest23.1%
- Pre-trained ResNet-18 on spectrograms17.5%
- PyTorch FP321.89 ms
- ONNX Runtime FP320.43 ms
- ONNX Runtime INT8 (static)0.30 ms
- ONNX Runtime INT8 (dynamic)5.35 ms
05 · Findings
What I learned
- 01The evaluation protocol decides the result: every model scores at least 99.8% under leave-one-load-out, and the networks 45–48% once whole defect sizes are held out.
- 02On Paderborn, where every test bearing is a new physical specimen, the networks sit close to chance. They learn bearing identity, not transferable fault features.
- 03A bigger pre-trained network did not help. Test-time AdaBN made the WDCNN-style CNN far more robust to strong noise, but did not raise its clean score: it fixes the noise shift, not the bearing shift.
- 04Physics helped as a feature prior, not as a filter: the kinematic Random Forest was the most noise-robust of the original models on Paderborn.
- 05The fixed filter's effect follows its frequency response: it significantly hurt under white noise and only tended to help when the noise lay below its cut-off.
- 06Temperature scaling doesn't fix calibration under noise; it makes the models more confident and their calibration error worse.