基于对比学习的面部疼痛评估

2025-02-10 00:00:00徐日升卿粼波熊昆洪高峰
四川大学学报(自然科学版) 2025年1期

关键词: 疼痛评估; 多模态特征; 对比学习; 自适应权重更新

1 引 言

疼痛是一种包含感官、情感、认知和社会因素的、与实际或潜在的组织损伤相关的痛苦体验[1].同时,疼痛也是最常见的临床症状之一,在当前的医疗保健、康复医学中具有巨大的应用潜力和医疗意义. 目前临床上疼痛检测主要依靠患者的主观报告,即在指定的时间内报告当前疼痛的等级(如0~10). 然而,自我报告可能受到病人主观性和心理因素的影响,缺乏统一的评判标准. 对于一些如婴幼儿或意识障碍患者等无法清晰表达自身疼痛等级的群体,这种方法也失去了作用. 因此,自动疼痛识别技术就成为研究者探索的热点领域.

在过去几十年中,科研工作者从各个方面对疼痛识别进行了研究. 一部分研究者通过生理信号提取相关的疼痛特征,如心电(ECG)、脑电(EEG)和肌电(EMG)等,取得了显著的进展. 但这些生理反应的获取往往需要复杂的设备,不利于大规模应用,并且有可能加重患者的不适体验.因此,为提供更便捷、舒适的疼痛评估方法,基于人脸的无感疼痛分析具有其合理性和可行性.

传统的人脸疼痛识别方法主要对人脸的纹理、几何特征建模,从而挖掘蕴含的疼痛信息. 主流的方法包括主成分分析(Principal ComponentAnalysis, PCA)和局部二元模式(Local BinaryPatterns, LBP). 另外,还可以通过主动外观模型[2](Active Apperance Model, AAM)或主动形状模型[3](Active Shape Model, ASM)来捕捉像素点的数学变化. 然而,传统的手工特征无法得到深层次的空间信息以及时序信息. 因此,如今人们更倾向于采用具有强大表征能力的深度学习方法来进行面部疼痛识别. El Morabit 等[4]和Ye 等[5]通过卷积神经网络(Convolutional Neural Networks,CNN)和局部注意力聚焦更细致的静态表征;Zhou等[6]和Rodriguez 等[7]将多帧图像的静态特征送入循环神经网络(Recurrent Neural Network, RNN)进行时序建模. de Melo 等[8]和Huang[9]等进而使用3D CNN 直接提取视频序列中的时序信息,捕捉更多的和疼痛表情相关的动态特征. 然而,这些研究均未对动态和静态疼痛特征进行融合. 为了解决这个问题,一些工作[10,11]同时考虑了动态和静态特征,并纳入了面部关键点,以获取更全面的特征描述. 尽管如此,这些研究仅从特征提取角度出发,并未考虑不同程度疼痛之间的差异. 不同等级的疼痛(如1 级和10 级)通常对应不同的面部特征,这种差异特征则是区分不同疼痛等级的关键.因此,在疼痛评估的过程中将这种面部差异纳入考虑具有充足的可行性.

受到上述工作的启发,本文提出了一种基于对比学习的面部疼痛评估方法. 首先,提取同一样本不同模态的信息,包括时序特征、面部外观特征和面部关键点的几何特征,得到全面的疼痛信息表征;其次,通过引入对比学习的思想学习不同疼痛程度间特征的差异性,更有效地对疼痛等级进行区分;最后,设计了一种损失函数学习方法,自动学习对比学习损失和传统均方误差损失的比重. 本文在UNBC-McMaster 数据集上进行实验,和现有方法相比具有最好的性能,证明了本文方法的有效性.

2 相关工作

2. 1 面部疼痛识别

