Mamba-based Deep Learning Approach for Sleep Staging on a Wireless Multimodal Wearable System without Electroencephalography
Paper • 2412.15947 • Published
Sistema completo de detección de apnea/hipopnea nocturna basado en señales de oximetría de pulso (SpO₂) y frecuencia cardíaca (HR) del dataset SHHS (Sleep Heart Health Study).
Input: HR (1Hz) + SaO2 (1Hz) → (B, 2, 900) [15 min ventanas]
1. TCN Encoder (dilataciones 1,2,4,8)
Conv1d-BN-ReLU → Residual blocks → (B, 256, T')
2. BiGRU (2 capas, hidden=128)
Forward + Backward → (B, T', 256)
3. Temporal Self-Attention (4 heads)
Lightweight attention → (B, T', 256)
4. Multi-scale Pooling
GlobalAvgPool + GlobalMaxPool → (B, 512)
5. Classifier
LayerNorm → Dropout → Linear(512→256→2)
Output: Logits binarios (Normal vs Apnea/Hipopnea)
Parámetros entrenables: ~3.1M
pip install -r requirements.txt
Archivos .mat con las siguientes variables:
HR: Frecuencia cardíaca (1 Hz), shape (N,) o (N,1)SaO2 o SaO2: Saturación de oxígeno (1 Hz, resolución 1%), shape (N,)Target03: Etiquetas (0=normal, !=0=apnea/hipopnea), shape (N,)OXStat: Calidad de señal (0=buena calidad, !=0=artefacto), shape (N,)python train_sleep_apnea.py \
--data_dir /ruta/a/archivos/mat \
--output_dir /ruta/a/salida \
--epochs 100 \
--batch_size 32 \
--lr 0.001 \
--window_size 900 \
--stride 60 \
--seed 42
python inference_sleep_apnea.py \
--data_dir /ruta/a/test/mat \
--model_path /ruta/a/salida/best_model.pt \
--output_dir /ruta/a/resultados \
--threshold 0.5 \
--batch_size 64
| Archivo | Descripción |
|---|---|
best_model.pt |
Mejor modelo (según F1 en validación) |
training_curves.png |
Evolución de loss, accuracy, sensibilidad, especificidad |
confusion_matrix.png |
Matriz de confusión en test |
roc_pr_curves.png |
Curvas ROC y Precision-Recall |
final_report.json |
Métricas completas en formato JSON |
| Parámetro | Default | Descripción |
|---|---|---|
window_size |
900 | Tamaño ventana (15 min @ 1Hz) |
stride |
60 | Solapamiento (1 min) |
label_shift |
60 | Shift etiquetas para delay desaturación (60s) |
focal_gamma |
2.0 | Factor focal loss |
lr |
1e-3 | Learning rate AdamW |
dropout |
0.4 | Regularización |
patience |
15 | Early stopping (épocas sin mejora) |
This model repository was generated by ML Intern, an agent for machine learning research and development on the Hugging Face Hub.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = 'Gastpm/sleep-apnea-shhs-v2'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
For non-causal architectures, replace AutoModelForCausalLM with the appropriate AutoModel class.