西班牙巴斯克大学团队:当AI学会“看见“情绪的模糊地带
这项由西班牙巴斯克大学(UPV/EHU)、意大利萨伦托大学与意大利国家研究委员会应用科学与智能系统研究所(CNR)、以及马来西亚克兰丹大学数据科学与计算学院联合开展的研究,以预印本形式于2026年7月14日发布在学术平台arXiv上,编号为arXiv:2607.13250。这项研究的核心是为第11届ABAW(野外情感行为分析)竞赛提交的解决方案,名为AffectFlow-DINO,致力于让AI更真实地"理解"人脸上的情绪信号。
一、情绪识别为什么这么难?
每个人都有过这样的体验:在一张模糊的照片里,你看到一个人嘴角微微上扬,却说不清楚他到底是在笑还是只是放松了肌肉。人脸上的情绪信号天生就带有模糊性,尤其是在现实生活中拍摄的照片里——光线不好、角度刁钻、遮挡严重,或者表情本身就很细微。这对人眼来说已经够难了,对AI系统来说更是一个巨大的挑战。
现有的AI情绪识别系统大多像一个过于自信的学生:给它一张脸,它会毫不犹豫地说"这是愤怒,可信度99%"——即便这张脸其实可能是愤怒、也可能是厌恶、还可能是强忍着悲伤。这种"非此即彼"的确定性判断,恰恰忽略了人类情绪本身的复杂性和不确定性。
研究团队面对的是一个特别复杂的任务:不只是识别一个情绪,而是同时完成三件事。第一件是估计"效价"(valence,即情绪的积极或消极程度)和"唤起度"(arousal,即情绪的强烈程度)这两个连续的数值,数值范围在-1到1之间,就像给一段音乐打"悲伤程度"和"激昂程度"的分数。第二件是把人脸表情分成八种类别:中性、愤怒、厌恶、恐惧、高兴、悲伤、惊讶和"其他"。第三件是检测十二种动作单元(Action Units,简称AU),也就是面部肌肉的具体运动,比如眉毛上扬、嘴角下拉等,每一种都是独立的"是否激活"判断。
这三件事必须同时完成,而且使用的是同一批照片。更麻烦的是,这批数据极度不平衡——"高兴"和"中性"的样本多得要命,"恐惧"和"厌恶"却少到可怜,前者是后者的八倍以上。对于动作单元来说,情况更为极端:有一种AU在68%的照片里都是激活状态,而另一种却只有不到3%的照片里出现,两者相差了整整29倍。
二、一个懂得"也许"的AI
研究团队提出了一个核心思路,可以用一个比喻来理解:普通的AI识别系统像一个只会说"是"或"否"的裁判,而他们新设计的系统更像一个有经验的法医鉴定师,会说"根据现有证据,最可能的结论是A,但B和C也有相当的可能性,这张脸的表情存在一定的模糊空间"。
为了实现这个思路,研究团队引入了一种叫做"条件整流流"(Conditional Rectified Flow)的技术。这个名字听起来很深奥,但核心想法其实相当直观。把AI的预测过程比作一场从噪声出发的旅程:系统先随机生成一团"情绪噪声",然后通过学习好的路径,把这团噪声一步步引导到最终的预测结果。整流流的特点是,这条引导路径尽可能地走直线,不绕弯子,这让整个过程既快又稳定。
更关键的是,由于起点是随机的,每次旅程可以从不同的噪声出发,最终到达的位置会略有不同,形成一个预测的"分布范围"。系统在推理时会同时运行多条旅程(默认是16条),然后对结果取平均,就像问了16位专家同样的问题再汇总答案一样。这种方法既给出了具体的预测,又给出了预测的不确定性范围——当多条旅程的终点高度集中时,说明这张脸的情绪比较明确;当终点分散时,说明这张脸确实很难读懂。
整个预测结果被打包成一个22维的向量,里面同时包含了效价、唤起度、8种表情的概率,以及12种动作单元的激活状态。这22个维度被当作一个整体,在同一个空间里完成整流流的传输,让不同类型的情绪信息可以相互影响和约束。
三、系统的搭建方式
在技术实现上,研究团队构建的系统分成了几个紧密配合的部分,就像一条流水线。
第一个环节是视觉编码器,使用的是一个叫做DINOv3 ViT-S/16的预训练模型。这是一种基于"视觉变换器"(Vision Transformer)架构的模型,通过一种叫做DINO的自监督学习方式预训练,能够把一张224×224的人脸图片转换成一个包含丰富语义信息的特征向量。研究团队选择它而非另一种常见预训练方式(MAE,掩码自编码器)的原因是:DINO的训练方式让它特别善于捕捉空间上局部化的特征,而面部动作单元恰恰就是这样的信号——眉毛上扬是眉毛那块区域的变化,不是整张脸的变化。在早期实验中,视觉编码器的参数是冻结不动的,后续才进行微调。
第二个环节是共享投影头,把编码器输出的特征向量通过一个线性变换和激活函数映射到768维的工作空间,形成一个统一的"情绪嵌入"表示。
第三个环节是三个独立的确定性预测头,分别对应效价-唤起度回归(输出在-1到1之间)、表情分类(输出8个类别的概率)、以及动作单元检测(输出12个二分类结果)。每个预测头都是一个两层的MLP(多层感知机),带有层归一化、GELU激活函数和Dropout正则化。这三个头的预测结果会直接计算损失函数并反向传播梯度。
第四个环节就是核心创新——条件整流流头。它接受图像嵌入、当前时间步的"噪声-目标插值"以及时间步的正弦编码作为输入,学习预测当前位置到目标位置的"速度向量"。训练时,对于每个样本,系统会随机采样一个时间点t(0到1之间的均匀分布)和一个随机噪声,构造出插值状态,然后让流网络学习从这个状态到真实目标的方向。损失函数是预测速度与真实速度之间的均方误差,同时使用一个二值掩码来处理标注缺失的问题——如果某张图没有表情标注,那么表情相关的速度维度就不计入损失,这样缺失的标注不会干扰整个学习过程。
训练的总体目标是两部分的加权和:确定性多任务损失加上β倍的流损失。通过大量实验,研究团队发现β取0.5或1.0时效果最好,最终选用β=1.0作为默认值。
四、数据的倒三角难题
研究使用的数据集叫做s-Aff-Wild2,这是专门为这类挑战提供的野外人脸图像数据集。训练集包含142,382帧,但标注并不完整:有103,917帧有效价-唤起度标注,90,645帧有表情标注,103,316帧有动作单元标注。更麻烦的是,同时拥有三种标注的帧只占总数的36.6%,这意味着大部分时候,系统只能从部分信号中学习。
验证集包含26,876帧,效价-唤起度和动作单元的标注是完整的,但表情标注只覆盖了15,440帧。
数据的严重不平衡是这个任务最棘手的地方。在表情类别上,"其他"类占27.4%,"中性"占26.5%,"高兴"占20%,三者合计超过七成;而"恐惧"只有3.4%,"厌恶"只有3.5%,二者加起来还不到7%。对动作单元来说,AU25(嘴唇分开)在68%的有效训练行中是激活状态,而AU15(嘴角下拉)和AU23(嘴唇收紧)的正样本率只有2-5%,整体不平衡比高达29:1。
这种不平衡对普通的训练方式来说是致命的:损失函数会被多数类主导,少数类的学习信号被淹没。系统在"高兴"和"中性"上表现很好,但对"恐惧"几乎视而不见——不是因为学不会,而是因为"恐惧"的样本太少,训练时根本没机会充分学习。
五、一系列实验揭示的规律
研究团队进行了系统性的消融实验,覆盖了26种不同的设计选择,逐步解开了每个组件的贡献。这些实验的结果像一个逐步拼图的过程,每块拼图都揭示了一个规律。
最基础的对比是三种训练方式的比较。只用确定性监督(没有流损失)的模型在验证集上得到PMT L = 0.793;只用流损失(没有确定性任务损失)的模型得到0.773;两者联合训练的AffectFlow得到0.826。两种不匹配的"反常实验"——用流模型去做确定性解码,或者用确定性模型去做流解码——都会造成系统崩溃(分别是0.402和0.408),清楚地说明两种训练目标和两种解码方式必须配套使用。这个结果揭示了一个重要机制:确定性损失帮助共享嵌入学习到更好的情绪区分特征,进而提升流模型的质量;而流损失则在不损害确定性头的前提下,额外学会了概率分布。
在效价-唤起度预测上,流解码比确定性解码有显著提升,效价CCC(协同相关系数,衡量连续预测质量的指标,越接近1越好)从0.232提升到0.290,提升幅度达0.058。这个规律在所有实验中都保持一致:连续型目标(效价和唤起度)从分布平均中受益最多,因为这类信号本身就有多义性,取多次预测的平均会平滑掉随机误差,趋近真实值。
流损失权重β的实验显示,β在0.5到1.0之间是一个稳定的平台区,效果没有明显差别;一旦β升到2.0,流目标过于主导,总体性能反而下降。推理效率实验显示,采样数N从1增加到8时效果有明显改善,但从8到32几乎没有变化,说明整流流的直线轨迹特性让它只需少数步骤就能稳定。欧拉积分步数T从10到50的变化影响也很小,表明这个轻量级的流模型并不需要太多积分步骤。
六、冻结的编码器撑不住,微调才是关键
在冻结视觉编码器的情况下,最好的成绩已经被逼到了极限。研究团队决定尝试用一个很小的学习率(1e-5,是主学习率1e-4的十分之一)对视觉编码器进行端到端微调,让它适应情绪识别这个具体任务。结果是立竿见影的:PMT L从冻结骨干网络时的最好结果0.831一跃升至1.045,是整个研究中单步最大的提升。
然而微调带来了一个意外:微调后,确定性解码(1.045)反而比流解码(0.928)表现更好,与冻结情况下的规律相反。研究团队分析认为,这是因为骨干网络适应后,确定性头变得更强,而流头的参数没有同步更新,处于"跟不上"的状态。
解决方案是在微调过程中重新激活流目标,也就是说,在低学习率微调骨干网络的同时,也让流损失继续起作用。当β=0.5时,流重调版本的确定性解码达到1.062;当β=1.0时,确定性解码进一步提升到1.073,主要受益于效价CCC的大幅改善(从0.308提升到0.387)。加上每个AU独立阈值校准后,这个版本达到1.123,是该研究在基础配置下的最高成绩。
在β=1.0的情况下,流解码反而比β=0.5时稍差(0.931对比0.956),说明更强的流目标让确定性头受益,但同时让流的分布"形状"发生了变化,不那么适合直接用流采样来解码。研究团队观察到,在所有经过微调的变体中,确定性解码都优于流解码,这表明流目标更像是一种帮助共享表示更好地结构化的正则化工具,而非最终解码时的必选路径。
七、用"逆向加权"对抗不平衡
面对严重的类别不平衡,研究团队尝试了一系列方法,结果有喜有忧。
在处理表情不平衡方面,他们先后尝试了四种修改:直接增大表情损失的权重、使用焦点损失(Focal Loss,这种方法会自动降低简单样本的权重、提升难样本的权重)、给每个任务单独设一个投影头,以及把这些方法组合起来。结果这四种方法全部失败——不仅没能提升表情识别的宏平均F1,还反而拉低了效价-唤起度的预测质量。核心原因在于:不管损失函数怎么变形,只要样本本身的分布没变,训练时多数类的梯度信号就会持续压制少数类。
真正有效的是使用加权随机采样器(WeightedRandomSampler),也就是在每个epoch里,给少数类的样本更高的被抽到的概率。这种结构性的数据采样改变真正解决了梯度被多数类淹没的问题,使表情宏平均F1从0.212提升到0.251,是所有冻结骨干网络实验中表情识别的最好结果。
对动作单元来说,研究团队为每个AU的二分类损失设置了正样本权重,权重等于负样本数量除以正样本数量。AU15的正样本权重因此高达41,AU23则是33.7。这种方法把AU的平均F1从0.384提升到了0.427,是有效的。不过,当这种方法与流解码结合时会出现问题:经过正样本加权训练后,模型预测的概率分布形状发生了系统性偏移,而流模型学到的是未加权状态下的目标分布,两者不兼容,导致流解码的性能大幅下降。这说明,一旦使用流模型,训练时的分布特性必须与流模型的假设保持一致。
八、不需要重训练,后校准能拯救被压制的信号
整个研究中最令人印象深刻的发现之一,来自一个完全无需重新训练的后处理步骤:阈值校准。
普通的动作单元检测默认使用0.5作为判定阈值,也就是说,如果sigmoid函数输出的概率超过50%,就判定为"激活"。但研究团队发现,对于那些极少激活的AU来说,由于训练时正样本太少,模型学到的概率值系统性地偏低。AU15的sigmoid输出几乎永远不会超过0.5,哪怕模型确实学到了一些区分信号。这就像一个明明知道答案的学生,因为太过保守,每次答题都把正确答案压在心里不说出来。
解决方法是在验证集上单独为每个AU搜索最优阈值,找到能最大化F1的临界点。AU15的最优阈值可能只有0.1,AU25(经常激活的)最优阈值可能是0.55。这种每个AU独立校准的方式,让平均AU F1提升了约0.06个百分点,而且对所有检查点都有效,AU15的F1从接近0直接恢复到10.8%,AU23从0.5%恢复到18.9%。
完全相同的逻辑也被应用到了表情识别上。对表情来说,问题不是阈值,而是logit分数的相对大小。系统的默认预测方式是取8个类别中logit最大的那个,但由于训练时"其他"和"中性"的样本压倒性地多,这两个类的logit系统性地比其他类大,导致系统几乎从不预测"恐惧"或"悲伤"。后校准的做法是在验证集上为每个类别学习一个独立的加权系数,相当于给弱势类别"人为补偿"。
校准的效果极其显著:恐惧的F1从3.8%跳升到33.1%,提升了29个百分点;悲伤从17.1%提升到28.2%;厌恶从46.5%提升到50.7%。而高兴和"其他"这样的多数类几乎没有变化。宏平均F1(PEXP R)从0.296提升到0.350,整体PMT L从1.123提升到1.177,这是全研究最好的验证集结果。
这个发现验证了一个重要的观点:严重的类别不平衡会压制模型学到的信号,但不会抹除它。模型确实学会了识别"恐惧"表情的特征,只是被压制在了表层之下。阈值校准相当于一把钥匙,把这些潜藏的信号重新释放出来,而且完全不需要重新训练,是一种极高性价比的改进手段。
九、更大的骨干网络和翻转增强的得失
研究团队还对比了用更大的ViT-B/16(拥有86M参数,而ViT-S/16只有约22M参数)替代默认骨干网络的效果。结果是效价预测明显改善(CCC-V从0.387提升到0.416),AU平均F1校准后也略有提升(0.507 vs. 0.502),但表情识别的宏平均F1下降了0.041(从0.296降到0.255)。这种效价改善与表情下降之间的权衡,导致总体校准后PMT L(1.116)低于ViT-S的最好结果(1.123)。研究团队推测,ViT-B在20个epoch内难以充分适应表情识别任务,需要更长的训练或更仔细的调参。
水平翻转测试时增强(TTA)的效果则完全是负面的,所有三个子任务的得分都下降了。原因很直观:面部动作单元有很强的空间方向性,比如"嘴角一侧下拉"在水平翻转后会变成另一侧,打乱了模型对方向性AU的判断,导致预测一致性下降。
十、整体成果的全景
综合所有实验,研究团队构建了一条清晰的性能提升路径。从最基础的确定性预测(PMT L = 0.793)出发,加入整流流后升到0.826,引入每AU独立阈值校准后升到0.888;骨干网络微调是最大的单步跳跃,直接到达1.045,加上AU校准达到1.101;在微调的同时重调流头(β=1.0)进一步升到1.073,再加AU校准达到1.123;最后加入表情后校准,达到全研究最高点1.177。整个过程相比官方基线的0.45提升了超过0.72,也就是提升了约160%。
研究团队还发现,"厨房水槽"式的组合(把类别加权交叉熵和AU正样本加权同时用于微调)并没有进一步改善,与单纯微调(1.045)相比得到1.041,说明这类不平衡处理策略在骨干网络冻结时有效,但一旦整个模型端到端优化,它们反而会干扰梯度分配,拉低效价-唤起度的性能。微调之后,流头重调是比样本重加权更有效的提升路径。
与此同时,补丁软池化(Patch Soft-Pool,PSP)方法,也就是在CLS token的基础上额外学习196个空间补丁token的加权平均,让冻结骨干网络下的确定性预测达到0.859,是冻结情况下最好的未校准结果,说明空间信息对动作单元检测确实有帮助,但没有与骨干网络微调结合测试。
说到底,这项研究告诉我们一件很有意思的事:让AI承认自己"不确定",反而能让它预测得更准。通过把情绪识别建模为一个概率分布而非单一答案,研究团队构建的系统在效价-唤起度这类本身就模糊的目标上获得了实实在在的提升。而那些被类别不平衡压制在底层的少数类信号,并没有真的消失——只是需要一把正确的钥匙才能找到。这对于我们思考AI系统如何面对现实世界中的模糊性和不平衡性,提供了一个清晰而实用的参考框架。未来,如果能在这个基础上加入时序信息(毕竟表情是随时间变化的,不是一张静止的图片),以及更充分的多任务联合缩放训练,与当前顶尖水平之间的差距或许可以进一步缩小。
有兴趣深入了解技术细节的读者,可以通过arXiv编号2607.13250查询完整论文。
Q&A
Q1:AffectFlow-DINO和普通表情识别AI有什么区别?
A:普通表情识别AI只给出一个确定答案,比如"这是愤怒"。AffectFlow-DINO则会同时运行多次预测,取平均值,并且能感知预测的不确定程度。这让它在表情本身模糊的情况下表现更稳定,尤其是效价(情绪积极/消极程度)的预测质量明显更好。
Q2:后校准是什么意思,为什么不用重训练就能提升效果?
A:后校准是指在模型训练完成后,只在验证数据上调整判断的"门槛",比如把某个动作单元的激活阈值从0.5调低到0.1。模型其实已经学到了识别稀有类别的能力,只是默认设置让它"不敢说"。调整门槛相当于告诉它"放开胆子说",不改模型参数,却能直接把恐惧表情的F1从3.8%拉到33.1%。
Q3:动作单元识别为什么这么难,数据不平衡具体影响有多大?
A:动作单元指的是面部具体肌肉的运动,比如嘴唇分开(AU25)或嘴角下拉(AU15)。在训练数据里,AU25出现在68%的样本里,而AU15只出现在2.4%里,两者相差29倍。用同一套标准训练下来,模型对AU25很熟悉,对AU15几乎视而不见,在默认阈值下AU15的F1接近零。后校准能把它恢复到10.8%,说明信号其实存在,只是被淹没了。