面部表情可以最直观地反应人类所承受的疼痛状况,因而成为研究疼痛的重要手段. 早期研究者将其视为1 个二分类问题,即只判断有无疼痛.Ashraf 等[12]使用支持向量机(SVM)对通过AAM获得的相似归一化形状、相似归一化外观和规范外观进行分类,证明了自动识别疼痛的可行性.Lucey 等[13,14]使用相同的方法在他们提出的UNBC-McMaster 数据集上进行了实验,通过识别面部动作单元(Action Units, AUs)计算PSPI[15]评分(Prkachin and Solomon Pain Intensity, PSPI)作为度量指标. PSPI 将疼痛分为16 个等级,其中0 表示无痛,15 表示最强的疼痛等级,其计算公式如下所示:

其中不同数字和特定的面部动作单元一一对应,如AU4 描述眉毛向下移动的程度. Khan 等[16]通过分层梯度方向直方图(Pyramid Histogram of OrientedGradients, PHOG)和分层局部二值模式(Pyramid Local Binary Pattern, PLBP)提取有区分性的面部形状与外观特征. Zafar 等[17]使用KNN对建立的面部几何特征集进行分类.

然而,只判断有无疼痛是非常粗糙的,无法满足实际的应用. 因此,越来越多的研究人员开始对疼痛的强度进行估计. 最初研究者使用传统手工特征如离散余弦变化(Discrete Cosine Transform,DCT)和LBP[18]、形状直方图[19](Histograms ofTopographical, HoT)、尺度不变特征变化[20](Scale Invariant Feature Transform, SIFT)等来挖掘疼痛特征. 近年来,基于深度学习的方法已经成为主流. Thiam 等[21]设计了一个双流网络,通过注意力机制关注光流和历史运动图像中的特征. 一些方法通过分析视频序列中的时序信息,学习疼痛产生时面部表情的变化[6,8,9,22,23]. 文献[24,25]提取了面部关键点的位置和几何信息,进而对疼痛特征进行表征. 另外,静态的面部图像也蕴含丰富的疼痛信息,研究者们以全局和局部的角度作为切入点,通过注意力机制深入挖掘疼痛信息,展开了相关的工作[5,26,27]. Huang 等[10]和Wang 等[11]将上述的时序、关键点和面部图像信息整合起来以得到更全面的特征. 然而,以上工作都忽略了不同强度疼痛对应面部特征的差异,因此本文借助对比学习的思想来解决这个问题.

2. 2 计算机视觉中的对比学习

对比学习作为一个新兴的领域,近年来也被引入到计算机视觉的相关任务中. Wu 等[28]把数据集中的每一个样本都看作一个类别,通过这种个体判别任务将对比学习引入到计算机视觉中. He等[29]在此基础上进行改进,通过队列和动量编码器来提升对比学习的性能. 由于将每一个样本都当成一种类别需要占用额外的计算资源,Ye 等[30]和Chen 等[31]在一批数据中定义正负样本,通过最大化正样本特征的一致性进行训练. Tian 等[32]将同一个场景的不同视角作为正样本来增大不同视图下的互信息,从而学习一种具有视角不变性的本质特征.

传统的对比学习都是基于无监督的范式,无法有效利用标签中的信息. Khosla 等[33]首先对无监督的方法进行扩展,提出一个有监督且易于实现的损失函数来利用标签信息. Ma 等[34]提出了一种有监督的对比学习框架,利用多头自注意力区分不同视图不同模态的相对重要性. Yuan 等[35]使用数据增强的方式学习模态类内的本质特征,同时通过模态类间的对比提取跨模态的语义特征.Mai 等[36]通过探索音频、视觉和文本信息的类间关系,获得了更充分的联合嵌入特征,以进行更深入的情感分析. Mustafa 等[37]利用图像和文本对稀疏混合专家模型进行训练,并提出了一个基于熵的正则化方案用来稳定训练. 然而,这些方法没有关注与任务相关的损失函数,因此,本文设计了一种联合优化对比学习和与任务相关的损失函数的方法.

3 算法设计

3. 1 整体结构

