Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Face Recognition With PCA + SVM

一个基于 OpenCV + scikit-learn 的简洁人脸识别项目,作为机器学习入门项目与传统视觉方法演示案例上传到 GitHub。

项目的核心流程非常直接:

人脸图片 -> 灰度化/缩放 -> PCA 降维 -> SVM 分类 -> 输出身份

项目特点

  • 结构简单:只保留训练和推理两个核心脚本,适合直接展示到 GitHub
  • 传统机器学习方案:不依赖深度学习框架,CPU 即可运行
  • 支持两种推理方式:单张图片识别、摄像头实时识别
  • 代码易读:适合写课程报告、答辩讲解或二次开发

技术栈

  • Python
  • OpenCV
  • NumPy
  • scikit-learn
  • joblib

方法说明

1. Haar Cascade 人脸检测

在预测阶段,先使用 OpenCV 自带的 haarcascade_frontalface_default.xml 检测图像中的人脸区域,再对裁剪出的人脸进行识别。

2. PCA 特征降维

原始人脸图像会被统一缩放到固定尺寸,例如 60 x 60,然后拉平成向量。

  • 原始维度:60 x 60 = 3600
  • PCA 后维度:默认 20

这样做可以减少冗余信息、降低训练成本,并保留主要的人脸特征。

3. SVM 分类

将 PCA 输出的低维特征输入 SVM(RBF kernel) 分类器,完成多类别人脸身份识别。

默认参数:

  • C = 100
  • gamma = 0.01

目录结构

face_recognition_github/
├── README.md
├── requirements.txt
├── .gitignore
├── train.py
└── predict.py

实际使用时,你还需要在该目录下自行准备数据集和模型目录:

face_recognition_github/
├── dataset/
│   ├── person_a/
│   │   ├── 1.jpg
│   │   ├── 2.jpg
│   │   └── ...
│   ├── person_b/
│   │   ├── 1.jpg
│   │   └── ...
│   └── ...
└── models/

其中:

  • dataset/ 中每个子文件夹代表一个人
  • 子文件夹名称就是该类别的标签名
  • models/ 由训练脚本自动创建并保存模型文件

数据集要求

  • 建议每个人至少准备 10 张以上清晰人脸图片
  • 图片中人脸尽量清晰、正脸、无遮挡
  • 各类别样本数量尽量均衡
  • 尽量包含不同光照、角度和表情,提高泛化能力

安装依赖

pip install -r requirements.txt

训练模型

在项目根目录下运行:

python train.py

如果你想指定数据集目录或模型输出目录:

python train.py --dataset dataset --model-dir models

如果你想调整图像尺寸和 PCA 维度:

python train.py --width 80 --height 80 --components 30

测试单张图片

python predict.py test test.jpg

如果想保存识别后的结果图:

python predict.py test test.jpg --save-path result.jpg

摄像头实时识别

python predict.py camera

ESC 键退出窗口。

训练输出

训练完成后,models/ 目录下会生成:

  • svm_face_model.pkl:SVM 分类器
  • pca_model.pkl:PCA 降维模型
  • labels.pkl:类别名称列表

适合展示的内容

如果你准备把这个项目放到 GitHub 首页展示,可以突出以下几点:

  • 这是一个传统机器学习人脸识别项目
  • 重点使用了 PCA + SVM,而不是深度学习网络
  • 项目结构简洁,适合教学、演示和课程答辩
  • 支持从训练到预测的完整闭环

可继续优化的方向

  • 在训练阶段加入更稳定的人脸检测和人脸对齐
  • 加入数据增强与超参数搜索
  • 增加“陌生人拒识”机制
  • PCA + SVM 升级为 FaceNet / ArcFace 等深度特征方案
  • 增加 Web 页面或桌面界面,提升演示效果

说明

这个仓库是从原始课程项目中整理出的 GitHub 精简版本,保留了最核心、最容易展示的训练与推理逻辑,适合直接上传公开仓库。

About

A simple facial recognition implement

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages