Skip to content
All projects
ML/RESEARCHIndependent research · manuscript in preparation

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

VIBRATION2 ch · 1024 @ 12 kHzRESIDUAL FILTERx − MovingAvg11RAW SIGNALbypasses filterSTREAM 1Conv1D k=5STREAM 2Conv1D k=15FUSIONConv1D · 128 chATTENTIONchannel + temporal4-CLASS HEADlogits / T
  1. 01
    Two vibration channels in

    Drive-end and fan-end accelerometers, 1024-sample windows at 12 kHz, every recording band-limited to 3.6 kHz.

  2. 02
    Split 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.

  3. 03
    Two convolution streams

    A short kernel on the filtered signal, a long kernel on the raw one.

  4. 04
    Fuse

    A 128-channel convolution merges both views.

  5. 05
    Attend

    Channel attention weights learned feature maps; temporal attention weights time steps.

  6. 06
    Classify 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
Accuracy collapses as the test gets stricterPAC-1DCNN, clean macro-F1 (%). The dashed line is random guessing on Paderborn P4.
  • Leave-one-load-out · CWRU99.9%
  • Defect size held out · CWRU44.8%
  • New bearings · Paderborn P439.9%
  • Artificial → real · Paderborn P335.1%
random guessing (33.3%)
Simpler baselines do as well or betterDefect size held out on CWRU, clean macro-F1 (%), trained with mixed noise.
  • 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%
Under strong noise, adapting to the test data helps mostDefect size held out on CWRU, white noise at −5 dB, macro-F1 (%), trained with mixed noise.
  • 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%
Edge inferenceMean latency per window on a desktop CPU, batch 1 (lower is better).
  • 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.
Next case studyCall Audit PlatformAI-assisted call QA, shipped to production at DCM Shriram.