文章目录
IMPROVING DEPRESSIONESTIMATION FROM FACIAL VIDEO SWITH FACE
ALIGNMENT TRAINING OPTIMIZATION AND SCHEDULING
标题: 改善抑郁估计从面部对齐,训练优化和调度
数据集:AVEC2013/14/19
实验环境:NVIDIA GeForce RTX 4090 D
文章链接: https://arxiv.org/pdf/2212.06400
- 深度学习模型在使用基于视频的面部表达来识别抑郁状态方面显示出有希望的结果。虽然成功的模型通常利用 3D CNN 或视频蒸馏技术,但实验中预训练、数据增强、预处理和优化技术的不同使用使得很难进行公平的架构比较。相反,我们建议采用两种基于ResNet-50的简单模型,
这些模型仅使用静态空间信息,通过使用两种特定的人脸对齐方法和改进的数据增强、优化和调度技术
。我们在基准数据集上的广泛实验获得了与单一流的复杂时空模型相似的结果,而两个不同流的分数级融合优于最先进的方法。我们的研究结果表明,预处理和训练过程中的特定修改会导致模型性能的明显差异,并可能隐藏最初归因于使用不同神经网络架构的实际结果
视频蒸馏技术,在广义上可以理解为一种从视频数据中提取关键信息、压缩数据或进行知识迁移的技术。
- 技术原理 : 视频蒸馏技术可能借鉴了机器学习中的“知识蒸馏”(Knowledge Distillation)概念,即将一个复杂模型(教师模型)的知识迁移到一个更简单、更高效的模型(学生模型)中。在视频处理领域,这可以理解为从原始视频数据中提取出关键帧、特征表示或压缩后的视频流,以便于存储、传输或进一步分析。
- 关键帧提取:从视频中自动提取出最具代表性的帧,这些帧能够概括视频的主要内容。
- 特征压缩:利用深度学习等方法,将视频中的高维特征压缩为低维表示,同时保留足够的信息以用于后续任务。
- 知识迁移:在视频分析、识别等任务中,将复杂模型学习到的知识迁移到轻量级模型中,以提高处理速度和效率。
1、Introduction
- 抑郁症是一种常见的心理健康障碍,会对个人的幸福感产生负面影响 。长期的医学抑郁症会导致严重的并发症,无论是在心理上还是在生理层面上。
- 一些研究表明,抑郁症是其他疾病的诱因,如心血管疾病、骨质疏松症、衰老、病理性认知改变、阿尔茨海默病和其他痴呆症,甚至会增加早期死亡的风险。自动识别抑郁症的系统是可取的,因为它们具有潜在的客观性、速度和可靠性,可以避免对患者的健康和福祉产生这种影响。在过去的十年中,已经提出了许多基于经典统计机器学习算法的方法,用于从面部视频、语音和文本数据中识别抑郁症的迹象,以帮助医生做出决策。虽然最新颖的架构在抑郁识别模型的准确性方面显示出明显的提高,但大多数以前的工作都没有讨论或试验机器学习管道的重要组成部分,例如预处理或优化。基于这些缺点,在本文中,我们建议仅使用从面部视频帧中提取的静态纹理特征来创建用于自动抑郁筛查的深度学习模型。在这种情况下,我们建议进行一组更改,以使用这种架构来改善结果。我们的主要贡献可以总结如下:
- 介绍了一组基于
ResNet-50 架构 的 2D-CNN
模型,该模型仅使用来自视频帧的静态纹理信息进行训练,通过应用两种不同的人脸对齐技术,并评估它们在最终结果中的影响。 - 探索了新的训练优化和调度方案,以进一步改进以前基于空间信息的类似方法的结果。
- 建议使用融合评分方法使用不同的基于纹理的模型来回归抑郁水平,这些模型显示是互补的,具体取决于面部对齐。
- 在AVEC2013数据库和AVEC2014数据库上对模型进行微训练和验证,结果表明,该方法可以获得与复杂时空模型相当的结果,而两种流模型的分数级融合性能优于文献中最先进的方法。
- 最后,发现仅使用基于纹理的模型表明,预处理和训练过程中的微小变化可能会导致模型性能的显着差异,这可能隐藏了归因于神经网络架构差异的真实贡献。
2、Related work
- 在过去的几年里,计算机视觉已被提议作为诊断临床抑郁症的有效工具,因为它在识别和分析面部症状方面显示出良好的性能,众所周知,这一特征与抑郁密切相关。几项研究表明,抑郁症通过以下方式影响面部表情:抑郁症患者通常表现出积极情绪的强度降低,微笑次数减少,负面情绪强度增加,眼球接触次数减少,眨眼次数减少, 减少转头次数,增加点头次数。
- 计算机视觉领域的许多研究都提出了基于面部表情分析(FEA)的静态和视频场景下的自动抑郁检测(ADD)方法。
- 特别是,为了识别静态图像中的抑郁表情,提出了基于深度学习模型的方法,从人脸中提取嵌入的情绪,并将图像分为抑郁类或控制类。其他研究提出了一种类似的静态图像方法,但关注的是面部多区域而不是整个面部。
- 最近,大多数研究都集中在通过利用视频中的面部帧间信息来利用时空信息。
一些研究提出了3D-CNN架构,用于从短视频片段中提取时空特征,而另一些研究则提出了时间池化技术,用于捕获视频片段的动态信息并将其编码到图像图中并训练2D-CNN
3、 Proposed methodology
- 在本文中,建议使用预处理的RGB图像来学习判别表示,以确定一个人的抑郁程度。与文献中的大多数工作相比,我们的工作侧重于输入数据的预处理和数据增强技术,并保持相同的骨干网络,即预训练的 ResNet-50 架构。
3.1. Preprocessing and face alignment
- 预处理和人脸对齐:方法的第一步包括从每个视频帧中分割和对齐面部区域。使用最先进的人脸检测器,即基于深度学习的多任务级联卷积网络(MTCNN,它还通过检测眼睛、鼻子和嘴巴中的五个基准点来提供人脸对齐。从相关文献中可以看出,典型的人脸预处理是基于裁剪、对齐和重新缩放图像。但是,裁剪和对齐面部的顺序对最终结果图像有直接影响。在旋转和对齐之前裁剪面部区域会删除边界处的纹理区域。
- 这可以描述为黑色三角形,如下图所示
废弃的面部对齐。由于我们的模型仅基于形态中的纹理,因此我们应用了一种预处理方案,该方案在面部边界内提供所有纹理信息。在这种情况下,我们以两种不同的方式对齐和重新缩放图像,即姿势独立和姿势依赖,如下所示。
- 姿势相关人脸对齐根据水平对齐的眼睛的位置旋转人脸,然后应用新的人脸检测,从那里对齐的人脸被裁剪和缩放,提供一个输入,随着面部表情改变纹理。
- 姿势独立凹痕面部对齐只是根据 MTCNN 提供的面部边界裁剪面部,然后缩放图像,提供一个输入,该输入会随着不同的头部姿势而改变纹理。这两种类型的对齐可以提供面部纹理的互补信息。
3.2 Architecture
- 使用 ResNet-50 架构 作为主干网,通过另外两个由 512 个神经元组成的全连接 (FC) 层和一个由 128 个神经元组成的回归层来估计抑郁水平,如下图所示。
为了利用预学习特征和迁移学习,我们使用 InsightFace
框架工作的预训练权重初始化网络工作。为了有利于从我们的特定数据中学习到新的低级纹理特性,我们保持对架构的所有层进行解冻。然后,将视频计算为所有单个图像的预测的平均值。
3.3 Data Augmentation
- 由于我们提出的方法基于姿势依赖和姿势独立人脸的信息互补性,因此我们没有添加任何人脸旋转来
增强数据
。相反,我们建议对每张脸进行随机水平翻转,并改变亮度、对比度和饱和度。与文献中的其他工作相比,我们不包括垂直翻转,也没有向数据集添加额外的图像。我们将这些数据增强技术添加到我们之前的姿势依赖和姿势无关的流中。
3.4 Training
- 在 AVEC2014 数据库上,我们处理每个视频的每一帧,总共有 304929 个面部帧。由于AVEC2013数据库比AVEC2014大 9 倍,为了保持相似的数据量,并且与之前的工作类似,我们决定每 9 帧处理 1 帧。此回归模型的成本计算为 L1 范数,即平均误差函数 (MAE),旨在最小化每个单独帧预测的误差。与之前的其他出版物相比,我们包含了一个最先进的优化器RAdam,并通过Lookahead优化的实现进行了增强。我们使用 ReduceLROnPlateau 优化器,当学习停止改进时,它会降低我们的初始学习率 3.10-10
4、Experimental analysis and results
4.1 Datasets
-
我们提出的方法已经在两个公开可用的数据库上进行了评估:视听/视觉情绪挑战 AVEC2013 和 AVEC2014抑郁子挑战数据集。它们都源自视听抑郁语言语料库 (AViD-Corpus) 的一个子集。
-
AVEC2013由一个任务组成,而AVEC2014被分配到两个不同的子集:Northwind 和 Freeform,其中同一主题执行两个任务。每个任务都分为三个部分:训练、开发和测试,所有部分都有 50 个视频。每个视频都包含一个主题在镜头前说话的记录。这些视频标有 表示贝克-抑郁症量表 BD-II
分数。 -
抑郁水平介于 0 到 63 之间。根据 BD-II 评分,抑郁症的严重程度可分为四个级别:轻度 (0-13)、轻度 (14-19)、中度 (20-28) 和重度 (29-63)
4.2 Experimental setup
- 所提出的方法仅使用从两个基准数据集视频中提取的静态纹理特征进行评估。将不同模型的结果与其他基于视觉信息匹配的最先进模型(包括静态和时空模型)进行了比较。我们为单个流提供结果,并为它们的互补分数级融合提供结果。这些实验是使用集成了AMD Ryzen 7 5800 8核处理器和在Linux上运行的
NVIDIA GeForce RTX 3060
的计算机形成的。我们使用 Python 3.8 作为编程语言,并使用 PyTorch 1.11.0 框架。
4.3 Protocol and Performance metrices
- 为了评估这些模型的性能并与最先进的方法进行公平的比较,我们提供了自动抑郁文献中最常见的两个指标,即平均绝对误差(MAE)和均方根误差(RMSE)。每个输入视频的总体预测 depres sion 分数是通过对其所有帧的估计分数求平均值获得的。
4.4 Experimental results
- 通过在基准数据库中进行的一系列实验,评估了所提出的模式的性能和有效性。表 1 显示了姿势依赖性 和姿势独立流的结果以及它们的融合,AVEC2013。在表 2 中,我们提供了 AVEC2014 的结果,以及两种不同的性能衡量方法:SEPA 额定任务和联合任务。分离任务评估将每个视频视为一个独立的任务。
MAE 是根据 100 个预测的平均值计算的,每个视频一个预测。联合任务评估通过对两个任务的预测进行平均,将同一主题完成的每个 Northwind 和 Freeform 视频融合在一起。
然后获得 MAE 作为对应于每个主题的 50 个谓词的平均值。对于这两个表,可以看出,平均误差(以 MAE 表示)在流融合时误差较小。这些结果表明,姿态依赖流和姿态独立流中包含的信息可能具有互补性。因此,对不同预处理的空间流进行爆炸是利用静态信息的有效途径。
5、 Error Distribution
- 为了进一步分析我们最佳模型的性能,我们在基准测试中展示了
误差分布
AVEC2014以及如下图 所示。该图显示了 100 个测试视频中每个视频的绝对误差,从小到大排序。我们可以观察到,我们方法的误差分布显示出相对较小的总体误差。我们的纹理模型显示了更高比例的视频,但错误非常小(这不会导致误分类)。然而,一小部分视频仍然显示出非常高的错误。
5.1. Comparison with State-of-the-Art
- 表 3 和表 4 显示了使用不同对齐方法和 改进验证的预训练、优化和调度技术对所提方法的性能评估,这些技术应用于面部视频的 AVEC2013 和 AVEC2014。
- 我们将结果与通过融合流获得的结果进行比较。该比较表明,仅使用纹理信息和众所周知的深度学习架构,就可以获得与利用时空信息的最复杂的新型架构相媲美的最新结果。尽管我们的结果仅基于静态信息,但它们在MAE方面获得了最佳结果,并且在RMSE方面获得了非常有竞争力的结果。但是,由于我们使用非常简单的架构,因此可以争辩说相似性应用于更复杂的时空模型的预处理和优化技术将带来更好的性能。
- 基于上述,实现结果如下:平均绝对误差MAE为8.8 ; 均方根误差RMSE 为10.5
6、Conclusion
- 本文介绍了一种简单的抑郁检测方法,
该方法利用两种互补的人脸对齐技术来推导一组基于纹理静态信息的深度模型
。此外,通过数据增强和新颖的优化和调度方案,改进了模型的训练过程。在AVEC2013和AVEC2014基准数据集上的广泛实验表明,以这种方式训练的单个模型与复杂的时空模型具有可比的结果,而多个流的分数级融合优于基于视觉信息的更复杂的最新方法。
6.1 brief summary
- 我们认为,至少对于AVEC2013和AVEC2014来说,使用新颖的架构从视频进行抑郁估计的必然性,不能与其他处理组件产生的影响清楚地区分开来,应该以更系统的方式进行研究.。
7、 Bug solved and Knowledge review
- 由于实例过期销毁,开始重新配置环境。头大
7.1 MTCNN Problems
- MTCNN,通过检测眼睛、鼻子和嘴巴中的五个基准点来提供人脸对齐。
- 【Bug原因及解决方案】 如下操作即可
7.2 Sequential‘ object has no attribute ‘predict_classes
- 【Bug原因及解决方案】 在Tensorflow2.6之前的版本中拥有predict_class属性,
之后版本已经取消。如下操作即可。
result = model.predict_classes(x_test[0].reshape(1,784))
======>
result = model.predict(x_test[0].reshape(1,784))
result = np.argmax(result, axis=1)
=======>
result = (model.predict(X_train) > 0.5).astype("int32")
7.3 cannot import name ‘load_img’ from ‘keras.preprocessing.image’
-
【Bug原因及解决方案】 原因在于 keras 2.6 版本之后就发生了变化,类中的有些方法被迁移到其它地方或者被删除了。
-
将
from keras.preprocessing.image import img_to_array
改为 from keras.utils import image_utils -
使用 image_utils 的 load_img(), img_to_array() 两个方法即可。
7.4 Knowledge Review MLP
-
逻辑回归不适用用图像分狂务的原因是什么?
-
逻辑回归主要用于二分类问题,它基于线性回归,通过逻辑函数(如Sigmoid函数)将线性回归的输出映射到0和1之间,从而表示概率。1. 特征提取能力有限 2. 非线性问题处理能力不足 3. 高维数据处理挑战
逻辑回归模型与神经网络模型之间的关系主要体现在以下几点:
- 基础构件:逻辑回归可以作为神经网络中的一个基本构件,即神经元。神经网络中的每个神经元都可以看作是一个逻辑回归模型,它们通过激活函数(如Sigmoid函数)对输入进行非线性变换。
- 模型复杂度:逻辑回归是一个相对简单的模型,而神经网络通过组合多个神经元形成复杂的网络结构,能够处理更复杂的非线性问题。
- Tensorflow是一个采用数据流图,用于数值计算的开源软件库)可自动计算模型相关的微分导数:非常适合用于神经网络模型的求解。
- Keras可看作为tensorflow封装后的一个接口(Keras作为前端,TensorFlow作为后端) ,是一个用Python编写的用于神经网络开发应用接口。
from keras.models import Sequential
from keras.layers import Dense, Activation
mlp = Sequential()
mlp.add(Dense(units=20, input_dim=2, activation='sigmoid'))
mlp.add(Dense(units=1,activation='sigmoid'))
mlp.summary()