← 阅读室全部精读正在排版公式与图表…
PAPER ANALYZER · P11 · 细粒度方向

OV-MER:开放词汇情绪识别如何定义和评价

从不固定标签集合到情绪轮,理解细粒度任务的尺子

Lian 等 · ICML 2025 · PMLR 267:37015–37050 · 学术型 · 核查于2026-10-23

一句话总结

OV-MER 允许任意类型与数量的情绪标签,但结果依赖线索质量、语义分组及评价粒度。

开放词汇究竟开放了什么

OV-MER 的完整标题是 OV-MER: Towards Open-Vocabulary Multimodal Emotion Recognition,发表于 ICML 2025。它把任务定义为:对一段具有视频、音频和字幕的片段,允许预测任意类型、任意数量的情绪词。传统六分类只能从六个词选一个;固定多标签任务可以选多个,但候选清单仍有限;开放词汇进一步允许表达训练标签清单之外的情绪。

原文 Figure 1 用标签类型、标签数量和表达方式解释这个变化。“惊讶、紧张、不满”可以同时存在,一句“他很生气”可能只覆盖其中一部分。这里的开放不是把陌生样本拒绝为“未知类”,也不是随意罗列所有情绪;预测仍需与片段证据一致,否则精确率会下降。先分清任务定义,比记住模型名字更重要。

与前序 EMER 相比,本文把开放词汇问题、数据集与评价设计进一步系统化。两个版本都涉及三百三十二个片段,但本篇 OV-MERD 的最终情绪类别统计为二百三十六,不是 EMER v6 的三百零一。它使用 F1 衡量精确率与召回率,而不是前序工作的算术平均,因此相同的预测也可能得到不同的总分。

输入可以写成一个样本的三元组:无声视频提供表情和动作,原始音频提供声学线索,字幕提供语言内容。输出先是一段解释,再由抽取器得到集合。集合大小不固定,顺序通常不影响评分,但近义词规范化、粒度层级和抽取失败会影响结果。这些后处理不是无关紧要的工具,而是实验定义的一部分。

OV-MERD 如何标注:检查点必须看清

Figure 2 的视觉预标注使用 GPT-4V 读取三张均匀采样帧,音频预标注使用 SALMONN,随后由专业标注者分别检查。这里与 EMER v6 的音频环节不同。标注者可以查看完整视频并补充快速动作,所以人工核验后的 CLUE 不能与只观察稀疏帧的自动模型视为同等输入条件。

作者聘请八名熟悉情感计算的标注者,先用十二个已有一致意见的样本筛选。两轮检查每轮四人,人员不重叠。第一轮结果合并后交第二轮审查,目的是减少缺漏与错误。重要细节是每个保留标签至少得到两轮中各一人的确认,而不是八人全体一致;这是一种兼顾覆盖的规则,不等价于严格多数投票。

经检查的视觉、音频线索再与字幕交给 GPT-3.5 整合为 CLUE-Multi。作者说明合并描述没有再进行同样的人工检查。即使输入线索可靠,整合时仍可能发生不恰当归因或冲突处理。最后从中英文描述抽取情绪候选并人工检查标签,描述的检查状态与最终标签的检查状态应分开记录。

数据含三百三十二个样本,每段可有一至九个标签,多数为二至四个;许多片段长度在一至四秒。短片段让表情与语气更集中,也可能缺失前后文。像“他是在开玩笑还是嘲讽”这样的判断往往需要社会语境,因此开放标签并不能自动消除标注主观性。增加标签细度反而让分歧更容易显现。

Figure 14 展示自动预标注与人工检查的具体差异,Figure 15、16 展示标注界面,Figure 17、18 展示多人给出的标签。初学者可以据此理解为什么“confused”“worried”“serious”会被不同观察者选中。阅读这些例子时,应关注被删除或新增的证据,而不只是记住最终的一串情绪词。

flowchart TD
 V[三帧视频] --> GV[GPT4V视觉线索]
 A[音频] --> GA[SALMONN音频线索]
 GV --> H[两轮人工检查]
 GA --> H
 H --> C[结合字幕生成CLUE Multi]
 C --> Y[中英文抽取与标签审核]
 Y --> D[OV MERD参考集合]
 P[模型生成描述] --> E[抽取与分组]
 D --> M[精确率 召回率 F1]
 E --> M

