基于增量式ICA/PCA/LDA/SVM的实时人脸识别系统
项目简介
本项目是一个基于MATLAB开发的实时人脸识别与自适应学习平台。系统的核心设计理念是展示传统的“离线批处理学习”与现代“增量式在线学习”在人脸识别任务中的差异与结合。项目不依赖外部数据集,而是内置了一个合成人脸生成器,用于模拟具有光照变化、噪声和遮挡的人脸数据流。
通过集成主成分分析(PCA)、线性判别分析(LDA)、独立成分分析(ICA)以及支持向量机(SVM),系统首先建立一个静态的基准模型,随后在接收实时数据流的过程中,利用增量学习算法动态更新特征子空间和分类器,从而适应不断变化的数据分布。
功能特性
- 全流程零依赖:内置数据生成模块,直接运行代码即可生成模拟人脸数据(圆形、方形、菱形、条纹脸),无需配置外部数据库。
- 双模式学习架构:
*
离线批处理模式:使用全量数据进行标准的特征提取(Eigenfaces, Fisherfaces, FastICA)和SVM训练。
*
在线增量模式:模拟摄像头数据流,对每一个新样本进行“单次传递”学习,实时更新模型参数。
*
IPCA (增量PCA):动态更新特征向量和均值。
*
ILDA (增量LDA):在线更新类中心(Class Means),用于追踪类别变化。
*
Incremental ICA:基于随机梯度上升法(Stochastic Gradient Ascent)在线更新解混矩阵。
*
Incremental SVM:支持在线调整分类决策边界。
- 实时可视化监控:提供图形化界面,实时展示输入图像、动态变化的特征基(Eigenface/ICA Basis)、识别结果以及准确率曲线。
- 性能评估:自动对比离线训练耗时与在线处理耗时,计算增量学习在大样本流下的平均识别准确率。
系统要求
- MATLAB R2016b 或更高版本
- Statistics and Machine Learning Toolbox(用于部分统计计算和SVM功能支持)
- Image Processing Toolbox(用于图像显示和处理)
使用方法
- 将
main.m 文件保存在MATLAB的工作路径中。 - 在MATLAB命令窗口输入
main 并回车运行。 - 系统将自动执行以下步骤:
* 生成合成训练集和测试流数据。
* 执行离线训练并打印耗时。
* 弹出一个名为“实时人脸识别监控与增量学习”的窗口。
* 模拟50帧实时数据流,动态更新图表。
* 运行结束后弹出性能对比分析图表,并在控制台输出最终统计报告。
代码实现逻辑与算法细节
1. 数据生成模块 (Data Generation)
代码内部通过
generateData 函数通过数学几何方法合成4类人脸(32x32像素):
- 基底生成:分别生成圆形、方形、菱形和垂直条纹图案作为4个人的身份基底。
- 训练集:在基底上叠加随机高斯噪声和光照变化。
- 流式数据:在训练集基础上增加更大幅度的噪声,并随机添加遮挡(置黑部分像素),模拟真实环境中的非理想输入。
2. 离线批处理模块 (Batch Processing)
程序首先对静态数据集进行全量训练,建立初始模型:
* 实现了Snapshot方法(当维度大于样本数时)以提高计算效率。
* 提取前
nComponents(默认为10)个主成分作为特征子空间。
* 在PCA降维后的特征空间上进行操作,避免奇异性问题。
* 计算类内散度矩阵 ($S_w$) 和类间散度矩阵 ($S_b$),并引入正则化项防止矩阵不可逆。
* 最终投影矩阵结合了PCA和LDA的变换矩阵。
* 实现了标准的FastICA算法,包含白化(Whitening)预处理。
* 使用 $tanh$ 作为非线性函数,通过不动点迭代寻找独立成分。
* 使用“一对多”策略构建多类SVM分类器,作为系统的初始分类引擎。
3. 增量学习核心引擎 (Incremental Learning Engine)
这是系统的核心循环部分,模拟逐帧处理:
* 利用当前的增量均值和IPCA特征向量将新样本投影到特征空间。
* 调用SVM模型预测样本类别。
*
IPCA更新:采用CCIPCA(Candid Covariance-free IPCA)思想,更新特征值、特征向量及全局均值。
*
ILDA更新:核心逻辑通过加权平均法实时更新各类的类中心(Mean Vectors)和样本计数,以低计算成本追踪类内分布的变化。
*
Incremental ICA更新:
* 代码显式实现了基于Infomax原理的随机梯度算法。
* 首先对样本进行白化。
* 利用公式 $Delta W = eta (I - 2tanh(y)y^T)W$ 更新解混矩阵。
* 每步对权重矩阵进行正交化(QR分解),防止基向量退化。
*
Incremental SVM更新:
* 根据新样本的特征和真实标签,对现有的SVM模型进行在线更新(Warm Start或重校准),使其适应新的决策边界。
4. 实时可视化与评估
*
输入流:显示当前捕捉到的模拟人脸。
*
IPCA基向量:可视化当前第一主成分(Eigenface),可观察到它随样本增加逐渐清晰。
*
Inc-ICA基元:将ICA独立成分投影回图像空间显示,展示局部特征的学习过程。
*
识别状态:实时显示预测ID与真实ID的对比,并用颜色(绿/红)区分正误。
- 性能曲线:绘制随时间步长变化的累积准确率曲线,直观反映增量学习算法在初期震荡后逐渐稳定的过程。
- 最终报告:计算并展示批处理时间与所有增量步骤总时间的对比,验证增量算法在计算效率上的优势。