| --- |
| 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. |
| |