针对目前工作没有对比不同疼痛等级的特征差异,无法有效区分疼痛等级的问题,本文提出了基于对比学习的面部疼痛评估方法,总体框架如图1 所示. 首先,为了得到更加全面的疼痛特征,本文对视频序列中的多模态信息进行提取. 对于视频序列中任意一帧静态图像i,为了提取静态的面部外观特征fa,i,本文利用带有预训练权重的ResNet-50[38]网络作为特征提取器,它通过残差连接可以保证梯度正常回传的情况下加深网络的深度,提升网络的性能;然后通过堆叠标签相同的视频帧形成时序通道输入,利用S3D-G[39]网络提取其中的时序信息,捕捉更多的面部动态特征ft,i;随后,本文使用一维卷积来提取经过处理后的人脸关键点数据(AAM),得到面部的几何特征fg,i ,最终形成样本i 的特征集Fi,其表示方法如式(2)所示. 对于一个批次的数据来说,对其中的每一个样本做相同的处理,得到这个批次中所有样本特征的集合F,其表示见式(3),其中N 表示这个批次中样本的数量. 之后通过对比学习区分F 中不同疼痛等级样本的嵌入特征,学习更丰富的疼痛信息,提高视觉表征的质量. 最后,通过自适应权重更新的方法联合优化对比学习损失和均方误差损失,增强网络的性能.

3. 2 多模态特征提取

为了更充分地利用已有信息,本文分别利用三维(3D)、二维(2D)和一维(1D)卷积网络提取样本中的疼痛信息. 由于面部表情的动态变化是人类表达疼痛的重要区别特征[40],所以本文使用S3D-G 网络来提取图像序列中的时序特征ft,S3DG网络通过用低成本的2D 卷积代替了一部分3D卷积,在计算复杂度和准确率上达到了平衡. Zhou等[41]的研究表明,在3D 特征中引入2D 特征可以得到更深、信息量更大的特征图. 因此,本文利用2D 的ResNet 网络提取静态图像中的面部外观特征fa,得到局部疼痛特征. 另外,通过面部关键点的识别,可计算出客观的PSPI 评分,证实了它与疼痛表达的关联性. 因此本文首先参照文献[10]中的方法对关键点数据进行归一化(Norm),方法如式(4)所示.

其中,Vi 为归一化后得到的向量;L (i,n) 表示第i个点到参考点(鼻尖)的距离;L (e,n) 表示鼻尖到眉毛中心的距离. 然后利用图2 所示的输出维度为256、1024、2048、4096、2048 的5 层1D 卷积提取面部关键点中的几何特征fg,与上述的3D、2D 特征构成完备的特征集合. 最后,将得到的ft、f a 和fg拼接后通过全连接层得到疼痛评估分数,并使用均方误差损失(mse loss)对模型进行优化.

3. 3 疼痛对比损失函数

不同程度的疼痛通常对应着不同的面部表情,因此,对面部表情加以区分对于疼痛识别至关重要. 然而,现有的工作多关注于疼痛特征的提取,无法有效区分疼痛等级. 为此,本文提出了一种疼痛对比损失函数(con loss),通过对比具有不同PSPI 评分的样本来学习不同疼痛程度对应面部特征的差异,提升了网络的泛化性和鲁棒性.

对比损失函数的描述为:对于一个样本数量为N 的批次,I 为数据增强后的样本集,常用的数据增强方式有裁剪、加噪等. i 为I 中任意样本的索引,通用的无监督对比学习的损失函数如式(5)所示.

其中,j (i) 为和样本i 同源的另一个增强样本的索引,也称为正样本. zi 和zj (i)为通过网络提取的特征;τ 为一个超参数,用来控制损失函数对负样本的敏感程度. A(i)≡ I {i}为I中除去当前样本的剩余样本. 式(5)表明当正样本越相似时损失函数的值越小.

