基于多模态深度学习的自闭症儿童表情分析
1. 特征提取
面部图像的特征提取是通过识别面部标志点来完成的。面部标志点在正面人脸草图上显示有 68 个点,这些点描绘了面部对齐情况,可用于各种应用分析。具体面部组件与标志点的对应关系如下表所示:
| 面部组件 | 正面面部标志点 |
| — | — |
| 脸部轮廓线 | 点 1, 2, 3, …, 17 |
| 左眉毛 | 点 18, 19, …, 22 |
| 右眉毛 | 点 23, 24, …, 27 |
| 棱角鼻 | 点 28, 29, …, 36 |
| 左眼 | 点 37, 38, …, 42 |
| 右眼 | 点 43, 44, …, 48 |
| 嘴巴轮廓 | 点 49, 50, …, 60 |
| 嘴巴内线 | 点 61, 62, …, 68 |
在实际操作中,使用 OpenCV Dlib 来检测面部标志点。Dlib 模型检测的 68 个特征点包括脸部轮廓线、左右眼、左右眉毛、嘴巴和鼻子等。Dlib 会自动检测人脸并识别面部标志点,这些点随后被确定为输入数据,用于输入分类器。
每个在脸上识别出的点基本上有三个特征需要检查:
- 棱角鼻的中心点位置,它决定了与人脸对应的视角角度。
- 从鼻子中心到点 (x, y) 的距离,称为 d。
- 该点相对于中心的角度,称为 。
以下是分析标志点距离计算以识别面部表情的具体步骤:
1. 对于所有检测到的人脸实例,分别使用预测器类绘制面部标志点。
2. 使用 x 轴和 y 轴将标志点定位在 x[] 和 y[] 中。
3. 计算 xmean 和 ymean。
4. 对于 x[] 和 y[] 中的每个值:
- 计算两个轴的平均值,以使用以下公式确定重心:
xcentral = [(x - xmean) for x in xlist]
ycentral = [(y - ymean) for y in ylist]
- 计算每个检测到的人脸的角度 :
if xlist[26] == xlist[29]:
anglenose = 0
else:
anglenose = ((y[26] - y[29]) / (x[26] - x[29])) * 180 / math.pi
if anglenose < 0:
anglenose += 90
else:
anglenose -= 90
- 计算相对角度:
relative_angle = ((z - ymean) / (w - xmean)) * 180 / math.pi - anglenose
为了提高实时分析中人脸检测的效率和准确性,采用 Viola - Jones Haar - 级联分类器处理输入图像来检测人脸,然后使用 OpenCV Dlib Python 库处理检测到的人脸。
2. 表情分类器
使用 SVM - 线性核分类器对检测到的面部表情进行分类。SVM 是一种流行的机器学习算法,属于监督学习类别,可用于解决分类和回归问题。其工作原理是基于决策平面的概念,根据特定标准分离不同的对象集。
线性分类器对人脸表情进行分类的形式为:
[f(x) = w x^t + b]
其中,x 对应特征,w 对应权重,b 是偏置。将来自 ASD_POSITIVE 和 ASD_NEGATIVE 的每个图像按 80:20 的比例划分为训练数据集和测试数据集。
3. 通过卷积神经网络(CNN)进行表情识别
使用 Haar - 级联分类器检测人脸,结合 Dlib 库函数检测情绪,能在表情识别上取得较好效果。为进一步提高性能和准确率,采用深度学习算法 CNN 来深入学习分析帧的特征。
CNN 包含三个基本层:卷积层、最大池化层和全连接网络层。以下是 CNN 技术用于自闭症儿童表情识别的流程:
graph LR
A[输入图像] --> B[Haar - 级联分类器检测人脸]
B --> C[CNN 处理]
C --> D[卷积层]
D --> E[最大池化层]
E --> F[全连接网络层]
F --> G[输出表情分类结果]
在该技术中,将输入图像调整为 64 × 64 尺寸,并根据不同的表情类别进行分组,然后针对每个表情类别进行训练。具体的 CNN 网络结构如下:
- 第一个卷积层:有 32 个 3×3 滤波器,步长为 1,包括批量归一化,无最大池化。
- 第二个卷积层:有 64 个 3 × 3 滤波器,步长为 1,包括批量归一化和 2 × 2 滤波器的最大池化。
- 全连接层:有一个包含 512 个神经元的隐藏层,使用 soft - max 作为激活函数。
3.1 卷积层
对于具有 N × N 方形神经元和 m × m 滤波器的神经元层段,最终卷积层的大小将为 (N - m + 1) × (N - m + 1)。在基于 CNN 的自闭症阳性和阴性儿童表情识别中,涉及一个具有两层隐藏操作的基本卷积算法。
卷积层的具体计算过程如下:
- 卷积层接受大小为 (W_1 × H_1 × D_1) 的体积。
- 通过 4 个超参数进行计算:
- 滤波器数量 (K)
- 空间范围 (F)
- 步长 (S = 1)
- 零填充量 (P)
- 产生大小为 (W_2 × H_2 × D_2) 的体积,其中:
[W_2 = \frac{W_1 - F + 2P}{S} + 1]
[H_2 = \frac{H_1 - F + 2P}{S} + 1]
[D_2 = K]
- 计算每个滤波器的权重为 ((F × F × D))。
- 计算 n 个偏置项的权重为 ((F × F × D) × K)。
- 输出将通过步长 (S) 得到大小为 (W_2) 和 (H_2)、深度为 (d) 的结果。
3.2 最大池化层
最大池化层用于对输入图像的特定体积进行下采样。在本项目中,采用 2 × 2 滤波器、步长值为 1 的最大池化算法。其计算涉及两个超参数:步长 (S = 1) 和空间范围 (F)。
最大池化层的计算过程如下:
- 最大池化接受大小为 (W_1 × H_1 × D_1) 的体积。
- 计算得到体积为 (W_2 × H_2 × D_2),其中:
[W_2 = \frac{W_1 - F}{S} + 1]
[H_2 = \frac{H_1 - F}{S} + 1]
[D_2 = D_1]
最大池化层的操作基于下采样,在网络中存在一定的可容忍损失。这样做的原因是减小尺寸可以降低计算复杂度,并防止过拟合,且在计算中不添加新的参数。
3.3 全连接层
全连接层通过将网络中的每个神经元与其他所有神经元相连而构建。该项目通过两层卷积层和最大池化层得到全连接层,结果是 256 个神经元的组合被向量化。这些全连接的神经元随后被检查,以通过对儿童面部的细微特征检测来识别准确的表情分类。全连接层的神经元经过 soft - max 激活函数,以近似函数值。
4. 结果与分析
所使用的数据集包含两类图像,分别对应被识别为 ASD_POSITIVE 和 ASD_NEGATIVE 的儿童。其中,ASD_POSITIVE 儿童的图像有 304 张,ASD_NEGATIVE 儿童的图像有 390 张。对这些图像进行预处理以消除重复图像后,选取了 193 张 ASD_POSITIVE 图像和 359 张 ASD_NEGATIVE 图像。在整个数据集中,80% 的图像被分类为训练数据集,20% 的图像被分类为测试数据集。
计算并分析了典型发展(TD)儿童和自闭症谱系障碍(ASD)儿童各种表情的概率。以下是所有七种识别出的面部表情的总体概率偏差表:
| 类别 | 面部表情 | 愤怒 | 厌恶 | 恐惧 | 快乐 | 悲伤 | 中立 | 困倦 |
| — | — | — | — | — | — | — | — | — |
| ASD | 愤怒 | 0 | 0.165923 | 0.105921 | 0.050293 | 0.117268 | 0.168714 | 0.068018 |
| ASD | 厌恶 | 0.16592 | 0 | 0.06 | 0.11563 | 0.04866 | 0.002791 | 0.09791 |
| ASD | 恐惧 | 0.10592 | 0.060002 | 0 | 0.05563 | 0.011347 | 0.062793 | 0.0379 |
| ASD | 快乐 | 0.05029 | 0.11563 | 0.055628 | 0 | 0.066975 | 0.118421 | 0.017725 |
| ASD | 悲伤 | 0.11727 | 0.048655 | 0.01135 | 0.06697 | 0 | 0.051446 | 0.04925 |
| ASD | 中立 | 0.16871 | 0.002791 | 0.06279 | 0.11842 | 0.05145 | 0 | 0.1007 |
| ASD | 困倦 | 0.06802 | 0.097905 | 0.037903 | 0.01772 | 0.04925 | 0.100696 | 0 |
| TD | 愤怒 | 0 | 0.199906 | 0.061775 | 0.166527 | 0.092745 | 0.146316 | 0.011966 |
| TD | 厌恶 | 0.19991 | 0 | 0.13813 | 0.03338 | 0.10716 | 0.05359 | 0.18794 |
| TD | 恐惧 | 0.06177 | 0.138131 | 0 | 0.104753 | 0.030971 | 0.084541 | 0.04981 |
| TD | 快乐 | 0.16653 | 0.033378 | 0.10475 | 0 | 0.07378 | 0.02021 | 0.15456 |
| TD | 悲伤 | 0.09275 | 0.10716 | 0.03097 | 0.073782 | 0 | 0.053571 | 0.08078 |
| TD | 中立 | 0.14632 | 0.05359 | 0.08454 | 0.020211 | 0.05357 | 0 | 0.13435 |
| TD | 困倦 | 0.01197 | 0.18794 | 0.049809 | 0.154561 | 0.080779 | 0.13435 | 0 |
从这些概率数据中可以得出以下结论:
- 任何具有最大概率情绪的儿童可能会转变为第二大概率的情绪。
- ASD 阳性和 ASD 阴性儿童的各种情绪概率不同。
- 通过表情分析还可以推断出情绪分析的不完美预测或差距。
与通过 Dlib 实现的 SVM 分类器相比,在易患自闭症行为的儿童和典型发展儿童中识别出的面部表情在大多数拥有的表情上增加了概率。以下是简单 SVM 线性分类器和 CNN 深度学习算法在 ASD 阳性和 ASD 阴性儿童中的概率变化表:
| 面部表情 | SVM 线性 | | CNN | |
| — | — | — | — | — |
| | ASD 阳性 | ASD 阴性 | ASD 阳性 | ASD 阴性 |
| 愤怒 | 0.046345 | 0.046512 | 0.03821 | 0.05545 |
| 厌恶 | 0.209656 | 0.245092 | 0.23595 | 0.22614 |
| 恐惧 | 0.152989 | 0.105871 | 0.16954 | 0.12547 |
| 快乐 | 0.095634 | 0.212718 | 0.12832 | 0.24249 |
| 悲伤 | 0.16421 | 0.139531 | 0.01432 | 0.11568 |
| 中立 | 0.214629 | 0.191544 | 0.28689 | 0.20115 |
| 困倦 | 0.116538 | 0.058732 | 0.12677 | 0.03362 |
概率显示,应用 CNN 时,SVM 表情分类中获得的最大概率受到更高的影响。CNN 还能识别和量化 ASD 阳性和 ASD 阴性儿童最可能表达的表情。
在自闭症儿童中,中性和厌恶表情的概率最高;而在典型发展儿童中,快乐和中性表情占主导。这表明,当孩子无缘无故地表现出厌恶表情且频繁重复时,家长和照顾者需要密切观察。这些发现为自闭症的早期筛查提供了生物标志物。
以下是 SVM 和 CNN 在 ASD 阳性和 ASD 阴性儿童中对情绪分类概率的对比图示意(此处以文字描述代替实际图形):
graph LR
A[ASD 阳性 - SVM] --> B[愤怒]
A --> C[厌恶]
A --> D[恐惧]
A --> E[快乐]
A --> F[悲伤]
A --> G[中立]
A --> H[困倦]
I[ASD 阳性 - CNN] --> J[愤怒]
I --> K[厌恶]
I --> L[恐惧]
I --> M[快乐]
I --> N[悲伤]
I --> O[中立]
I --> P[困倦]
Q[ASD 阴性 - SVM] --> R[愤怒]
Q --> S[厌恶]
Q --> T[恐惧]
Q --> U[快乐]
Q --> V[悲伤]
Q --> W[中立]
Q --> X[困倦]
Y[ASD 阴性 - CNN] --> Z[愤怒]
Y --> AA[厌恶]
Y --> AB[恐惧]
Y --> AC[快乐]
Y --> AD[悲伤]
Y --> AE[中立]
Y --> AF[困倦]
从图中可以看出,应用 CNN 后,ASD 阳性和 ASD 阴性儿童的分心概率降低,这是因为 CNN 对人脸标志点进行了更深入的分析。
4.1 表情分析的准确性
在第一次运行线性分类器(i)时,准确率为 0.775362318841;在第二次运行线性分类器(ii)时,准确率为 0.847826086957。因此,SVM 线性分类器分析的平均准确率约为 0.811594202899,即约 81%;而通过 CNN 进行情绪预测的准确率约为 0.89754。通过增加神经网络中的隐藏层数量,可以进一步提高准确率,实现更精细的情绪类别分类。
5. 总结
自闭症谱系障碍是一种需要早期发现的神经发育障碍,面部表情分析和情绪识别在识别高功能自闭症儿童的沟通缺陷中起着至关重要的作用。通过面部标志点矢量化识别面部特征,并使用 SVM 线性分类器对表情进行分类。结果表明,ASD 阳性儿童主要表现出厌恶表情,其次是中立表情;而 ASD 阴性儿童主要表现出快乐表情,其次是厌恶和中立表情。
使用卷积神经网络进行面部表情识别可以提高分类的准确性。CNN 旨在识别静态图像中的表情,将其分割成帧以深入学习特征。通过改进适当的面部表情结果,可以最小化不同表情的分心概率。通过应用循环神经网络识别实时视频输入中的表情,可以进一步提高通过表情进行筛查方法的准确性。深度学习技术(RNN 和 CNN)相结合可以提供更好的筛查准确性。
6. 未来工作
面部表情检测面临的主要挑战是,在使用实时视频分析时,需要将计算能力提高到基于 GPU 的分析水平。此外,无接触环境下的筛查只是基本水平的筛查,还需要对刺激物的物体干扰进行分析。这种差异化的筛查技术可能会提高自闭症儿童神经发育障碍的识别率。可以扩展表情分析,以在应用时间序列时发现更多情绪。整个过程可以扩展到结合现有技术和循环神经网络,对儿童进行实时视频分析。
超级会员免费看

169

被折叠的 条评论
为什么被折叠?



