✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
人脸识别技术是计算机视觉与模式识别领域非常活跃的研究课题,在身份验证、人机界面、可视通信、公安档案管理、基于内容的图像检索等很多方面都有着广泛的应用。然而,到目前为止,由于人脸识别问题自身的复杂性,使得虽然有众多科学研究人员潜心研究多年,也做出了许多的成果,但离彻底解决并达到实用,仍旧有很多关键性的问题需要解决。本文将人脸识别的经典算法PCA(PrinciPle ComPonent Analysis,主成分分析)与Adaboost算法相结合,改进了PCA人脸识别算法,识别率有明显提高。本文的主要工作包括: (1)详细介绍了PCA人脸识别的方法,对Adaboost算法做了理论分析,证明了将二者结合进行人脸识别的可行性; (2)在实现新方法的实验中发现,结合ORL人脸库,PCA+Adaboost方法的识别率明显高于PCA方法和Fisherface方法的识别率; (3)在实现新方法的实验中发现,结合ORL和Yaleb人脸库,PCA+Adaboost方法的识别率显著优于PCA方法的识别率。
⛄ 部分代码
function class = multiAdaboostClassify(TestFace, multiAdaboostStruct)% 采用1对1投票策略将 SVM 推广至多类问题的分类过程% 输入:--TestFace:测试样本集。m*n 的2维矩阵,每行一个测试样本% --multiAdaboostStruct:多类Adaboost的训练结果,由函数 multiAdaboostTrain 返回,默认是从Mat/multiAdaboostTrain.mat文件中读取%% 输出:--class: m*1 列向量,对应 TestFace 的类标签% 读入训练结果if nargin < 2 t = dir('Mat/multiAdaboostTrain.mat'); if length(t) == 0 error('没有找到训练结果文件,请在分类以前首先进行训练!'); end load('Mat/multiAdaboostTrain.mat');endnClass = multiAdaboostStruct.nClass; % 读入类别数AdaboostStruct = multiAdaboostStruct.AdaboostStruct; % 读入两两类之间的信息%%%%%%%%%%%%%%%%%%%%%%%% 投票策略解决多类问题 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%m = size(TestFace, 1);Voting = zeros(m, nClass); % m个测试样本,每个样本nPerson 个类别的投票箱for iIndex = 1:nClass-1 for jIndex = iIndex+1:nClass classes=ADABOOST_te(AdaboostStruct{iIndex}{jIndex},@threshold_te,TestFace); % 投票 Voting(:, iIndex) = Voting(:, iIndex) + (classes == 2); Voting(:, jIndex) = Voting(:, jIndex) + (classes == 1); end % for jClassend % for iClass% final decision by voting result[vecMaxVal, class] = max( Voting, [], 2 );%display(sprintf('TestFace对应的类别是:%d',class));
⛄ 运行结果
⛄ 参考文献
[1] 李超, 刘铁根, 刘宏利,等. 融合SVM和AdaBoost的近红外人脸识别方法[J]. 激光与红外, 2012, 42(2):5.
[2] 张旭东, 徐和根. 基于PCA和AdaBoost的改进人脸识别算法研究[J]. 中国电子商情:通信市场, 2013(3):8.
[3] 王宇. 基于PCA+ADABOOST方法的人脸识别技术[D]. 中山大学.
[4] 王鸿雁, 孟祥印, 赵阳,等. 基于Adaboost和PCA的嵌入式人脸识别方法[J]. 传感器与微系统, 2017, 36(6):4.
[5] LI Sheng-wen. 基于PCA+AdaBoost算法的人脸识别技术[J]. 计算机工程与应用, 2010(004):046.