R1 · First author · Scientific Reports, 2026
Reading machine health from vibration.
Which deep-learning models can tell bearing faults apart while load and speed keep changing, and how they hold up in noise.
Loading 3D surface…
- Five-fold CV accuracy
- 99.83%
- Accuracy at 1 dB SNR
- 98.8%
- Friedman test
- p = 0.0005
- Venue
- Scientific Reports · Nature Portfolio
- Published
- 11 April 2026 · Vol. 16, Art. 16892
- Authors
- Pratyush Vishal, Rohith Nair, Jonathan Jacob, Narendiranath Babu T., M. Pandiyan
- DOI
- 10.1038/
s41598-026-42592-y
01 / Method
From vibration to fault class
Nine stages, from a seeded defect to a fault class.
01 · Test rig
A seeded fault, under load
Bearings with seeded defects on the inner race, outer race, a ball, or all three, run at three speeds and three loads on a Spectra Quest MFS-PKG5 rig.
- Health states
- HB · IRF · ORF · BF · CF
- Conditions
- 5 × 3 speeds × 3 loads = 45
- Sampling
- 12,800 Hz
02 · Raw signal
Raw vibration, unfiltered
A fault shows up as a train of decaying impacts, one per rolling-element pass. The model gets the signal raw, unfiltered.
- Files
- 45
- Raw points
- 18.9 million
03 · Windowing
Cut into windows
Fixed-length windows with no overlap, so nothing leaks between folds. Flips and time rotations augment training.
- Overlap
- None
- Augmentation
- H-flip, time rotation
04 · CQ-NSGT
Signal to image
Each window becomes an image with geometric frequency bins. Of four transforms tested, CQ-NSGT kept classes tightest: variance 70.1 against 205–283.
05 · Input
224 × 224 × 3
Resized to the shape the pretrained networks expect.
06 · Backbone
A frozen, pretrained backbone
A pretrained network extracts features, weights frozen. Unfreezing a quarter of it cost 30–100% more training time for no accuracy gain.
- Options
- EfficientNetB0, MobileNetV2, InceptionV3
- Weights
- Frozen
07 · Residual blocks
Three trainable residual blocks
Three trainable blocks adapt the general features to bearing spectrograms; the skip path keeps gradients healthy.
- Main path
- Conv 3×3/s · BN · ReLU · Conv 3×3 · BN
- Shortcut
- Conv 1×1/s · BN
- Merge
- Add · ReLU
08 · Head
A small, shared head
Pooling, two small dense layers and a five-way softmax, shared by all three backbones for a fair comparison.
- Optimizer
- Adam
- Epochs
- Up to 100
- Early stopping
- val_loss, patience 3
- LR schedule
- ×0.5 after 5 flat epochs, min 1e-5
09 · Output
A fault class
99.83% cross-validated accuracy, and 98.8% with noise at 1 dB SNR, where it carries almost as much power as the signal.
- Evaluation
- Stratified fivefold CV
- Friedman test
- p = 0.0005
02 / Model
The whole network on one sheet
Input
224 × 224 × 3
Backbone
pretrained
Residual block 1
3×3, 3×3, 1×1
Residual block 2
3×3, 3×3, 1×1
Residual block 3
3×3, 3×3, 1×1
Global avg pool
Dense 128
ReLU · drop .05
Dense 64
ReLU · drop .05
Dense 5
softmax
Fault class
HB IRF ORF BF CF
Layer schedule
| No. | Layer | Configuration | Trains |
|---|---|---|---|
| 01 | Input224 × 224 × 3 CQ-NSGT image | 224 × 224 × 3 CQ-NSGT image | — |
| 02 | BackboneEfficientNetB0 / MobileNetV2 / InceptionV3, pretrained | EfficientNetB0 / MobileNetV2 / InceptionV3, pretrained | — |
| 03 | Residual block 1Conv 3×3/s → BN → ReLU → Conv 3×3 → BN, + Conv 1×1/s → BN shortcut, Add → ReLU | Conv 3×3/s → BN → ReLU → Conv 3×3 → BN, + Conv 1×1/s → BN shortcut, Add → ReLU | Yes |
| 04 | Residual block 2Conv 3×3/s → BN → ReLU → Conv 3×3 → BN, + Conv 1×1/s → BN shortcut, Add → ReLU | Conv 3×3/s → BN → ReLU → Conv 3×3 → BN, + Conv 1×1/s → BN shortcut, Add → ReLU | Yes |
| 05 | Residual block 3Conv 3×3/s → BN → ReLU → Conv 3×3 → BN, + Conv 1×1/s → BN shortcut, Add → ReLU | Conv 3×3/s → BN → ReLU → Conv 3×3 → BN, + Conv 1×1/s → BN shortcut, Add → ReLU | Yes |
| 06 | Global avg poolingFeature maps → one vector | Feature maps → one vector | — |
| 07 | Dense128 units · ReLU, L2 | 128 units · ReLU, L2 | Yes |
| 08 | DropoutRate 0.05 | Rate 0.05 | — |
| 09 | Dense64 units · ReLU, L2 | 64 units · ReLU, L2 | Yes |
| 10 | DropoutRate 0.05 | Rate 0.05 | — |
| 11 | Dense5 units · Softmax | 5 units · Softmax | Yes |
s = stride, not stated in the paper.
Training setup
- Optimizer
- Adam
- Epochs
- Up to 100
- Early stopping
- val_loss, patience 3
- LR schedule
- ×0.5 after 5 flat epochs, min 1e-5
- Evaluation
- Stratified fivefold CV
- Noise test
- AWGN at 5, 3 and 1 dB SNR
Why the backbone stays frozen
Unfreezing the last 25% made training slower and validation no better.
| Backbone | Frozen training | 25% unfrozen | Val. accuracy |
|---|---|---|---|
| MobileNetV2 | 121.4 s | +30–40% | No gain |
| EfficientNetB0 | 177 s | +50% | No gain |
| InceptionV3 | 230.5 s | ≈ 2× | No gain |
03 / Results
Accurate, robust, and cheap enough to ship
Is it real, or a lucky split?
Fivefold cross-validation
Stratified: each fold has a balanced share of all five classes and every speed and load. Windows do not overlap, so near-identical fragments can’t leak across folds.
fold accuracy mean (value at right)
χ²(4) = 20.00, p = 0.0005
η² = 1.00
The ranking (EfficientNetB0, MobileNetV2, InceptionV3, CNN, ViT) was identical in every fold of the grouped evaluation, so the differences are systematic rather than luck of the split.
Show data tableHide data table
| Model | F1 | F2 | F3 | F4 | F5 | Mean |
|---|---|---|---|---|---|---|
| EfficientNetB0 | 99.80% | 99.50% | 100.00% | 100.00% | 100.00% | 99.9% |
| MobileNetV2 | 97.70% | 99.10% | 99.30% | 99.10% | 99.50% | 99.0% |
| InceptionV3 | 97.70% | 98.40% | 98.20% | 97.70% | 99.10% | 98.2% |
| Base CNN | 97.00% | 93.00% | 86.00% | 94.00% | 94.00% | 92.8% |
| ViT | 75.34% | 85.11% | 82.89% | 81.34% | 90.22% | 83.0% |
What 98.8% at 1 dB actually means
Noise stress test
Illustration, not paper data: outer-race impacts at 76.25 Hz (1500 rpm) plus white Gaussian noise scaled to the selected SNR. At 1 dB, the noise carries almost as much power as the signal.
- EfficientNetB0
- 98.8%
- MobileNetV2
- 95.2%
- InceptionV3
- 90.0%
- Base CNN
- 83.8%
- ViT
- 73.3%
EfficientNetB0 loses just 1.1 points at 1 dB. The CNN and ViT baselines drop sharply and then fluctuate, rather than degrading smoothly.
- EfficientNetB099.90% → 99.83%
- MobileNetV299.00% → 98.23%
- InceptionV398.20% → 95.07%
Grey dot: steady speed · filled dot: with fluctuation · axis 94–100%
Show data tableHide data table
| Model | No noise | 5 dB | 3 dB | 1 dB |
|---|---|---|---|---|
| EfficientNetB0 | 99.9% | 99.6% | 99.2% | 98.8% |
| MobileNetV2 | 99.0% | 98.4% | 97.4% | 95.2% |
| InceptionV3 | 98.2% | 95.2% | 92.2% | 90.0% |
| Base CNN | 92.8% | 83.6% | 81.6% | 83.8% |
| ViT | 83.0% | 69.0% | 74.4% | 73.3% |
A lower-bound robustness check; speed fluctuation was tested separately.
The best model isn’t always the one you ship
Accuracy vs cost
MobileNetV2 and EfficientNetB0 need 0.50 and 0.59 GFLOPS per image; InceptionV3, ViT and the baseline CNN need roughly five to eight times as much, for lower accuracy.
Show data tableHide data table
| Model | Accuracy | GFLOPS | Training (s) | Latency (ms) | Memory (MB) |
|---|---|---|---|---|---|
| EfficientNetB0 | 99.9% | 0.59 | 177 | 12.214 | 24.623 |
| MobileNetV2 | 99.0% | 0.5 | 121.4 | 8.167 | 17.788 |
| InceptionV3 | 98.2% | 3.47 | 230.5 | 20.735 | 96.096 |
| Base CNN | 92.8% | 4.05 | 195.5 | – | – |
| ViT | 83.0% | 3.26 | 213.6 | – | – |