有监督对比学习和无监督对比学习不同的是,有监督对比学习将具有相同标签的数据视为正样本,因此可以学到更高阶的语义信息. 具体而言,P (i) 为该批次中与样本i 标签相同的样本集合,且不包含i. | P (i) |为其中样本的个数. 本文将数据集中的静态图像视为样本i,将由其得到的时序信息和面部关键点数据作为数据增强方式,以此得到对比学习所需的正样本. 分别提取特征后得到时序特征ft,i、面部外观特征fa,i 和几何特征fg,i,在对比不同疼痛等级所对应的面部特征时融合多模态的疼痛数据.

3. 4 自适应损失函数权重更新

在一次前向传播中,模型只能得到当前批次的数据,无法得到整个数据集全面的特征,因而计算出的损失函数具有局限性. 为了在模型迭代过程中更严谨地约束模型的更新,本文设计了一种权重更新方法(Weight Update, WU)融合con loss和mse loss,流程如图3 所示. 权重的计算方法如式(7)所示.

随着模型不断更新迭代,得到的损失函数更能准确体现预测值与真实标签的差异,从而更好地利用这种信息.

4 实验结果与分析

4. 1 实验数据集

本文在UNBC-McMaster 数据集[42]上对提出的方法进行验证. UNBC-McMaste 是一个肩痛表情数据集,同时也是疼痛识别领域最常用的数据集. 其中包含了200 个视频序列,记录了25 个成年肩痛患者的面部表情. 该数据集一共有48 398 帧,每一帧都提供了66 点的面部关键点坐标,并且用0~15 的PSPI 评分作为真实标签.

对于不同通道数据的获取,本文遵循文献[10]中的方法. 即首先抽取视频序列中的一帧得到静态图像,为了去除背景的干扰和人脸转动带来的影响,通过数据集中提供的面部关键点坐标和仿射变换进行人脸裁剪及对齐,以此作为外观支路的输入. 由于连续两帧的变化并不大,所以随机选取和当前帧疼痛等级相同的15 帧和当前帧拼接成16 帧作为时序支路的输入. 另外,为了获得稳定的面部关键点特征,使用距离归一化方法处理关键点信息,消除人脸位置改变带来的影响,从而得到一维的特征向量,并将其作为关键点支路的输入,进而对所有的视频帧进行评估.

4. 2 实验设置及指标计算

在数据预处理时,本文将裁剪后的人脸图像缩放至112×112,并进行随机水平翻转. 为了在对比不同疼痛程度时得到更全面的特征,将3 个通道的输出维度都调整为2048 维. 网络使用SGD 算法进行优化,初始学习率为0. 0001,使用余弦退火调整学习率,总训练迭代数为40. 实验环境为Ubuntu 20. 04,NVIDIA GeForce RTX 4×3090.参照之前的工作[8,10,11],本文使用留一验证法(Leave One Subject Out)进行实验,即选取数据集中的每一位受试者作为测试集,其余的受试者作为训练集进行训练,如此重复25 次,最终以25 次实验结果的平均值作为指标结果. 本文采用平均绝对误差(Mean Absolute Error, MAE)、均方误差(Mean Square Error, MSE)和皮尔逊相关系数(Pearson Correlation Coefficient, PCC). MAE 和MSE 表示预测值和真实标签的距离,越小越好.PCC 可以反映变量间的相关度,越大越好. MAE、MSE、PCC 的计算方法分别如式(9)~ 式(11)所示.

为测试集预测结果的平均值.

4. 3 实验结果及分析

