REVE: A Foundation Model for EEG
Adapting to Any Setup with Large-Scale Pretraining on 25,000 Subjects

1IMT Atlantique 2Université de Montréal
NeurIPS 2025
REVE Model Overview

Overview of the REVE architecture and training pipeline.

Abstract

Foundation models have transformed AI by reducing reliance on task-specific data through large-scale pretraining. While successful in language and vision, their adoption in EEG has lagged due to the heterogeneity of public datasets, which are collected under varying protocols, devices, and electrode configurations. Existing EEG foundation models struggle to generalize across these variations, often restricting pretraining to a single setup, resulting in suboptimal performance, in particular under linear probing. We present REVE (Representation for EEG with Versatile Embeddings), a pretrained model explicitly designed to generalize across diverse EEG signals. REVE introduces a novel 4D positional encoding scheme that enables it to process signals of arbitrary length and electrode arrangement. Using a masked autoencoding objective, we pretrain REVE on over 60,000 hours of EEG data from 92 datasets spanning 25,000 subjects, representing the largest EEG pretraining effort to date. REVE achieves state-of-the-art results on 10 downstream EEG tasks, including motor imagery classification, seizure detection, sleep staging, cognitive load estimation, and emotion recognition. With little to no fine-tuning, it demonstrates strong generalization, and nuanced spatio-temporal modeling.

Changelog

March 2026 Code and dataset release

We release the code to pretrain/fine-tune REVE and the open part of the pretraining dataset.

December 2025 NeurIPS and Braindecode

We present REVE at NeurIPS 2025 and integrate the model into Braindecode v1.3.0.

October 2025 Model release

REVE is now available as a pretrained model on Hugging Face. We also release a Colab tutorial to fine-tune REVE on EEGMAT.

September 2025 Announcement

REVE accepted as a poster at NeurIPS 2025.

Code example

from transformers import AutoModel

pos_bank = AutoModel.from_pretrained("brain-bzh/reve-positions", trust_remote_code=True)
model = AutoModel.from_pretrained("brain-bzh/reve-base", trust_remote_code=True)

eeg_data = ...  # EEG data (batch_size, channels, time_points), must be sampled at 200 Hz
electrode_names = [...]  # List of electrode names corresponding to the channels in eeg_data

positions = pos_bank(electrode_names) # Get positions (channels, 3)
positions = positions.expand(eeg_data.size(0), -1, -1)  # Expand to (batch_size, channels, 3)

output = model(eeg_data, positions)

Dataset Composition (Proportion of Total Hours)

Data Sources

Channel Counts

Tables

Electrode Positions

The diverse set of electrodes used in REVE's pretraining.

BibTeX

@article{elouahidi2025reve,
    title   = {{REVE}: A Foundation Model for {EEG}: Adapting to Any Setup with Large-Scale Pretraining on 25,000 Subjects},
    author  = {El Ouahidi, Yassine and Lys, Jonathan and Thölke, Philipp and Farrugia, Nicolas and Pasdeloup, Bastien and Gripon, Vincent and Jerbi, Karim and Lioi, Giulia},
    journal = {Advances in Neural Information Processing Systems},
    year    = {2025},
    url     = {https://brain-bzh.github.io/reve/}
}