评价:先决定哪些词算同一种情绪

三个原文关键词是“open-vocabulary”“emotion wheel”“grouping”。开放词汇意味着不能逐字比较答案:annoyed 和某些上下文中的 angry 接近,但不一定在所有粒度下完全相同。分组规则相当于一把尺子,尺子粗细改变,两个预测的距离也会改变。论文比较大模型分组与依据情绪轮进行的匹配。

默认 GPT 分组让语言模型依据语义归并标签;替代方案先规范词形,再合并同义词,最后用五种情绪轮把细标签投到较粗层级。第一层与第二层表示不同的粗细。细标签到粗标签可以是确定的多对一;反向从粗到细可能有多个候选,不能假装是无歧义的逆函数。原文某处方向措辞易混,复现时应以明确映射表为准。

$$Y^{(m)}=\{g_m(y):y\in Y\}$$

分组过程的教学重写。g_m 是第 m 套固定映射,输入原始情绪词,输出统一粒度的类别。预测与参考必须用同一映射,并在映射后去重。例如两个近义词若都映成同一个类别,不能在分母里重复计数。

$$P_s=|Y_s\cap\widehat Y_s|/|\widehat Y_s|$$

原文 Eq.3 的精确率。模型给出四个词,其中两个与参考匹配,精确率就是二分之一。这个量限制通过罗列大量情绪碰运气的策略。空预测应在实现中单独处理,并保留该样本而不是悄悄从平均值中删除。

$$R_s=|Y_s\cap\widehat Y_s|/|Y_s|$$

原文 Eq.3 的召回率。若参考有三个情绪,找到两个,召回率为三分之二。它奖励覆盖复合状态,防止模型只输出一个最安全的常见类别。精确率与召回率回答不同问题,因此总分之外应同时报告它们。

$$F_s=\frac{2P_sR_s}{P_s+R_s}$$

原文 Eq.4 的调和平均。精确率为一、召回率为二分之一时,F1 为三分之二,而 EMER 的算术平均为四分之三。调和平均更受较小项限制。这是版本间不能直接比较分数的具体数学原因。

$$J_{m,n}=\frac1N\sum_{i=1}^{N}\frac{|Y_m^i\cap Y_n^i|}{|Y_m^i\cup Y_n^i|}$$

附录 Eq.5 的标注一致性。m、n 表示两位标注者,N 为样本数。每个样本先计算集合交并比,再求平均。它不把某位标注者设为绝对真值;用这个量观察审核前后趋同,比只给出“专家审核过”更具体。

情绪轮并非价值中立的唯一标准。不同心理学组织方式会把同一细词归到不同上位类;中文与英文之间也不存在总是一对一的对应。因而多套轮的平均是稳健性检查的一种选择,不是消除文化差异的证明。如果你关心细粒度区别,过粗的映射还可能把真正重要的差异全部抹掉。

实验读法:识别质量与人工线索上界分开

原文 Table 2:英文 GPT 分组指标,百分制
方法/输入PRF1
Qwen-Audio49.4231.0438.13
Chat-UniVi53.6852.5053.08
GPT-4V48.5264.8655.51
CLUE-Text54.4139.8446.00
CLUE-Video63.2958.0560.55
CLUE-Audio67.5463.3065.35
CLUE-Multi80.0380.0780.05

CLUE-Multi 是基于经检查线索的参考条件,不能解释为一个零人工系统达到八十分。它与自动 MLLM 之间的差距同时包含观察质量、人工补充和整合方式的差异。GPT-4V 的召回高而精确率较低,体现更宽的情绪覆盖伴随更多多报;Chat-UniVi 两项接近,错误结构不同。比较模型应该保留这种差异。

原文 Table 3 比较分组策略,Chat-UniVi 在 GPT 分组下 F1 为五十三点零八,词形规范化为二十八点八九,同义合并为三十三点二三,某情绪轮粗层级为五十七。变化并不是模型重新训练了,而是尺子改变了。论文报告多轮组合与 GPT 指标的相关系数约零点九四二,这支持趋势相近,不证明逐样本判定完全等价。

