JihoonChoi commited on
Commit
2d67433
Β·
verified Β·
1 Parent(s): b23328e

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +183 -0
README.md ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - facial-reaction-generation
5
+ - dyadic-interaction
6
+ - diffusion-model
7
+ - affective-computing
8
+ - react2026
9
+ - mafrg
10
+ language:
11
+ - en
12
+ pipeline_tag: other
13
+ ---
14
+
15
+ # CaReDiff β€” Causal Reaction Diffusion (REACT 2026)
16
+
17
+ Model checkpoints for **CaReDiff**, a submission to the [REACT 2026 Challenge](https://sites.google.com/view/react2026/home) (ACM MM 2026, Multiple Appropriate Facial Reaction Generation).
18
+
19
+ Given speaker behaviour (audio, video, 3DMM coefficients, facial attributes), CaReDiff generates multiple appropriate listener facial reactions (25-d: 15 AUs + valence/arousal + 8 expressions) with an auxiliary EEG prediction head.
20
+
21
+ - **Code:** https://github.com/smu-ivpl/CaReDiff
22
+ - **Checkpoints (this repo):** https://huggingface.co/IVPL/CaReDiff
23
+
24
+ ## Tracks
25
+
26
+ | Track | Architecture | Description |
27
+ |-------|-------------|-------------|
28
+ | Generic Online | PerFRDiff + EEG | Diffusion-based generation over autoregressive windows |
29
+ | Generic Offline | PerFRDiff + EEG | Diffusion-based full-sequence generation |
30
+ | Personalised Online | PerFRDiff + PRA + EEG | Frozen generic backbone + Personalised Residual Adapter (autoregressive windows) |
31
+ | Personalised Offline | PerFRDiff + PRA + EEG | Frozen generic backbone + Personalised Residual Adapter (full-sequence) |
32
+
33
+ ## Repository Layout
34
+
35
+ ```
36
+ CaReDiff/
37
+ β”œβ”€β”€ generic/
38
+ β”‚ β”œβ”€β”€ online/ prior + denoiser + EEG head (checkpoint_120.pth)
39
+ β”‚ └── offline/ prior + denoiser + EEG head (checkpoint_120.pth)
40
+ └── personalised/
41
+ β”œβ”€β”€ online/ shared backbone + 3 adapters (personality / lhfb / both)
42
+ └── offline/ shared backbone + 3 adapters (personality / lhfb / both)
43
+ ```
44
+
45
+ Each generic track folder contains:
46
+
47
+ ```
48
+ <track>/
49
+ β”œβ”€β”€ DiffusionPriorNetwork/checkpoint_120.pth
50
+ β”œβ”€β”€ CausalTransformerDenoiser/checkpoint_120.pth
51
+ └── EEGPredictionHead/checkpoint_120.pth
52
+ ```
53
+
54
+ ## Usage
55
+
56
+ 1. Clone the code repository:
57
+ ```bash
58
+ git clone https://github.com/smu-ivpl/CaReDiff
59
+ ```
60
+ 2. Set up the environment (see the [code README](https://github.com/smu-ivpl/CaReDiff)):
61
+ ```bash
62
+ conda create -n react python=3.10 && conda activate react
63
+ conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia
64
+ conda install -c fvcore -c iopath -c conda-forge fvcore iopath
65
+ pip install -r generic/code/requirements.txt
66
+ ```
67
+ 3. Download the checkpoints from this repo and place them under `save/`. For the generic tracks:
68
+ ```
69
+ save/motion_diffusion/react_2025/
70
+ β”œβ”€β”€ online/checkpoints/pretrained/
71
+ β”‚ β”œβ”€β”€ DiffusionPriorNetwork/checkpoint_120.pth
72
+ β”‚ β”œβ”€β”€ CausalTransformerDenoiser/checkpoint_120.pth
73
+ β”‚ └── EEGPredictionHead/checkpoint_120.pth
74
+ └── offline/checkpoints/pretrained/
75
+ └── ... (same structure)
76
+ ```
77
+ 4. Run evaluation (see below).
78
+
79
+ Full placement instructions, SHA-256 checksums, and per-track details are in each variant's `checkpoints/README.md` in the code repository.
80
+
81
+ ### Generic Evaluation
82
+
83
+ ```bash
84
+ # Generic Online
85
+ python main.py --config-name generic_online/motion_diffusion \
86
+ stage=test data_dir=./datasets/REACT2026/ \
87
+ trainer.batch_size=1 resume_id=pretrained
88
+
89
+ # Generic Offline
90
+ python main.py --config-name generic_offline/motion_diffusion \
91
+ stage=test data_dir=./datasets/REACT2026/ \
92
+ trainer.batch_size=1 resume_id=pretrained
93
+ ```
94
+
95
+ ### Personalised Evaluation
96
+
97
+ Each personalised track uses a frozen generic backbone plus one of three
98
+ condition adapters (`personality` / `lhfb` / `both`). Download the
99
+ `personalised/<track>/` folder and set `PKG` to its parent absolute path; the
100
+ commands reference every weight explicitly through `PKG`.
101
+
102
+ ```bash
103
+ PKG=<absolute path of the downloaded personalised folder>
104
+
105
+ # Personalised Offline (personality condition)
106
+ python main.py --config-name g2p_delta stage=test task=offline \
107
+ data_dir=<MARS_ROOT> run_id=eval_offline_personality \
108
+ trainer.batch_size=4 num_gts=10 \
109
+ trainer.generic.eval_condition_mode=matched \
110
+ trainer.generic.eval_eeg=false \
111
+ trainer.main_model.args.personal_condition_mode=personality_only \
112
+ resume_id=personality \
113
+ trainer.ckpt_dir=$PKG/offline/adapters \
114
+ trainer.pretrained.diffusion_decoder=$PKG/offline/backbone/CausalTransformerDenoiser/checkpoint_120.pth \
115
+ trainer.pretrained.diffusion_prior=$PKG/offline/backbone/DiffusionPriorNetwork/checkpoint_120.pth \
116
+ trainer.pretrained.eeg_head_checkpoint=$PKG/offline/backbone/EEGPredictionHead/checkpoint_120.pth
117
+
118
+ # Personalised Online (personality condition)
119
+ python main.py --config-name g2p_delta_online stage=test task=online \
120
+ data_dir=<MARS_ROOT> run_id=eval_online_personality \
121
+ trainer.batch_size=4 num_gts=10 \
122
+ trainer.generic.eval_condition_mode=matched \
123
+ trainer.generic.eval_eeg=false \
124
+ trainer.main_model.args.personal_condition_mode=personality_only \
125
+ trainer.model.diff_model.diffusion_decoder.args.past_l_emotion_drop_prob=0.2 \
126
+ resume_id=personality \
127
+ trainer.ckpt_dir=$PKG/online/adapters \
128
+ trainer.pretrained.diffusion_decoder=$PKG/online/backbone/CausalTransformerDenoiser/checkpoint_120.pth \
129
+ trainer.pretrained.diffusion_prior=$PKG/online/backbone/DiffusionPriorNetwork/checkpoint_120.pth \
130
+ trainer.pretrained.eeg_head_checkpoint=$PKG/online/backbone/EEGPredictionHead/checkpoint_120.pth
131
+ ```
132
+
133
+ For the `lhfb` / `both` conditions, change `resume_id` (`lhfb` or `both`) and
134
+ `personal_condition_mode` (`3dmm_only` or `3dmm_personality`) accordingly. For
135
+ the online track, keep `past_l_emotion_drop_prob=0.2` β€” it enables the
136
+ past-listener conditioning pathway and is required to reproduce the reported
137
+ numbers.
138
+
139
+ ## Additional Requirements
140
+
141
+ - **Post-processor (EmotionVAE) checkpoint** β€” required for evaluation on every `stage=test` run. Obtain from the [official REACT 2026 baseline](https://github.com/reactmultimodalchallenge/baseline_react2026) and place at `pretrained_models/post_processor/checkpoint.pth`.
142
+ - **PIRender + FaceVerse** β€” needed only for FRREa (rendered-frame FID) evaluation.
143
+ - **MARS dataset** β€” obtain through the challenge organisers.
144
+
145
+ ## Metrics
146
+
147
+ | Metric | Description |
148
+ |--------|-------------|
149
+ | FRC ↑ | Facial Reaction Consistency |
150
+ | FRD ↓ | Facial Reaction Distance (FID-based) |
151
+ | TLCC ↑ | Time-Lagged Cross-Correlation |
152
+ | S_MSE ↓ | Smoothness (MSE of consecutive frames) |
153
+ | FRVar ↑ | Facial Reaction Variance |
154
+ | FRREa ↓ | Facial Reaction Realism (FID on rendered frames) |
155
+
156
+ ## Citation
157
+
158
+ ```bibtex
159
+ @article{song2023multiple,
160
+ title={Multiple Appropriate Facial Reaction Generation in Dyadic Interaction Settings: What, Why and How?},
161
+ author={Song, Siyang and Spitale, Micol and Luo, Yiming and Bal, Batuhan and Gunes, Hatice},
162
+ journal={arXiv preprint arXiv:2302.06514},
163
+ year={2023}
164
+ }
165
+
166
+ @inproceedings{song2025react,
167
+ title={React 2025: the third multiple appropriate facial reaction generation challenge},
168
+ author={Song, Siyang and Spitale, Micol and Kong, Xiangyu and Zhu, Hengde and Luo, Cheng and Palmero, Cristina and Barquero, German and others},
169
+ booktitle={Proceedings of the 33rd ACM International Conference on Multimedia},
170
+ pages={13979--13984},
171
+ year={2025}
172
+ }
173
+ ```
174
+
175
+ ## Acknowledgement
176
+
177
+ - [FaceVerse](https://github.com/LizhenWangT/FaceVerse)
178
+ - [PIRender](https://github.com/RenYurui/PIRender)
179
+ - [REACT 2026 Baseline](https://github.com/reactmultimodalchallenge/baseline_react2026)
180
+
181
+ ## License
182
+
183
+ MIT