本文和目前最先进的方法进行了比较,结果如表1 所示,其中加粗数值表示所有方法中取得的最优指标. 从中可以看出,本文方法MAE 和PCC上达到了最好的效果,在MSE 上基本与最先进的方法持平. 其中,文献[18-20]使用传统手工特征进行疼痛识别,如HOT、DCT、PCA. 这些方法存在特征单一、泛化性差以及准确率较低的问题. 因此,具有强大的表征能力、可以端到端学习的深度学习方法逐渐成为主流. 通过捕获持续和瞬时面部变化来探索多尺度时间信息[8]. 再使用卷积网络提取面部的静态特征[6,7,43,44],然后将得到的特征送入循环神经网络中表征时序信息,从而构建时空模型. 其中文献[44]在MSE 指标上取得了最好的结果,原因是为了得到更加均衡的数据,该方法通过原始数据集划分了无痛序列和疼痛刺激序列,并对数据进行了一些删减. 这样处理可以过滤掉一些波动较大的序列,因此减少了异常值,进而提升了MSE 指标. 而本文在未重新划分数据集的情况下达到了和文献[44]相近的MSE,且获得了更好的MAE 和PCC,证明了本文方法的优异性能.文献[10,11,45]使用更强大的3D 卷积网络直接提取视频序列中的时序特征,其中文献[10,11]同时将静态图像特征和关键点特征也纳入考虑,取得了更好的效果. 本文与性能较好的文献[10,11]中的方法均提取了面部图像的时序信息、外观信息和关键点信息. 与这些方法相比,本文在3 个指标上均有较大的提升,说明通过对比学习的方法,能够充分学习到不同疼痛等级对应面部特征的差异,从而在疼痛评估时更好地区分疼痛等级. 另外,之前的方法仅使用单一的损失函数,无法有效指导网络训练. 本文提出的损失函数权重更新方法可以动态地结合对比损失和均方误差损失,充分利用数据集中的信息.

为了更直观地展示文本方法在数据集上的效果,我们进行了可视化实验对比疼痛标签的真实值和预测值,如图4 所示. 其中图4a 是利用时序信息、面部外观特征和关键点特征进行疼痛预测的结果,可以观察到预测结果的波动幅度较大,且在无疼痛时出现较多的误判. 图4b 是加入对比学习的损失函数以及自适应权重更新后的结果,可见预测结果更加接近真实值,且对于无疼痛的预测非常准确,证明了本文方法的有效性.

4. 4 消融实验

本文还开展了一系列消融实验来验证网络中各个模块的有效性,结果如表2 所示.

本文以单支路的关键点几何特征(AAM)作为比较基准. 在加入用Res50 提取的外观特征后,所有指标均得到改善,说明结合几何特征和面部外观特征可以更精确地评估疼痛等级. 相同的结果也适用于加入用S3D-G 提取的时序特征时,说明捕捉时序信息可以获得和疼痛相关的面部动态特征,有助于疼痛识别. 此外,在加入基于对比学习的损失函数(CL)后,MAE 指标有较大提升,MSE和PCC 基本保持不变,说明对比不同疼痛等级下的特征可以减小预测误差,使结果更为拟合. 最后,在引入损失函数权重更新方法(WU)后,所有指标均有提升,说明在更全面地利用数据集中的信息后可以提升疼痛识别效果. 本文采取留一验证法进行实验,所以学习到的权重r 随着不同子集而变化. 除去一个标签全部为无痛的子集,r 的值都在0. 3~0. 7 的范围内,验证了联合优化基于对比学习的损失和均方误差损失的有效性.

5 结论

疼痛等级具有类间差异大的特点,考虑到现有方法不能有效区分不同疼痛等级下的面部差异,本文提出了一种基于对比学习的面部疼痛评估方法. 首先分别提了取面部的多模态特征,随后将其作为正样本对进行疼痛等级的对比学习,最后设计了权重更新方法自动学习对比学习损失和均方误差的比例,更有效地利用预测值和真实值的误差信息. 在UNBC-McMaster 数据集上的实验表明,将不同程度疼痛间的差异纳入考虑可以提升评估性能,证明了本文方法的有效性. 另外,本文研究还有一些可扩展的方面. 首先,不同模态特征虽具有差异,但其代表的本质是一致的,如何在学习本质特征的同时消除模态差异是一项关键任务. 此外,疼痛等级之间的差异应有所区别,相近疼痛等级的差异应相对较小,如何考虑这种差异也是今后的研究方向.