File size: 4,745 Bytes
826470e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | ---
license: other
license_name: chalearn-fi-derived
license_link: https://chalearnlap.cvc.uab.cat/dataset/24/description/
pretty_name: PersonalityLinMulT — FI Big Five champion weights
library_name: pytorch
pipeline_tag: other
tags:
- personality
- big-five
- multimodal
- affective-computing
- lightning
- linmult
---
# PersonalityLinMulT — FI Big Five champion weights
<!--
This is the source of truth for the Hugging Face model card at
https://huggingface.co/fodorad/personalitylinmult-fi-models
Keep the two in sync (see `make push-hf-model-card`). The published card adds
a YAML frontmatter block (license/tags/pipeline) that HF renders; this docs
copy omits it.
-->
Trained checkpoints for the Big Five apparent-personality regression task from
[**PersonalityLinMulT**](https://github.com/fodorad/PersonalityLinMulT),
trained on the First Impressions V2 (FI) dataset. Every checkpoint here is a
**champion**: the current best-performing run for its feature combination,
promoted deliberately (never automatically) via the project's MLflow
Model Registry, and mirrored here so a model can be loaded with nothing but
`pip install personalitylinmult` — no MLflow, no repo clone.
## Usage
```python
from personalitylinmult import PersonalityModel
model = PersonalityModel.from_pretrained("wavlm_best-ccc")
scores = model.predict({"wavlm": wavlm_features}) # {trait: score in [0, 1]}
```
`model.feature_names` lists exactly which features a given checkpoint needs;
`model.traits` lists the five Big Five traits in output order
(`openness`, `conscientiousness`, `extraversion`, `agreeableness`,
`emotional_stability`).
### ONNX Runtime (optional, `pip install personalitylinmult[onnx]`)
```python
from personalitylinmult.onnx import PersonalityModelONNX
model = PersonalityModelONNX.from_pretrained("wavlm_best-ccc")
scores = model.predict_from_audio("clip.wav") # raw audio/video -> predictions,
# no torch/transformers/exordium
```
A separate class, not a flag on `PersonalityModel` — installing the plain
package never pulls in `onnxruntime`. WavLM's own ONNX export
(`wavlm-base-plus.onnx`, shared across every WavLM-based champion) downloads
on first use. See `docs/experiments.md` (Blocks 5-6) for the accuracy/speed
benchmark and the small, measured prediction drift from `ffmpeg`-based
resampling (~0.001-0.004 per trait).
## Model id naming
`{features joined by "_", multiword feature names use "-"}_best-{metric}`,
e.g.:
- `wavlm_best-ccc` — single-stream **LinT**, WavLM audio only.
- `wavlm-emotion2vec_best-ccc` — cross-modal **LinMulT**, audio fusion
(WavLM + emotion2vec).
- `avt_best-ccc` — cross-modal **LinMulT**, all 7 features (audio + visual +
text).
The architecture (LinT vs. LinMulT) is never part of the id: a checkpoint is
self-describing, and `PersonalityModel.from_pretrained(...)` reads it off the
downloaded checkpoint automatically.
`_best-{metric}` names which validation metric the run was selected on —
`ccc` (Lin's concordance correlation) is preferred over `mae`/`loss` for this
task, since elementwise losses collapse prediction variance toward the
training mean (see `docs/experiments.md` for the full comparison and the
`std_ratio` metric that catches this).
## Current champions
### `wavlm_best-ccc`
Single-stream **LinT**, WavLM audio only. Trained with `ccc` loss at
`batch_size=256` — the batch size that resolves CCC's per-batch statistical
noise problem (see `docs/experiments.md`, Block 3, for the full diagnosis).
| Metric | Value |
| --- | --- |
| test `mean(1 - MAE)` | 0.8918 |
| test `mean CCC` | 0.5604 |
| test `mean Pearson r` | 0.5609 |
| test `mean std_ratio` | 1.0013 |
- **MLflow experiment**: `fi_lint_wavlm-ccc-bs256`
- **MLflow run_id**: `efb88223fdd04753bb8cefc46a5b51f7`
- **Registered as**: `fi_lint_wavlm-ccc-bs256` v1, `@champion`
- **Git SHA**: `0f60e83f35061e8ee26af61e5a58ad1950986446`
- **Reproduce**: `make train-fi-wavlm ARGS="--set train.loss=ccc --set data.batch_size=256"`
Every other promoted champion (e.g. an AVT full-multimodal model, once one
finishes training and is evaluated) will be added here the same way —
promoted via `make promote-champion` and published via
`make push-champion-model`, never automatically.
## License
These weights are derived from training on the ChaLearn First Impressions V2
dataset and are released under the same terms as the dataset itself — see the
[official ChaLearn LAP release](https://chalearnlap.cvc.uab.cat/dataset/24/description/).
These are apparent-personality *perception* models: they predict how a panel
of annotators rated a person from a short clip, not any ground truth about the
person. Use accordingly.
|