DualStabSleepNet: A Dual-Domain Diffusion Stabilization Network for Robust Sleep Staging
Organizations: School of Mathematics and Systems Science, Shandong University of Science and Technology, Qingdao, 266590, Shandong, China · School of Artificial Intelligence, Shandong Women’s University, Jinan, 250352, Shandong, China · School of Computer Science and Engineering, South China University of Technology, Guangzhou, 510641, Guangdong, China
Abstract
Existing deep learning approaches for automatic sleep staging suffer from limited robustness under heterogeneous recording conditions, where non-stationary noise, inter-subject differences and cross-dataset distribution shifts cause unstable features and poor generalization. This work proposes DualStabSleepNet (DSSNet), a dual-domain diffusion stabilization network for robust sleep staging, which improves robustness in both data and feature domains. After preprocessing multi-channel polysomnography (PSG), a continuous-scale diffusion-based stabilization module suppresses noise while preserving physiological signal structures. Stabilized signals are converted to time-frequency representations and fed into a Vision Transformer backbone. A teacher-student guided diffusion feature stabilization module further mitigates feature drift and enforces multi-level feature consistency. Evaluated on four public PSG datasets SleepEDF-20, SleepEDF-78, SHHS and ISRUC-S3, DSSNet achieves state-of-the-art accuracy of 89.2%, 88.0%, 89.7%, 86.7% with improved macro-F1 and Cohen's kappa. It obtains notable improvements on hard transitional stages (e.g., 12.5% gain for N1 on SHHS) and boosts N2/REM recognition. Under cross-dataset settings, DSSNet is robust to distribution shift and performs on par with or superior to target-dataset trained baselines, demonstrating its practical potential for real-world sleep staging across heterogeneous cohorts.
Figures & tables
| Dataset | Subjects | Channels | Freq. | Epoch numbers | Total | ||||
|---|---|---|---|---|---|---|---|---|---|
| Wake | N1 | N2 | N3 | REM | |||||
| Sleepedf-20 | 20 | 3 | 100 Hz | 8285 | 2804 | 17799 | 5703 | 7717 | 42308 |
| 19.6% | 6.6% | 42.1% | 13.5% | 18.2% | |||||
| Sleepedf-78 | 78 | 3 | 100 Hz | 63802 | 21229 | 68645 | 12883 | 25651 | 192210 |
| 33.2% | 11.0% | 35.71% | 6.7% | 13.34% | |||||
| SHHS | 329 | 3 | 125 Hz | 46369 | 10304 | 142125 | 60153 | 65953 | 324854 |
| Symbol | Value |
|---|---|
| [0.05, 0.2] | |
| 0.5 | |
| 8 / 12 / 16 | |
| 0.2 | |
| 4 | |
| 0.2 |
| Dataset | Method | Architecture | Acc | MF1 | Kappa | W | N1 | N2 | N3 | R |
|---|---|---|---|---|---|---|---|---|---|---|
| ISRUC-S3 | MVF-SleepNet [21] | CNN + LSTM | 84.1 | 82.8 | 0.795 | 90.0 | 62.5 | 83.3 | 91.1 | 87.3 |
| SVM [14] | Traditional | 71.4 | 67.2 | 0.626 | 82.4 | 42.8 | 72.4 | 81.5 | 56.9 | |
| RF [15] | Traditional | 70.2 | 68.5 | 0.616 | 83.8 | 47.0 | 67.1 | 76.3 | 68.4 | |
| MixSleepNet [33] | CNN + Transformer | 83.0 | 82.1 | 0.782 | 89.9 | 62.5 | 81.9 | 89.9 | 86.0 | |
| XSleepNet1 [12] | CNN + LSTM | 82.5 | 80.8 | 0.774 | 90.1 | 58.6 | 82.5 | 88.7 | 84.3 | |
| XSleepNet2 [12] | CNN + LSTM | 82.6 | 81.0 | 0.774 | 89.9 | 59.0 | 82.6 | 88.4 | 84.9 |
| SleepEDF-78 | |||||
|---|---|---|---|---|---|
| Stage | Pre. | Rec. | F1 | Spec. | Samples |
| Wake | 0.9583 | 0.9278 | 0.9428 | 0.9800 | 63,802 |
| N1 | 0.6297 | 0.6215 | 0.6256 | 0.9546 | 21,229 |
| N2 | 0.8985 | 0.9083 | 0.9034 | 0.9430 | 68,645 |
| N3 | 0.8435 | 0.8476 | 0.8455 | 0.9887 | 12,883 |
| REM | 0.8677 | 0.9185 | 0.8924 | 0.9784 | 25,651 |
| Data Prepare | SleepEDF-78 | SleepEDF-20 | ||||
|---|---|---|---|---|---|---|
| ACC | MF1 | ACC | MF1 | |||
| Wavelet + STFT | 86.6 | 83.2 | 0.827 | 88.5 | 84.8 | 0.841 |
| STFT | 86.4 | 83.1 | 0.818 | 88.3 | 84.4 | 0.841 |
| Diffusion + STFT | 88.0 | 84.2 | 0.836 | 89.2 | 85.5 | 0.852 |
| EEGDenoise | ||||||
|---|---|---|---|---|---|---|
| Method | RRMSE | CC | SNR | WSNR | WCC | |
| 1D-ResCNN [39] | 0.302 | 0.931 | 12.746 | 16.897 | 0.906 | |
| EEGdenoiseNet [40] | 0.344 | 0.904 | 12.121 | 15.094 | 0.888 | |
| EEGDnet [41] | 0.301 | 0.945 | 13.251 | 17.584 | 0.924 | |
| DuoCL [42] | 0.315 | 0.919 | 13.236 | 16.374 | 0.902 | |
| GCTNet [43] | 0.262 | 0.948 | 14.534 | 18.702 | 0.926 | |
| Baseline | Feature | Data | SleepEDF-78 | SleepEDF-20 | ||||
|---|---|---|---|---|---|---|---|---|
| ACC | MF1 | ACC | MF1 | |||||
| ✓ | ✓ | ✓ | 88.0 | 84.2 | 0.836 | 89.2 | 85.5 | 0.852 |
| ✓ | ✓ | 87.4 | 83.5 | 0.824 | 88.5 | 85.1 | 0.849 | |
| ✓ | ✓ | 86.3 | 82.4 | 0.806 | 87.1 | 84.3 | 0.836 | |
| ✓ | 84.6 | 81.1 | 0.789 | 85.9 | 82.8 | 0.819 | ||
| Layer Ablation | SleepEDF-78 | SleepEDF-20 | ||||
|---|---|---|---|---|---|---|
| ACC | MF1 | ACC | MF1 | |||
| L1 + L2 + L3 + L4 | 88.0 | 84.2 | 0.836 | 89.2 | 85.5 | 0.852 |
| L2 + L4 | 87.4 | 83.6 | 0.814 | 88.6 | 84.9 | 0.848 |
| L4 | 86.9 | 83.1 | 0.807 | 88.2 | 84.5 | 0.843 |
| EEG | EOG | EMG | SleepEDF-78 | SleepEDF-20 | ||||
|---|---|---|---|---|---|---|---|---|
| ACC | MF1 | ACC | MF1 | |||||
| ✓ | ✓ | ✓ | 88.0 | 84.2 | 0.836 | 89.2 | 85.5 | 0.852 |
| ✓ | ✓ | 87.1 | 82.8 | 0.803 | 88.8 | 84.2 | 0.837 | |
| ✓ | 85.4 | 81.4 | 0.782 | 87.7 | 82.6 | 0.818 | ||
| L1+L2+L3+L4 | |||
|---|---|---|---|
| Stage | Params (M) | FLOPs (G) | FPS (samples/s) |
| 1 | 9.276 | 1.883 | 1265.03 |
| 2 | 9.276 | 2.508 | 1015.05 |
| 3 | 9.276 | 3.133 | 726.62 |
| 4 | 9.276 | 3.758 | 672.28 |
| L2+L4 | |||