机器学习之基于SVM实现多类人脸识别

之前利用Fisher线性分类器实现过多类人脸识别,这次还是同样的数据集,利用SVM实现人脸识别。
数据集如下所示:一共是40个人的人脸照片,每个人有10张图片。
在这里插入图片描述

1.实验原理

1.利用SVM实现人脸识别的结构如下所示:
在这里插入图片描述
2.利用主成分分析 PCA 实现特征提取

图像识别中,常常用矩阵来表示人脸图像。然而,高维图像数据对整个识别系统的识别
速度有限的,也不利于实时识别系统的实现。降维技术是解决这一问题的常用方法,使数据
原始图像高维空间转化为维数大大减小的特征空间,同时,又保留原始图像数据的绝大部
分信息

主成分分析利用 K-L 变换得到高维图像空间的一组正交基,保留其中较大的特征值对应的正交基,组成特征脸空间。将 PCA 用于人脸图像的最优表示,应用主分量重构人脸,提出特征脸(Eigenface)的概念,用 PCA 实现人脸图像的紧致表示,认为任何一幅图像都可以用一组特征脸的线性加权和来近似重构,其权重系数可以通过将人脸图像在本征脸空间投影得到,然后用投影到低维空间中基函数上的系数来表示人脸并进行识别,并采用**奇异值分解(SVD)**算法简化了特征脸的计算。计算流程如下所示:
在这里插入图片描述
3. SVM 分类器设计

支持向量机(Support Vector Machine,SVM)是在统计学理论的基础上发展起来的新一代学习算法,它在文本分类、手写识别、图像分类、生物信息学等领域中获得较好的应用。

SVM 是一个二分器,只能用于 2 类样本的分类,现在我们将它推广到多类问题。对 SVM 进行推广到能够处理多类问题。可采用一对一的投票策略。将 A、B、C、D 4 类样本分成多个两类分类训练集,即(A,B)、(A,C)、(A,D)、(B,C)、(B,D)、(C,D),得到 6 个(对于n 类问题,为 n(n-1)/2 个)SVM 二分器。在测试的时候,把测试样本 x 依次送入这 6 个二分器,采取投票形式,最后得到一组结果。投票是以如下方式进行。

初始化:vote(A)=vote(B)=vote(C )=vote (D)=0.
投票过程
如果使用训练集(A,B)得到的分类器将 x 判定为 A 类,则 vote(A)=vote(A)+1,否则vote(B)=vote(B)+1.
如果使用(A,C)训练的分类器将 x 判定为 A 类,则 vote(A)=vote(A)+1,否则 vote( C)=vote(C )+1;
如果使用(C,D)训练的分类器将 x 判定为 C 类,则vote( C)=vote( C)+1,否则 vote(D)=vote(D)+1。
最终判决
Max(vote(A),vote(B),vote©,vote(D))。如有两个以上的最大值,则一般可以简单的取第一个最大值所对应的类别。

2.实验内容

1.数据库的选择
选取 ORL 人脸数据库作为实验样本,总共 40 个人,每人 10 幅图像,图像大小为112*92 像素。图像本身已经经过处理,不需要进行归一化和校准等工作。实验样本分为训练样本和测试样本。首先设置训练样本集,选择 40 个人前 5 张图片作为训练样本,进行训练。然后设置测试样本集,将 40 个人后 5 张图片作为测试样本,进行选取识别。

2.实验要求
1)分别使用 PCA 降维到 20,50,100,200,然后训练分类器,对比分类结果,画出对比曲线;
2) 变换 SVM 的 kernel 函数,如分别使用径向基函数和多项式核函数训练分类器,对比分类结果,画出对比曲线;
3) 使用交叉验证方法,变换训练集及测试集,分析分类结果。

3.代码实现

1.导入库

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from sklearn.svm import SVC
from sklearn.decomposition import PCA
  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starlet_kiss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值