原文 Tables 8–9:两轮标注者的成对 Jaccard,一轮与二轮为不同人员
配对位置第一轮第二轮
第1人与第2人0.570.66
第1人与第3人0.470.71
第1人与第4人0.510.77
第2人与第3人0.490.64
第2人与第4人0.480.67
第3人与第4人0.460.69

第二轮的一致性较高,说明合并与再检查后标签更加趋同;但人员不同,且第二轮看到了已合并结果,所以不能把提升全部归因于标注者自身水平提高。这种设计更像逐步达成可接受的共同描述。若自己的课题要测量独立一致性,应另外保留不共享意见的盲标子集。

附录 Table 13 的字幕实验区分 S0 忽略文本、S1 联合提示、S2 先提取再整合。S2 总体有效,却不是每个语言和模型组合都最优,例如 Qwen-Audio 的中文 S1 高于 S2。论文中的小规模用户研究也只反映所抽样样本上的主观判断,不适合被改写成所有场景下的可靠性保证。

读源码:缓存与指标配置都属于实验状态

源码:OV-MER/evaluation-scoreonly.py,L125–140(固定提交 95b9257758df)

def calculate_ov_zeroshot(epoch_root, name2gt, llm, tokenizer, sampling_params, inter_print=True):
    
    # epoch_root=(name2reason) => openset
    openset_npz = epoch_root[:-4]+'-openset.npz'
    if not os.path.exists(openset_npz):
        extract_openset_batchcalling(reason_npz=epoch_root, store_npz=openset_npz,
                                     llm=llm, tokenizer=tokenizer, sampling_params=sampling_params)
        
    # 计算 EW-based metrics
    name2pred = {}
    filenames = np.load(openset_npz, allow_pickle=True)['filenames']
    fileitems = np.load(openset_npz, allow_pickle=True)['fileitems']
    for (name, item) in zip(filenames, fileitems):
        name2pred[name] = item
    whole_fscores = wheel_metric_calculation(name2gt=name2gt, name2pred=name2pred, inter_print=inter_print)
    return whole_fscores

这段作者仓库代码把描述文件转换为开放标签缓存,然后按样本名称建立字典。复现时第一项检查应是参考样本名和预测样本名是否完全相等,第二项是缓存由哪个模型、提示和温度生成。只比较文件数量不能排除错位;同一文件名覆盖旧生成结果也可能导致评价使用陈旧标签。

源码:AffectGPT/my_affectgpt/evaluation/ew_metric.py,L140–155(固定提交 95b9257758df)

    if level == 'level1':
        candidate_metrics = [
                            'case3_wheel1_level1',
                            'case3_wheel2_level1',
                            'case3_wheel3_level1',
                            'case3_wheel4_level1',
                            'case3_wheel5_level1',
                            ]
    elif level == 'level2':
        candidate_metrics = [
                            'case3_wheel1_level2',
                            'case3_wheel2_level2',
                            'case3_wheel3_level2',
                            'case3_wheel4_level2',
                            'case3_wheel5_level2',
                            ]

后续统一仓库的默认 level1 分支列出五个情绪轮的粗层级,level2 分支列出对应细层级。这验证了评价配置必须显式记录。当前仓库默认走情绪轮路线,并不自动重现本篇 Table 2 的 GPT 分组分数;要复现对应表格,必须保持原来的分组方案、抽取器版本和语言设置。

源码还把标签抽取的生成温度设为非零,因此相同描述重复抽取可能不完全相同。可以先缓存抽取结果,再单独测试不同映射规则,这样把生成变化和评分变化分开。未经实际运行的依赖安装、权重下载及全部分数,本篇不声称已经复现;这里完成的是源码核对与可执行实验拆解。

初学者的具体路线:从集合到开放词汇研究

第一阶段用纸笔构造二十条预测与参考标签,至少包含同义词、上下位词、一个样本多个情绪、空预测和重复词。建立三列:原始词集合、词形统一集合、语义分组集合。验收条件是同一模型预测在三种尺度下分数如何变化都能解释,而且不会把多标签 F1 叫作六分类准确率。

第二阶段制作一个固定的二十样本评价包,保存 sample_id、描述、标签、映射版本和处理状态。对每一条缺失预测明确赋予处理结果,对未知情绪词单列记录,禁止临时把难词删掉。验收产物包括每样本 P、R、F1、映射失败清单和至少五个评分争议例子;这个小包无需先训练大模型。

