eeg_lab · SEED

Statistical and Learned Representations of Emotion from EEG Data

Five model families — a statistical baseline, MiniRocket, two foundation models (one pretrained on wearables, one on EEG), and a from-scratch CNN+LSTM — decode emotion from the SJTU SEED dataset, head-to-head on the same trial-grouped split.

The highest performing models are are served from AWS Sagemaker inference, which you can try if you have the emotibit, OpenBCI Cyton Ganglion, and a webcam. Here's a video of how to add yourself to SEED's dataset:

152,7301-second windows · 62 ch @ 200 Hz
9models across 5 families
3 classesemotion labels · chance = 33.3%
~9 hwall clock, cheapest arm first
90.3%best val accuracy — the from-scratch CNN

Model Classification Performance

Every arm trains and evaluates on the identical fold (122,160 train / 30,570 val windows, grouped by trial so no window leaks across the split), with uniform early stopping — no arm wins on epoch budget.

Validation accuracy — SEED emotion, fold 2
1 s windows · trial-grouped 5-fold split · early stopping on val accuracy for all arms
DE + shrinkage LDA 61.5%
MiniRocket + ridge 70.1%
NormWear2 · frozen probe 47.1%
NormWear2 · LoRA 58.2%
NormWear2 · progressive 50.7%
LaBraM · frozen probe 49.2%
LaBraM · LoRA 81.3%
LaBraM · progressive 66.0%
CNN+LSTM, from scratch chance 33.3%90.3% ★ best
Classical baselines NormWear2 — wearable FM, 187M params LaBraM — EEG-native FM, 5.8M params From scratch, 15.7M params

NormWear2 arms use a 17-channel montage with per-window z-normalization (its channel-fusion attention was pretrained on 2–6 channel inputs); all other arms see the full 62 channels. Caveat printed next to the numbers in the notebook, too.

Three things the chart says

upset

Scratch beats scale

The 15.7M-parameter CNN+LSTM trained from random init hit 90.3% — 9 points above the best foundation-model arm and 32 above the best that the 187M-parameter NormWear2 could manage. None of NormWear2's three transfer modes cleared the humble LDA baseline.

transfer

Specialized pretraining domains outperform general domains

LaBraM is 32× smaller than NormWear2 but was pretrained on ~2,500 h of scalp EEG at 200 Hz with 1 s patches — SEED's exact regime. Same harness, same loaders, same LoRA config: 81.3% vs 58.2%. What the encoder saw in pretraining matters more than how big it is.

fine-tuning

LoRA beat everything else

In both families LoRA outran progressive unfreezing (81.3 vs 66.0; 58.2 vs 50.7), and frozen linear probes came last — NormWear2's frozen probe landed below the statistical baseline. Thawing more blocks visibly plateaued: LaBraM went 63.6 → 66.0 → 65.9 as blocks unfroze.