wudq commited on
Commit
cb36709
Β·
verified Β·
1 Parent(s): abef828

Add comprehensive EmObserver model card

Browse files
Files changed (1) hide show
  1. README.md +313 -0
README.md ADDED
@@ -0,0 +1,313 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model:
4
+ - Qwen/Qwen3-VL-8B-Thinking
5
+ pipeline_tag: image-text-to-text
6
+ library_name: transformers
7
+ language:
8
+ - en
9
+ tags:
10
+ - qwen3-vl
11
+ - vision-language
12
+ - multimodal
13
+ - visual-emotion
14
+ - affective-computing
15
+ - emotional-intelligence
16
+ - reasoning
17
+ datasets:
18
+ - wudq/MVEI_PLUS
19
+ model-index:
20
+ - name: EmObserver
21
+ results:
22
+ - task:
23
+ type: image-text-to-text
24
+ name: Emotion Statement Judgement
25
+ dataset:
26
+ type: wudq/MVEI_PLUS
27
+ name: MVEI
28
+ split: test
29
+ metrics:
30
+ - type: accuracy
31
+ name: Accuracy
32
+ value: 86.23
33
+ - task:
34
+ type: image-text-to-text
35
+ name: Visual Emotion Classification
36
+ dataset:
37
+ type: wudq/MVEI_PLUS
38
+ name: VECBench
39
+ split: test
40
+ metrics:
41
+ - type: accuracy
42
+ name: Overall accuracy
43
+ value: 63.42
44
+ - task:
45
+ type: image-text-to-text
46
+ name: Single-image Emotion Perception
47
+ dataset:
48
+ type: wudq/MVEI_PLUS
49
+ name: EEmo-Bench Single Perception
50
+ split: test
51
+ metrics:
52
+ - type: accuracy
53
+ name: Overall accuracy
54
+ value: 71.94
55
+ - task:
56
+ type: image-text-to-text
57
+ name: Image-pair Emotion Perception
58
+ dataset:
59
+ type: wudq/MVEI_PLUS
60
+ name: EEmo-Bench Pair Perception
61
+ split: test
62
+ metrics:
63
+ - type: accuracy
64
+ name: Overall accuracy
65
+ value: 71.47
66
+ ---
67
+
68
+ # EmObserver
69
+
70
+ Official model release for **β€œMVEI & EmObserver: Empowering MLLM-Oriented Visual Emotional Intelligence via Emotion Statement Judgement.”**
71
+
72
+ EmObserver is an emotion-oriented multimodal large language model built from [Qwen3-VL-8B-Thinking](https://huggingface.co/Qwen/Qwen3-VL-8B-Thinking). It is optimized through a four-stage training recipe for visual emotion understanding, Emotion Statement Judgement (ESJ), emotion classification, and single-/multi-image affective reasoning.
73
+
74
+ The model accepts one or more images with a natural-language question and produces a reasoning-style response followed by a concise answer:
75
+
76
+ ```text
77
+ <think>...</think><answer>...</answer>
78
+ ```
79
+
80
+ ## πŸ”— Project map
81
+
82
+ | Resource | Description | Link |
83
+ | --- | --- | --- |
84
+ | Paper | MVEI & EmObserver | [arXiv:2607.21061](https://arxiv.org/abs/2607.21061) |
85
+ | Official code | Inference, evaluation, and four-stage training | [wdqqdw/EmObserver](https://github.com/wdqqdw/EmObserver) |
86
+ | Expanded release | Benchmarks, images, predictions, and training data | [wudq/MVEI_PLUS](https://huggingface.co/datasets/wudq/MVEI_PLUS) |
87
+ | EmObserver results | Released predictions and metric summaries | [MVEI_PLUS/baselines/Qwen3-VL-EMOBSERVER](https://huggingface.co/datasets/wudq/MVEI_PLUS/tree/main/baselines/Qwen3-VL-EMOBSERVER) |
88
+ | Evaluation data | Standardized MVEI, EEmo-Bench, and VECBench metadata | [MVEI_PLUS/benchmarks](https://huggingface.co/datasets/wudq/MVEI_PLUS/tree/main/benchmarks) |
89
+ | Training data | Four-stage data and GPT-5.5-filtered INSETS-462k | [MVEI_PLUS/training_data](https://huggingface.co/datasets/wudq/MVEI_PLUS/tree/main/training_data) |
90
+ | Original MVEI dataset | Original benchmark release | [wudq/MVEI](https://huggingface.co/datasets/wudq/MVEI) |
91
+ | Original INSETS-462k | Original training-data release | [wudq/INSETS-462k](https://huggingface.co/datasets/wudq/INSETS-462k) |
92
+ | Original conference code | Earlier MVEI codebase and project release | [wdqqdw/MVEI](https://github.com/wdqqdw/MVEI) |
93
+ | Base model | Qwen3-VL-8B-Thinking | [Qwen/Qwen3-VL-8B-Thinking](https://huggingface.co/Qwen/Qwen3-VL-8B-Thinking) |
94
+
95
+ ## πŸš€ Quick start with Transformers
96
+
97
+ Install a compatible PyTorch build first, then install the model dependencies:
98
+
99
+ ```bash
100
+ python3 -m pip install -U "transformers>=5.9.0" accelerate pillow
101
+ ```
102
+
103
+ The following example uses the same MVEI question form as the released test metadata:
104
+
105
+ ```python
106
+ import torch
107
+ from transformers import AutoProcessor, Qwen3VLForConditionalGeneration
108
+
109
+ model_id = "wudq/EmObserver"
110
+
111
+ model = Qwen3VLForConditionalGeneration.from_pretrained(
112
+ model_id,
113
+ dtype=torch.bfloat16,
114
+ device_map="auto",
115
+ )
116
+ processor = AutoProcessor.from_pretrained(model_id)
117
+
118
+ image_url = (
119
+ "https://huggingface.co/datasets/wudq/MVEI_PLUS/resolve/main/"
120
+ "benchmarks/MVEI/images/contentment/contentment_14236.jpg"
121
+ )
122
+ prompt = (
123
+ "Is the following statement correct about the image? Upon viewing this image, "
124
+ "observers, despite various individual or contextual factors, are most likely "
125
+ "to experience negative emotions. Choose the answer from "
126
+ "{'A': 'Correct.', 'B': 'Incorrect.'}. Answer in the format of "
127
+ "<think>...</think><answer>...</answer>."
128
+ )
129
+
130
+ messages = [
131
+ {
132
+ "role": "user",
133
+ "content": [
134
+ {"type": "image", "url": image_url},
135
+ {"type": "text", "text": prompt},
136
+ ],
137
+ }
138
+ ]
139
+
140
+ inputs = processor.apply_chat_template(
141
+ messages,
142
+ tokenize=True,
143
+ add_generation_prompt=True,
144
+ return_dict=True,
145
+ return_tensors="pt",
146
+ ).to(model.device)
147
+
148
+ generated = model.generate(**inputs, max_new_tokens=1024)
149
+ trimmed = [output[len(input_ids):] for input_ids, output in zip(inputs.input_ids, generated)]
150
+ response = processor.batch_decode(
151
+ trimmed,
152
+ skip_special_tokens=True,
153
+ clean_up_tokenization_spaces=False,
154
+ )[0]
155
+ print(response)
156
+ ```
157
+
158
+ For multi-image questions, add each image to `content` before the text item:
159
+
160
+ ```python
161
+ "content": [
162
+ {"type": "image", "url": first_image_url},
163
+ {"type": "image", "url": second_image_url},
164
+ {"type": "text", "text": pair_prompt},
165
+ ]
166
+ ```
167
+
168
+ FlashAttention 2 can reduce memory use on supported hardware. Install a build compatible with your CUDA/PyTorch stack, then pass `attn_implementation="flash_attention_2"` to `from_pretrained`.
169
+
170
+ ## πŸ§ͺ Full evaluation with the official code
171
+
172
+ The official repository provides the vLLM inference wrapper, benchmark loaders, output parsing, and metric calculators:
173
+
174
+ ```bash
175
+ git clone https://github.com/wdqqdw/EmObserver.git
176
+ cd EmObserver
177
+
178
+ python3 -m pip install -r requirements.txt
179
+ hf download wudq/MVEI_PLUS --repo-type dataset --local-dir public_data
180
+ hf download wudq/EmObserver --local-dir models/EmObserver
181
+
182
+ python3 -m evaluate.infer_and_eval \
183
+ --engine qwen3_vl_vllm \
184
+ --size emobserver \
185
+ --gpu_n 8
186
+ ```
187
+
188
+ Adjust `--gpu_n` to the visible GPUs that can hold the checkpoint. Use `--bench` to select a subset from `MVEI`, `VECBench`, `EEmo-Bench-Single-Perception`, and `EEmo-Bench-Pair-Perception`.
189
+
190
+ ## πŸ’¬ Benchmark-style examples
191
+
192
+ The examples below reproduce question forms from the standardized test metadata. The listed answer is the reference final answer; reasoning text may vary.
193
+
194
+ ### 1. Emotion Statement Judgement β€” MVEI
195
+
196
+ **Image:** [contentment_14236.jpg](https://huggingface.co/datasets/wudq/MVEI_PLUS/resolve/main/benchmarks/MVEI/images/contentment/contentment_14236.jpg)
197
+
198
+ ```text
199
+ Is the following statement correct about the image? Upon viewing this image,
200
+ observers, despite various individual or contextual factors, are most likely
201
+ to experience negative emotions. Choose the answer from
202
+ {'A': 'Correct.', 'B': 'Incorrect.'}. Answer in the format of
203
+ <think>...</think><answer>...</answer>.
204
+ ```
205
+
206
+ Reference final answer:
207
+
208
+ ```text
209
+ <answer>Incorrect.</answer>
210
+ ```
211
+
212
+ ### 2. Single-image emotion perception β€” EEmo-Bench
213
+
214
+ **Image:** [EEmo-Bench single image 1](https://huggingface.co/datasets/wudq/MVEI_PLUS/resolve/main/benchmarks/EEmo-Bench/EEmo-Bench_single/images/1.jpg)
215
+
216
+ ```text
217
+ What do you think of surprise as one of the three main emotions you felt from
218
+ this image? Choose the answer from {'A': 'No', 'B': 'Yes'}. Answer in the
219
+ format of <think>...</think><answer>...</answer>.
220
+ ```
221
+
222
+ Reference final answer:
223
+
224
+ ```text
225
+ <answer>Yes.</answer>
226
+ ```
227
+
228
+ ### 3. Image-pair emotion comparison β€” EEmo-Bench
229
+
230
+ **Images:** [image 579](https://huggingface.co/datasets/wudq/MVEI_PLUS/resolve/main/benchmarks/EEmo-Bench/EEmo-Bench_pair/images/579.jpg) and [image 100](https://huggingface.co/datasets/wudq/MVEI_PLUS/resolve/main/benchmarks/EEmo-Bench/EEmo-Bench_pair/images/100.jpg)
231
+
232
+ ```text
233
+ Which emotion is evoked in both images and is common to them? Choose the
234
+ answer from {'A': 'Neutral', 'B': 'Fear', 'C': 'Sadness', 'D': 'Joy'}.
235
+ Answer in the format of <think>...</think><answer>...</answer>.
236
+ ```
237
+
238
+ Reference final answer:
239
+
240
+ ```text
241
+ <answer>Joy.</answer>
242
+ ```
243
+
244
+ ### 4. Visual emotion classification β€” VECBench
245
+
246
+ **Image:** [abstract_0001.jpg](https://huggingface.co/datasets/wudq/MVEI_PLUS/resolve/main/benchmarks/VECBench/images/Abstract/testImages_abstract/abstract_0001.jpg)
247
+
248
+ ```text
249
+ Which emotion might this image evoke? Choose the most likely one from
250
+ ['Amusement', 'Anger', 'Awe', 'Content', 'Disgust', 'Excitement', 'Fear',
251
+ 'Sad']. Think step by step. Respond in the format:
252
+ <think>{your reasoning}</think><answer>{your final answer}</answer>.
253
+ ```
254
+
255
+ Reference final answer:
256
+
257
+ ```text
258
+ <answer>Content.</answer>
259
+ ```
260
+
261
+ ## πŸ“Š Released evaluation results
262
+
263
+ These values are taken from the released EmObserver inference outputs in [MVEI_PLUS](https://huggingface.co/datasets/wudq/MVEI_PLUS/tree/main/baselines/Qwen3-VL-EMOBSERVER). They are intended to make the checkpoint release traceable; environment or decoding changes may produce different results.
264
+
265
+ | Benchmark | Metric | Result |
266
+ | --- | --- | ---: |
267
+ | MVEI | Overall accuracy | 86.23% |
268
+ | MVEI | Sentiment polarity | 86.47% |
269
+ | MVEI | Emotion interpretation | 83.55% |
270
+ | MVEI | Scene context | 90.30% |
271
+ | MVEI | Perception subjectivity | 86.06% |
272
+ | VECBench | Overall accuracy | 63.42% |
273
+ | EEmo-Bench Single | Overall accuracy | 71.94% |
274
+ | EEmo-Bench Pair | Overall accuracy | 71.47% |
275
+
276
+ ## πŸ‹οΈ Training overview
277
+
278
+ EmObserver is produced by the four-stage public training pipeline:
279
+
280
+ 1. supervised fine-tuning;
281
+ 2. GRPO-based reinforcement learning;
282
+ 3. on-policy self-distillation (OPSD);
283
+ 4. GRPO with an LLM-consistency reward.
284
+
285
+ The runnable scripts are in the [official code repository](https://github.com/wdqqdw/EmObserver/tree/main/training), and their released inputs are under [MVEI_PLUS/training_data](https://huggingface.co/datasets/wudq/MVEI_PLUS/tree/main/training_data). External judge credentials are not included; users must provide their own endpoint when reproducing the final stage.
286
+
287
+ ## ⚠️ Intended use and limitations
288
+
289
+ EmObserver is intended for research on visual emotion understanding, affective image analysis, multimodal reasoning, and benchmark development.
290
+
291
+ - Visual emotion is inherently subjective and culturally/contextually dependent. A model prediction should not be treated as a universal description of how every person will feel.
292
+ - The model may inherit social, cultural, demographic, and content biases from its base model and training data.
293
+ - The checkpoint is not designed for mental-health diagnosis, psychological profiling, surveillance, hiring, education assessment, or other high-stakes decisions about individuals.
294
+ - Generated reasoning can be plausible but factually or emotionally incorrect. Verify outputs when reliability matters.
295
+ - Users are responsible for reviewing the licenses, attribution requirements, privacy constraints, and redistribution terms of input images and downstream datasets.
296
+
297
+ ## πŸ“„ License
298
+
299
+ The checkpoint is released under the Apache 2.0 license, following its [Qwen3-VL-8B-Thinking](https://huggingface.co/Qwen/Qwen3-VL-8B-Thinking) base model. Third-party datasets and images retain their respective licenses and terms.
300
+
301
+ ## πŸ“ Citation
302
+
303
+ If you use EmObserver, MVEI, or the expanded release, please cite:
304
+
305
+ ```bibtex
306
+ @article{wu2026mvei_emobserver,
307
+ title = {MVEI \& EmObserver: Empowering MLLM-Oriented Visual Emotional Intelligence via Emotion Statement Judgement},
308
+ author = {Wu, Daiqing and Yang, Dongbao and Yao, Jiashu and Zhang, Hongrui and Ma, Can and Zhou, Yu and Zhao, Sicheng},
309
+ journal = {arXiv preprint arXiv:2607.21061},
310
+ year = {2026}
311
+ }
312
+ ```
313
+