第三阶段比较中文与英文的标签抽取。固定视频与描述含义,只改变抽取语言,检查“尴尬、无奈、不满”等词是否被稳定映射。不要直接把所有语言差异归为文化差异,因为翻译质量、抽取器和情绪轮同样可能导致变化。验收是为每个差异标出最早发生变化的步骤,而不是只展示两组均分。

第四阶段再开展细粒度扩展:挑选三组容易混淆的情绪,例如惊讶与困惑、讽刺与幽默、紧张与担忧,给每组建立证据标准和反例。报告粗层级分数、细层级分数及人工证据核查。若粗指标提升而细指标不变,应如实说方法改善了大类判断,尚未证明能区分更细的心理状态。

跨场景扩展应固定评价词表与映射,在不同来源视频上检查相同情绪词是否仍然可观察。按说话者或视频来源隔离训练与测试,避免同一角色和片段进入两侧。先完成一个源场景与一个目标场景的错误分析,再决定是否需要域适应模型;否则模型复杂化可能掩盖标签定义本身不一致的问题。

局限:作者的边界与独立判断

作者在附录明确讨论了中文演员与中文标注者占主导、文化范围有限、模型覆盖不完整,以及真实自发情绪和公平性仍待研究。电影片段具有清楚的表演线索,也可能偏离日常交流;作品质量高不意味着角色表演就是某个人真实的心理状态。数据集展示的是观察者对片段的情绪解释。

本文独立判断是:开放词汇提高表达能力,同时把评价依赖从固定类别转移到语义裁判。若裁判偏好冗长、常见或某种语言表达,就可能系统性改变排序。最可行的改进是公布逐样本映射、分歧与置信信息,并在小规模盲审中检验,而不是用一句“使用大模型评价”替代评价有效性的论证。

把机制变成可以复查的实验记录

一个容易忽略的操作是映射后去重。参考词为“恼火、愤怒”,预测词为“愤怒”,若二者被同一粗情绪轮归入同一类,规范化后的参考集合只有一个元素。继续用两个作为召回率分母会错误惩罚预测。反过来,若研究问题本来就要求区分两者,就不该用这个粗映射掩盖区别;指标粒度应由问题决定。

宏平均与微平均也应先用两例算清。一个样本有一个标签、另一个有九个标签,逐样本平均让两个片段权重相同;把所有交集和分母加起来会让标签多的片段影响更大。它们都可以回答某类问题,但不能在表格中不加说明地交换。对本文的复现,应保留原文与代码各自的汇总顺序。

未知词处理决定开放词汇任务是否真的开放。把所有不在情绪轮里的词直接删除,会让系统对新情绪表达的错误不再受到惩罚。更透明的办法是记录未映射词及其数量,单独报告覆盖率,并在固定规则下处理。若人工临时解释每个陌生词,应把这部分人工参与明确列入评价成本。

原文用户研究问的是描述是否有信息、是否与视频相符,它与情绪标签的集合分数不是相同问题。一个描述可能内容丰富但存在少量虚构,也可能标签准确却几乎不提供依据。因此你的实验表可以并排放集合指标与小规模盲审结果,但不要把主观评价比例直接合并为一个新的总准确率。

尝试一个反例练习:让模型输出包含全部常见情绪的一长串标签。你应该预期召回可能提高,而精确率下降;随后改变情绪轮粒度,观察标签被合并后惩罚是否减弱。这个练习揭示评价规则可能被策略性利用,也能帮助判断某个新方法是更会识别,还是只是输出更多模糊词语。

最终可以交付一个开放标签审计包,包含二十条固定描述、三种映射、逐样本评分、未知词列表和五个争议案例。验收时随机抽三条,要求不借助程序解释从描述到分数的每一步。只有这个链条稳定后,增加模型或样本规模才会产生可解释的研究增量,否则实验变化很难归因。

原文与核验边界

论文原文及出版信息。本篇依据全文、附录和表格编写;文中的教学计算与研究建议均不冒充作者实验证据。核验日期:2026-10-23。

自己的解释与验收记录

写出一条输入到输出的链路、一个关键公式的含义,以及你完成的最小检查。笔记仅保存在当前浏览器,可从主站「我的学习笔记」导出。