基于隐马尔可夫模型与神经网络的眼部状态识别与分析系统
项目介绍
本项目是一个集成隐马尔可夫模型(HMM)与人工神经网络(NN)的眼部状态识别系统,专门用于处理并分析眼动信号(如眼电信号或眼动仪采样数据)。系统通过融合统计时序模型与非线性分类器,实现了对注视、扫视和眨眼三种核心眼部行为的高精度识别。该系统涵盖了从原始信号模拟、深度预处理、特征工程到双模型训练与融合识别的完整科研流程,为疲劳监测、人机交互等研究领域提供了一套标准化的MATLAB实现方案。
功能特性
- 模拟眼动数据生成:系统能够自动合成包含注视、扫视(线性偏移)和眨眼(正弦尖峰)特征的眼部信号,并叠加高斯白噪声以模拟真实采集环境。
- 级联信号预处理:集成了中值滤波去噪、基于Butterworth高通滤波的基线漂移校正以及基于Z-Score的幅度归一化处理。
- 滑动窗口特征提取:采用动态滑动窗口技术,提取包括平均移动速度、标准差、峰峰值和过零率在内的多维特征向量。
- 统计时序建模:利用隐马尔可夫模型捕捉眼部状态之间的转移规律,通过量化特征序列学习状态转移阵与发射概率阵。
- 非线性模式识别:构建多层感知器神经网络,通过高维空间映射提升对复杂眼动模式的辨识能力。
- 智能决策融合:结合HMM的Viterbi时序解码逻辑与NN的后验概率输出,对识别结果进行逻辑校验。
- 全维度性能评估:系统自动生成混淆矩阵、神经网络收敛曲线、HMM状态转移热图以及原始信号与预测标签的对照视图。
系统要求
- 软件环境:MATLAB R2018b 或更高版本。
- 必备工具箱:Statistics and Machine Learning Toolbox(用于HMM及统计分析)、Deep Learning Toolbox(用于神经网络构建)。
实现逻辑说明
- 参数配置:系统默认采样频率为250Hz,针对注视(Fixation)、扫视(Saccade)和眨眼(Blink)三类状态进行建模,神经网络隐藏层设为15个神经元。
- 数据准备:
- 模拟生成60秒的眼动信号,其中注视作为基准状态。
- 扫视表现为一定时间窗口内的线性位移。
- 眨眼表现为高幅度的正弦波脉冲。
- 信号清洗:
- 使用5点中值滤波剔除突发脉冲噪声。
- 设置0.5Hz截止频率的高通滤波器消除零点漂移。
- 执行标准化处理确保特征映射在同一量级。
- 特征构造:
- 窗口跨度为25个采样点(约100ms),步长为12个采样点。
- 提取速度特征(基于一阶差分)、离散程度(标准差)、能量特征(峰峰值)和频率特征(过零率)。
- 模型训练:
- HMM部分:将速度特征离散化为10个等级,通过隐马尔可夫训练算法(hmmtrain)在100次迭代内优化转移矩阵。
- NN部分:基于patternnet构建模式识别网络,采用One-hot编码处理分类标签,迭代次数上限为500次。
- 识别与融合:
- 使用Viterbi算法计算测试序列在时序上的最优状态路径。
- 提取神经网络分类概率最高项。
- 在融合逻辑中,系统优先保留神经网络的细分预测结果,并辅助以HMM的时序约束检查。
算法与关键细节分析
- 状态转移机制:HMM通过定义的初始转移矩阵(如主对角线高概率设定)模拟了眼部状态的惯性特征,例如注视状态倾向于持续存在,而眨眼后通常会回归注视。
- 特征离散化:为了适配HMM的离散观测要求,系统对连续的速度特征进行了等间距量化(Quantization),将其映射到有限的观测空间。
- 神经网络结构:采用模式识别专用网络(Patternnet),能够通过反向传播算法自动学习特征空间中不同眼部行为的非线性边界。
- 性能评价体系:
- 准确率计算:直接对比测试集真值与融合预测结果。
- 精确率评估:针对每一类具体状态(注视、扫视、眨眼)分别计算识别精确度。
- 可视化展示:通过热图直观反映HMM学习到的状态转化逻辑,通过收敛曲线监控神经网络的学习效率。
使用方法
- 确保MATLAB环境中已安装上述必要工具箱。
- 将系统相关函数文件存放在同一工作目录下。
- 运行主程序脚本。
- 程序将自动在命令行输出识别准确率报告,并弹出包含四维评估指标的综合分析图表。
- 如需处理真实数据,可替换数据生成函数,将原始信号接入预处理流水线即可。