35、基于多模态深度学习的自闭症儿童表情分析

基于多模态深度学习的自闭症儿童表情分析

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 的分析水平。此外,无接触环境下的筛查只是基本水平的筛查,还需要对刺激物的物体干扰进行分析。这种差异化的筛查技术可能会提高自闭症儿童神经发育障碍的识别率。可以扩展表情分析,以在应用时间序列时发现更多情绪。整个过程可以扩展到结合现有技术和循环神经网络,对儿童进行实时视频分析。

内容概要:本文提出了一种基于“空调-电动汽车”联合虚拟储能的海岛微电网优化调度方法,旨在解决海岛地区能源供给不稳定及可再生能源波动性大的挑战。通过综合利用空调负荷的热惰性与电动汽车的灵活充放电能力,构建联合虚拟储能系统,有效提升微电网对风电、光伏等间歇性电源的消纳能力,并增强系统的调节灵活性和运行经济性。研究建立了涵盖发电侧、负荷侧与储能侧协同互动的多目标优化调度模型,综合考虑用户舒适度、出行需求、设备运行约束等因素,采用Matlab进行仿真验证,实现了系统运行成本降低、弃风弃光减少以及能源利用效率提升的目标。该方法充分挖掘了需求侧资源的潜在储能价值,为偏远地区独立微电网的安全、低碳、经济运行提供了有效的技术路径。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事微电网、综合能源系统、虚拟储能或需求侧响应相关研究的研究生及科研人员。; 使用场景及目标:①应用于海岛、偏远地区等独立微电网的优化调度设计;②研究如何利用温控负荷与电动汽车协同提供虚拟储能服务;③实现可再生能源高比例消纳与系统经济性运行的平衡; 阅读建议:建议结合Matlab代码深入理解模型构建细节,重点关注目标函数设定、约束条件处理以及空调与电动汽车建模方法,可进一步拓展至多时间尺度调度或引入不确定性因素进行改进研究。
内容概要:本文围绕“基于多维核密度估计的光伏-负荷场景生成方法”展开研究,提出利用多维核密度估计技术对光伏发电与电力负荷的不确定性进行建模,生成高精度、高还原度的典型运行场景。该方法能够有效捕捉光伏出力与负荷需求之间的时空相关性及时变特性,克服传统场景生成方法中对数据分布假设过强、忽略变量间依赖关系等局限性。研究通过Matlab编程实现了完整的场景生成流程,涵盖数据预处理、多维核密度估计建模、随机场景抽样及场景削减等关键环节,并结合实测数据验证了所提方法在提升场景代表性、减少冗余场景数量以及增强优化模型求解效率方面的显著优势。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源并网、微电网优化、综合能源系统等领域的工程技术人员。; 使用场景及目标:①用于可再生能源接入背景下的电力系统随机优化、鲁棒优化等需要输入典型场景的研究与应用;②支撑微电网调度、储能配置、需求响应等场景下的不确定性建模与仿真分析;③为学术论文复现、课题研究提供可靠的技术路径与代码支持。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注多维核密度估计的实现细节与场景削减算法的应用逻辑,同时可参考文档中列出的其他相关研究方向以拓展技术视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值