Collection of utility tools and deep learning methods for multimodal feature extraction.
Project description
Exordium is a comprehensive toolkit for multimodal feature extraction across audio, video, and text modalities. It provides preprocessing functions, utility tools, and deep learning wrappers for processing and analyzing multimodal data.
Features
Audio
| Functionality | Model / Method | Output |
|---|---|---|
| I/O | load, save, resample | waveform |
| Spectral features | MFCC, Mel-spectrogram (with pre-emphasis) | spectrogram |
| Low-level descriptors | OpenSMILE — eGeMAPSv02 | 88-d vector |
| Audio–language embeddings | CLAP (laion/larger_clap_music_and_speech) | 512-d vector |
| Speech representations | Wav2Vec2 (base-960h / emotion-iemocap) | (T, 768) |
| Speech representations | WavLM (microsoft/wavlm-base/base+/large) | (T, 768/1024) per layer |
| Speech emotion features | emotion2vec+ (emotion2vec_plus_seed) | (T, 768) |
Video
Face Detection & Tracking
| Functionality | Model / Method | Output |
|---|---|---|
| Face detection | YOLOv8-Face (arnabdhar/YOLOv8-Face-Detection) | bounding boxes |
| Face detection + keypoints | YOLO11-pose (yolo11n/s-pose_widerface) | bounding boxes + 5-pt keypoints |
| Multi-face tracking | IoU-based tracker | track IDs across frames |
Face Analysis
| Functionality | Model / Method | Output |
|---|---|---|
| Dense facial landmarks | MediaPipe FaceMesh (face_landmarker.task) | 478 × (x, y) |
| Iris landmarks | MediaPipe Iris | 71 eye pts + 5 iris pts, EAR, diameters |
| Head pose | 6DRepNet (300W-LP + AFLW2000) | yaw, pitch, roll (degrees) |
| Gaze estimation | L2CS-Net (ResNet-50, MPIIFaceGaze) | pitch, yaw (radians) |
| Gaze estimation | UniGaze (ViT-based) | pitch, yaw (radians) |
| Eye blink detection | BlinkDenseNet121 (DenseNet-121) | per-eye open/closed probability |
| Facial action units | OpenGraphAU (Swin-T backbone) | 41-dim AU intensity vector |
Deep Visual Features
| Functionality | Model / Method | Output |
|---|---|---|
| Video features | Swin Transformer (tiny/small/base) | 768-d / 768-d / 1024-d |
| Face identity features | FAb-Net | 256-d |
| Vision–language embeddings | CLIP (ViT-H/14, laion2B) | 1024-d |
| Self-supervised visual features | DINOv2 (small/base/large/giant) | 384 / 768 / 1024 / 1536-d |
| Facial expression features | EmotiEffNet (EfficientNet-B0/B2, AffectNet) | 1280-d / 1408-d |
Text
| Functionality | Model / Method | Output |
|---|---|---|
| Speech-to-text | Whisper (OpenAI) | transcript |
| Contextual embeddings | BERT (bert-base-uncased) | (T, 768) |
| Contextual embeddings | RoBERTa (roberta-large) | (T, 1024) |
| Multilingual embeddings | XML-RoBERTa (xlm-roberta-base) | (T, 768) |
Utilities
- Device management — GPU/CPU selection via
get_torch_device - Caching —
@load_or_createdecorator (safetensors, npy, pkl, fdet, vdet, track) - Normalization — global, per-feature, sliding-window
- Padding — fixed-length sequence padding and masking
- Loss functions — Bell, ecl1 losses
- Concurrency — thread- and process-pool helpers
Installation
Requires uv. The
videoextras includeunigaze, which pinstimm==0.3.2(broken with modern PyTorch).uv'soverride-dependenciesinpyproject.tomlsilently upgrades it totimm>=1.0. Plainpiphas no equivalent override mechanism and will fail to resolve this conflict.
uv pip install exordium # base only
uv pip install exordium[all] # all optional dependencies
uv pip install exordium[audio] # audio extras only
uv pip install exordium[video] # video extras only
uv pip install exordium[text] # text extras only
Install uv if you don't have it yet:
curl -LsSf https://astral.sh/uv/install.sh | sh
Extras
| Extra | Dependencies |
|---|---|
audio |
OpenSMILE, torchaudio — audio feature extraction |
text |
transformers, torchaudio — text and speech models |
video |
MediaPipe, Ultralytics, blinklinmult, unigaze, timm — face & video models |
all |
all previously described extras |
Development
git clone https://github.com/fodorad/exordium
cd exordium
uv pip install -e ".[all,dev]"
make check # lint + type-check + test + docs
Documentation
Related Projects
EmotionLinMulT (202X)
Efficient, transformer-based, multi-task emotion detection system.
- Paper: not published yet
- Code: github.com/fodorad/EmotionLinMulT
BlinkLinMulT (2023)
Transformer-based eye blink detection and eye state recognition across 7 public benchmark databases.
PersonalityLinMulT (2022)
LinMulT trained for Big Five personality trait estimation and sentiment analysis.
- Paper: Multimodal Sentiment and Personality Perception Under Speech
- Code: github.com/fodorad/PersonalityLinMulT
LinMulT
General-purpose multimodal transformer with linear-complexity attention mechanisms.
- Website: adamfodor.com/LinMulT
- Code: github.com/fodorad/LinMulT
Contact
Ádám Fodor — adamfodor.com · fodorad201@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file exordium-2.2.0.tar.gz.
File metadata
- Download URL: exordium-2.2.0.tar.gz
- Upload date:
- Size: 32.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44d085a34a224b53053c2acdb26410166393154c87df2c139e063b4f2e9e6def
|
|
| MD5 |
69e2f6c087b38e671f4edbfbb879c7c3
|
|
| BLAKE2b-256 |
aed2ef2bf73b804c899179482cd3235c51a12ad63e0f0522254c3491b6c5ecab
|
Provenance
The following attestation bundles were made for exordium-2.2.0.tar.gz:
Publisher:
cd.yml on fodorad/exordium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exordium-2.2.0.tar.gz -
Subject digest:
44d085a34a224b53053c2acdb26410166393154c87df2c139e063b4f2e9e6def - Sigstore transparency entry: 1199331285
- Sigstore integration time:
-
Permalink:
fodorad/exordium@4560915c83d718649bcb2b13c87e1b70247f78a3 -
Branch / Tag:
refs/tags/v2.2.0 - Owner: https://github.com/fodorad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@4560915c83d718649bcb2b13c87e1b70247f78a3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file exordium-2.2.0-py3-none-any.whl.
File metadata
- Download URL: exordium-2.2.0-py3-none-any.whl
- Upload date:
- Size: 143.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
250f8bbd7150ceb6832260f9c53a1d7c762e7bfdd19d09963393e2beb5f1936b
|
|
| MD5 |
9d388d5dc2021e631283a08c369c2716
|
|
| BLAKE2b-256 |
08c889855ee99594043068947a14d179f84e73fc83f2c7c9d8fcacb65514dcc1
|
Provenance
The following attestation bundles were made for exordium-2.2.0-py3-none-any.whl:
Publisher:
cd.yml on fodorad/exordium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exordium-2.2.0-py3-none-any.whl -
Subject digest:
250f8bbd7150ceb6832260f9c53a1d7c762e7bfdd19d09963393e2beb5f1936b - Sigstore transparency entry: 1199331302
- Sigstore integration time:
-
Permalink:
fodorad/exordium@4560915c83d718649bcb2b13c87e1b70247f78a3 -
Branch / Tag:
refs/tags/v2.2.0 - Owner: https://github.com/fodorad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@4560915c83d718649bcb2b13c87e1b70247f78a3 -
Trigger Event:
push
-
Statement type: