PanLUNA / README.md
marijazelic's picture
Update README.md
25d4c3c verified
|
Raw
History Blame Contribute Delete
15.6 kB
---
license: cc-by-nd-4.0
language:
- en
library_name: pytorch
tags:
- eeg
- ppg
- ecg
- biosignals
- multimodal model
- time-series
- cross-modal
- foundation model
- self-supervised
- masked modeling
- transformer
- single encoder
datasets:
- TUEG
- Siena
- MIMIC-IV-ECG
- PulseDB
- CODE-15
- TUAB
- PTB-XL
- CSN
- HMC
metrics:
- balanced_accuracy
- roc_auc
- pr_auc
- weighted_f1
- cohen_kappa
model-index:
- name: PanLUNA
results:
- task:
finetuning: Full
type: time-series-classification
name: EEG Abnormality Detection
dataset:
type: TUAB
name: TUH EEG Abnormal Corpus (TUAB)
metrics:
- type: balanced_accuracy
value: 81.22
name: Balanced Accuracy (%)
- type: roc_auc
value: 0.893
name: AUROC
- type: pr_auc
value: 0.899
name: AUC-PR
- task:
finetuing: Full
type: time-series-classification
name: EEG Sleep Stage Classification
dataset:
type: HMC
name: Haaglanden Medisch Centrum sleep staging database
metrics:
- type: balanced_accuracy
value: 0.742
name: Balanced Accuracy (%)
- type: cohen_kappa
value: 0.695
name: Cohen's Kappa
- type: weighted_f1
value: 0.766
name: Weighted F1
- task:
finetuning: Low-Rank Adaptation (LoRA)
type: time-series-classification
name: ECG PTB-XL Super Class
dataset:
type: PTB-XL
name: PTB-XL, a large publicly available electrocardiography dataset
metrics:
- type: roc_auc
value: 0.908
name: AUROC
- task:
finetuning: Low-Rank Adaptation (LoRA)
type: time-series-classification
name: ECG PTB-XL Sub Class
dataset:
type: PTB-XL
name: PTB-XL, a large publicly available electrocardiography dataset
metrics:
- type: roc_auc
value: 0.888
name: AUROC
- task:
finetuning: Low-Rank Adaptation (LoRA)
type: time-series-classification
name: ECG PTB-XL Form
dataset:
type: PTB-XL
name: PTB-XL, a large publicly available electrocardiography dataset
metrics:
- type: roc_auc
value: 0.833
name: AUROC
- task:
finetuning: Low-Rank Adaptation (LoRA)
type: time-series-classification
name: ECG PTB-XL Rhythm
dataset:
type: PTB-XL
name: PTB-XL, a large publicly available electrocardiography dataset
metrics:
- type: roc_auc
value: 0.964
name: AUROC
- task:
finetuning: Low-Rank Adaptation (LoRA)
type: time-series-classification
name: ECG CSN
dataset:
type: CSN
name: Chapman-Shaoxing-Ningbo
metrics:
- type: roc_auc
value: 0.950
name: AUROC
---
<div align="center">
<img src="https://raw.githubusercontent.com/masazelic/panluna/main/docs/model/logo/PanLUNA_logo.svg" alt="PanLUNA Logo" width="800"/>
<h1>PanLUNA: An Efficient and Robust Query-Unified Multimodal Model for Edge Biosignal Intelligence</h1>
</div>
<p align="center">
<a href="https://github.com/pulp-bio/BioFoundation">
<img src ="https://img.shields.io/github/stars/pulp-bio/BioFoundation?color=ccf" alt="Github">
</a>
<a href="https://creativecommons.org/licenses/by-nd/4.0/">
<img src="https://img.shields.io/badge/License-CC_BY--ND_4.0-lightgrey.svg" alt="License">
</a>
<a href="https://arxiv.org/pdf/2604.04297">
<img src="https://img.shields.io/badge/arXiv-2604.04297-b31b1b.svg" alt="Paper">
</a>
</p>
**PanLUNA** extends LUNA's channel-unification mechanism from topology invariance to **cross-modal fusion**, jointly processing EEG, ECG and PPG
within a single shared encoder via **sensor-type embeddings** -- no modality specific backbones, no paired multimodal data required during pretraining.
---
## 🔒 License & Usage Policy (Weights)
**Weights license:** The released model weights are licensed under **Creative Commons Attribution–NoDerivatives 4.0 (CC BY-ND 4.0)**.
This section summarizes the practical implications for users. *This is not legal advice; please read the full license text.*
### ✅ You may
- **Use** and **redistribute** the **unmodified** LUNA weights (including in commercial settings) **with proper attribution** to the LUNA authors.
- **Fine-tune / adapt** the weights **for your internal use** (research or production) **without redistributing** the modified weights.
- **Publish your code, configs, logs, and papers** describing experiments with LUNA (please cite the paper).
### 🚫 You may not
- **Share, host, or redistribute any modified weights** (including LoRA/adapter/delta checkpoints or pruned/quantized variants). Any parameter set that encodes an adaptation is considered a derivative and cannot be shared under CC BY-ND 4.0.
- **Imply endorsement** by the LUNA authors for any derivative or evaluation without our written permission.
- **Use the LUNA name** in a way that suggests your modified model is an official LUNA release.
### 🤝 How to contribute improvements (PR-gated releases)
We welcome community improvements via a **pull-request (PR)** workflow. If you believe your improvements should become an **official LUNA release**:
1. **Open a PR** in the [BioFoundation repository](https://github.com/pulp-bio/BioFoundation) describing the change (architecture/head/training recipe, datasets, preprocessing, compute).
2. Include **reproducibility artifacts**: configs, seeds, scripts, environment details, training/validation logs, and the **evaluation protocol** (e.g., TUAB/TUAR/TUSL) with exact splits.
3. Provide **comprehensive results** (AUROC/AUPR/BA, FLOPs, memory) vs. the baselines reported in the PanLUNA paper.
4. After **maintainer review**, approved changes will be **retrained/validated** and, if accepted, **released by the maintainers** as a new **official PanLUNA** checkpoint under **CC BY-ND 4.0**.
> Rationale: CC BY-ND protects users from fragmented, lower-quality “PanLUNA variants,” while still enabling internal fine-tuning and a path for the community to upstream improvements through review.
---
## 🔎 Model Summary
- **Goal:** Compact pan-modal biosignal foundation model for EEG, ECG, and PPG within one shared encoder, with robustnes
to missing modalities and feasibility for ultra-low-power edge deployment.
- **Core idea:** PanLUNA extends LUNA’s Channel-Unification Module from EEG channel/topology unification
to cross-modal fusion: EEG, ECG, and PPG channels are treated as entries in a unified query set, augmented with sensor-type embeddings, and fused through cross-attention with learned latent queries inside a single encoder.
- **Pre-training data:** Approximately 40,000 hours of heterogeneous biosignal data from five public datasets: TUEG and Siena for EEG, MIMIC-IV and CODE-15% for ECG, and PulseDB for synchronized ECG+PPG.
- **Downstream tasks:** TUAB EEG abnormality detection; PTB-XL ECG Superclass (5-class), Subclass (23-class), Form (19-class), and Rhythm (12-class) classification; CSN ECG (38-class) classification; and HMC five-class sleep staging using EEG+ECG to evaluate cross-modal fusion and missing-modality robustness.
---
## 🚀 Model Variants
Aimed for feasible ultra-low-power edge deployment, PanLUNA exists in a Tiny Variant, with the following parameters:
| Variant | Parameters |PanLUNA parameters |
|-----------------|----------------|--------------------------------------|
| PanLUNA | 5.4M |(`num_queries` = 4, `embed_dim` = 64) |
To obtain the model of different size, consider scaling these parameters accordingly (e.g. num_queries=6 leads to 12M parameters).
---
## 📊 Results
- **TUAB (Abnormal EEG Detection, bipolar montage, 22-channels):** 81.21% Balanced Accuracy, 0.899 AUROC, 0.893 AUPR.
- **HMC (EEG Sleep Staging Detection, 4-channels):** 74.16% Balanced Accuracy, 0.695 Cohen's Kappa, 0.765 Weighted F1.
- **ECG PTB-XL Super Class:** 0.908 AUROC
- **ECG PTB-XL Sub Class:** 0.888 AUROC
- **ECG PTB-XL Form:** 0.833 AUROC
- **ECG PTB-XL Rhythm:** 0.964 AUROC
- **ECG CSN:** 0.964 AUROC
---
## 🧠 Intended Use & Limitations
**Intended use.** Research on biosignal (EEG, ECG, PPG) representation learning & classification (abnormality, sleep stages, waveform and rhythm irregularities in ECG), especially when aspiring for robustness in available channels and modalities.
**Limitations.**
- **Not a medical device.** Do **not** use for clinical decisions without proper validation & regulatory clearance.
- **Unseen topologies:** Zero-shot transfer to **very different/dense** layouts (e.g., SEED-V) can underperform SOTA despite positive scaling; consider augmenting pre-training montage diversity and spatial encodings.
- **Distribution shifts:** Performance varies across cohorts, devices, and label protocols; validate locally and consider domain adaptation.
---
## 🏗️ Architecture & Training
**PanLUNA Tokenizer & features:** Biosignals (EEG, ECG, PPG) are patch-segmented using shared convolution-based feature extractor; temporal features via 1D conv w/ GroupNorm+GELU; **frequency features** (FFT mag/phase → MLP) are added; 3D electrode coordinates encoded via **NeRF-style sinusoids → MLP** (positional enc).
**PanLUNA Channel-Modality-Unification Module:** **Q learned queries** cross-attend to **channel-wise patch features** from different modalities to produce a **fixed Q×E latent** per patch; FFN + Transformer layers refine the query tokens. Complexity is **O(Q·C)** (linear in channels).
**Temporal encoder:** **Patch-wise Transformer** with **RoPE** operates on the latent sequence (length = #patches), **not** on channels×patches, reducing sequence length and cost substantially.
**No Modality Specific Encoders:** All modalities are processed within a single shared encoder, embedded only with modality-type embedding.
**Pre-training objective:** **Masked-patch reconstruction** with Smooth-L1; decoder uses **channel-indexed queries** to reconstruct masked tokens. **Query specialization loss** encourages diverse query–channel affinities.
---
## 🔧 How to Use
We provide `PanLUNA.safetensors`, weights for the PanLUNA model pretrained on the 40,000 hours of heterogenous biosignal data.
PanLUNA experiments can be viewed through two Hydra configurations in `BioFoundation/config/experiments`:
- **`PanLUNA_finetune.yaml`** → configuration for fine-tuning experiments.
- **`PanLUNA_pretrain.yaml`** → configuration for pre-training experiments.
---
## 🔧 Fine-tuning — General Checklist
0. **Install & read data prep**: clone the [BioFoundation repo](https://github.com/pulp-bio/BioFoundation), set up the environment as described there, then open `make_datasets/README.md` for dataset-specific notes (naming, expected folder layout, and common pitfalls).
1. **Point to weights**: set `pretrained_safetensors_path: /path/to/PanLUNA.safetensors` in the experiment YAML.
2. **Preprocess data**: acquire fine-tuning dataset and follow preprocessing protocol (see guide in `/make_datasets/README.md`) to generate `train/test/val.h5` files.
3. **Update data module of `PanLUNA_finetune.yaml` config**:
- **Unimodal Experiments:**
- Change `override /data_module` to `finetune_data_module_unimodal_PanLUNA`.
- Check out `config/data_module/dataset_types.yaml` to learn about parameters for each dataset.
- Keep `/data_module: _target_` to `datasets.finetuning_unimodal_datasets_PanLUNA.FinetuningUnimodal_Dataset`.
- **HDF5 file location** → change `/data_module:hdf5_file` for `train`, `test`, and `val` with the path to the corresponding HDF5 data split file.
- Change `channels`, `location_fn` and `sensor_type` for the intended dataset.
- **Multimodal Experiments:**
- Change `override /data_module` to `finetune_data_module_multimodal_PanLUNA`.
- Keep `/data_module: _target_` to `datasets.finetuning_multimodal_datasets_PanLUNA.FinetuningMultimodal_Dataset`.
- **HDF5 file location** → change `/data_module:hdf5_file` for `train`, `test`, and `val` with the path to the corresponding HDF5 data split file.
- Follow the example and instructions in the `config/data_module/finetune_data_module_multimodal_PanLUNA.yaml` to adjust channels and slicing for each multimodal dataset.
4. **Task settings**:
- **Fine-tuning strategy:** override `finetuning: mode` with `full`, `freeze_encoder` or `lora`. Use `full` if you want to fully update PanLUNA's weights after pre-training. For training only classification head use `frozen_encoder`. For Low-Rank Adapation on selected layers use `lora`.
- **Classification type**: set `classification_type` (`bc`, `mcc` or `mlp`) and `model.num_classes` to match your downstream task. Change `model.num_classes` to describe the number of features in the output.
- Configuration file includes further `#CHANGEME` tags and instructions for a working example.
5. **Env vars**: export `DATA_PATH` (dataset root) and `CHECKPOINT_DIR` (artifacts).
6. **Trainer/optimizer**: adjust `gpus/devices`, `batch_size`, `max_epochs`, LR/scheduler if needed.
7. **I/O**: set `io.base_output_path` and confirm `io.checkpoint_dirpath` exists.
To launch fine-tuning (Hydra):
```bash
python -u run_train.py +experiment=PanLUNA_finetune
```
---
## ⚖️ Responsible AI, Risks & Biases
- **Clinical safety:** research-only; human oversight required.
- **Bias & drift:** montage/device/population differences can induce shifts; validate and monitor.
- **Artifacts & rare events:** robustness varies; use QC and task-appropriate preprocessing.
---
## 🔗 Sources
- **Code:** https://github.com/pulp-bio/BioFoundation
- **Paper:** PanLUNA: An Efficient and Robust Query-Unified Multimodal Model for Edge Biosignal Intelligence (arxiv:2604.04297)
---
## 📜 Citation
If you use PanLUNA, please cite:
```bibtex
@misc{zelic2026panluna,
title={PanLUNA: An Efficient and Robust Query-Unified Multimodal Model for Edge Biosignal Intelligence},
author={Marija Zelic and Anna Tegon and Yawei Li and Thorir Mar Ingolfsson},
year={2026},
eprint={2604.04297},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2604.04297},
}
```
---
## 🛠️ Maintenance & Contact
- **Issues & support:** please open a GitHub issue in the BioFoundation repository.
---
---
## 🔗 Related Models
- **[LUNA](https://huggingface.co/PulpBio/LUNA)** — Transformer-based topology-agnostic EEG foundation model (NeurIPS 2025). Source of the channel-unification cross-attention module that LuMamba reuses.
- **[FEMBA](https://huggingface.co/PulpBio/FEMBA)** — Bidirectional Mamba foundation model for EEG. Source of the linear-complexity temporal backbone that LuMamba reuses.
- **[TinyMyo](https://huggingface.co/PulpBio/TinyMyo)** — Tiny foundation model for flexible EMG signal processing at the edge.
- **[LuMamba](https://huggingface.co/PulpBio/LuMamba)** - Extends LUNA's channel-unification to a linear-complexity Mamba backbone, with systematic analysis of LeJEPA for biosignal SSL.
## 🗒️ Changelog
- **v1.0:** Initial release of PanLUNA model card with pretrained checkpoint and instructions.