博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PCA+SVM人脸识别
阅读量:4192 次
发布时间:2019-05-26

本文共 1568 字,大约阅读时间需要 5 分钟。

PCA+SVM人脸识别


PCA介绍

主成分分析(Principal Component Analysis, 简称PCA)是常用的一种降维方法.

算法步骤:

  • 输入: 样本集 D={
    x1,x2,...,xm}
    D = { x 1 , x 2 , . . . , x m }
    , 低维空间维数 d d ′
  • 过程:
    1. 对所有样本进行中心化: xixi1mmi=1xi x i ← x i − 1 m ∑ i = 1 m x i ;
    2. 计算样本的协方差矩阵: XXT X X T (有时用散布矩阵, 二者只相差一个倍数);
    3. 对协方差矩阵 XXT X X T 做特征值分解;
    4. 取最大的 d d ′ 个特征值所对应的特征向量 w1,w2,...,wd w 1 , w 2 , . . . , w d ′ .
  • 输出: 投影矩阵 W=(w1,w2,...,wd) W = ( w 1 , w 2 , . . . , w d ′ ) .

本例中使用PCA算法对人脸图片进行降维:人脸图片原始大小为 112×92 112 × 92 , 被拉长为 112×92=10304 112 × 92 = 10304 维向量, 利用PCA将这样的数据降维, 供后续匹配.


SVM介绍

支持向量机(Support Vector Machines, 简称SVM)是一种二类分类模型.

划分超平面为:

f(x)=wTϕ(x)+b f ( x ) = w T ϕ ( x ) + b

其优化目标函数为: ( αi α i 为拉格朗日乘子)

minα12i=1,j=1mαiαjyiyjK(xi,xj)i=1mαi m i n ⏟ α 1 2 ∑ i = 1 , j = 1 m α i α j y i y j K ( x i , x j ) − ∑ i = 1 m α i

s.t.i=1mαiyi=0 s . t . ∑ i = 1 m α i y i = 0

0αiC 0 ≤ α i ≤ C

其中 ϕ(x) ϕ ( x ) 为将 x x 映射到高维度的特征向量,

K
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
ϕ
(
x
j
)
为核函数(Kernel Function), 用于线性不可分的情况, 常见核函数有:

Name Expression
线性核函数 K(xi,xj)=xTixj K ( x i , x j ) = x i T x j
高斯(RBF)核函数 K(xi,xj)=exp(||xixj||2δ2) K ( x i , x j ) = e x p ( − | | x i − x j | | 2 δ 2 )

本例中利用SVM训练 One-VS-One Multiclass SVM 模型, 对前面PCA降维得到的数据进行分类.


人脸识别步骤

  1. 将每张人脸图片( m,n m , n )读取并展开成( m×n,1 m × n , 1 ), 假设总有 l l 张图片, 所有排列到一起, 一列为一张图片, 最终形成一个
    (
    m
    ×
    n
    ,
    l
    )
    的矩阵作为原始数据;
  2. 数据中心化: 计算平均脸, 所有列都减去张平均脸;
  3. 计算矩阵的协方差矩阵/散布矩阵, 求出特征值及特征向量, 并将其从大到小排列取前K个特征; (到这步特征已将至K维)
  4. 计算中心化后的数据在K维特征的投影;
  5. 基于上一步的数据进行 One-VS-One Multiclass SVM模型训练;
  6. 读取用于测试的人脸图片, 同训练图片一样处理;
  7. 利用训练出的模型对测试图片进行分类;
  8. 计算准确率.

代码实现

详见 .


  • 我的个人主页:
  • 我的CSDN博客:
  • 我的简书:
  • 我的GitHub:

转载地址:http://uiloi.baihongyu.com/

你可能感兴趣的文章
在接口后面能不能使用new操作符
查看>>
Windows API一日一练(37)MoveWindow函数
查看>>
C/C++内存问题检查利器—Purify (三)
查看>>
C/C++内存问题检查利器—Purify (二)
查看>>
让自定义的类型可以和任意的类型之间转换
查看>>
你讨厌 C++中的“
查看>>
STL的L细细品
查看>>
实实在在说多态(相同函数名 依据上下文 实现却不同)
查看>>
仿基因编程原理导论(里面的几个重要的概念正在做修正,所以这只能算是一个原理的初稿。)
查看>>
node的 http-server 启动以后 浏览器访问有问题
查看>>
解决VS+QT无法自动生成moc文件的问题
查看>>
wpf image资源释放问题
查看>>
apache tomcat 安装配置
查看>>
eclipse maven创建一个普通java项目
查看>>
java 发送https post请求
查看>>
java 显示顶层提示窗口
查看>>
java PrintWriter输出中文乱码的解决
查看>>
eclipse maven项目生成war包
查看>>
XML Schema和DTD的区别
查看>>
java web 配置文件
查看>>