【图像检测】基于AdaBoost算法实现人脸检测matlab源码
2021/5/5 20:25:31
本文主要是介绍【图像检测】基于AdaBoost算法实现人脸检测matlab源码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简要叙述一下AdaBoost算法的主要过程:
AdaBoost为每个数据样本分配权重,权重符合概率分布,初始权重符合均匀分布,串行训练M个模型,依据每轮训练的模型的错误率(被误分类样本的权重之和)确定当前模型在最终模型中的权重,以及更新训练样本的权重,误分类样本权重升高,分类正确的样本权重降低。
下图的算法流程来自于《统计学习方法》。
下面通过具体的实例来理解AdaBoost算法的流程,例子来自于《统计学习方法》。
第一轮迭代:
此时得到的组合模型中只有一个 ,此时
的分类结果就是最终模型的分类结果。第一轮迭代中6,7,8(6,7,8指的是x的值,不是指的序号)被误分类。此时得到的组合模型在训练数样本上的预测结果如下:
X |
y |
|
|
|
分类结果 |
0 |
1 |
0.4236 |
0.4236 |
1 |
正确 |
1 |
1 |
0.4236 |
0.4236 |
1 |
正确 |
2 |
1 |
0.4236 |
0.4236 |
1 |
正确 |
3 |
-1 |
-0.4236 |
-0.4236 |
-1 |
正确 |
4 |
-1 |
-0.4236 |
-0.4236 |
-1 |
正确 |
5 |
-1 |
-0.4236 |
-0.4236 |
-1 |
正确 |
6 |
1 |
-0.4236 |
-0.4236 |
-1 |
错误 |
7 |
1 |
-0.4236 |
-0.4236 |
-1 |
错误 |
8 |
1 |
-0.4236 |
-0.4236 |
-1 |
错误 |
9 |
-1 |
-0.4236 |
-0.4236 |
-1 |
正确 |
其中sign符号函数如下:
第二轮迭代:
第二轮迭代中3,4,5被误分类,此时得到的最终模型是前两轮模型的线性组合。那么在当前的组合条件下 的分类结果是怎样的?
X |
y |
|
|
|
|
分类结果 |
0 |
1 |
0.4236 |
0.6496 |
1.0732 |
1 |
正确 |
1 |
1 |
0.4236 |
0.6496 |
1.0732 |
1 |
正确 |
2 |
1 |
0.4236 |
0.6496 |
1.0732 |
1 |
正确 |
3 |
-1 |
-0.4236 |
0.6496 |
0.226 |
1 |
错误 |
4 |
-1 |
-0.4236 |
0.6496 |
0.226 |
1 |
错误 |
5 |
-1 |
-0.4236 |
0.6496 |
0.226 |
1 |
错误 |
6 |
1 |
-0.4236 |
0.6496 |
0.226 |
1 |
正确 |
7 |
1 |
-0.4236 |
0.6496 |
0.226 |
1 |
正确 |
8 |
1 |
-0.4236 |
0.6496 |
0.226 |
1 |
正确 |
9 |
-1 |
-0.4236 |
-0.6496 |
-1.0732 |
-1 |
正确 |
第三轮迭代:
第三轮迭代中0,1,2,9被误分类,此时得到的最终模型是前三轮模型的线性组合。那么在当前的组合条件下 的分类结果是怎样的?
X |
y |
|
|
|
|
|
分类结果 |
0 |
1 |
0.4236 |
0.6496 |
-0.7514 |
0.3218 |
1 |
正确 |
1 |
1 |
0.4236 |
0.6496 |
-0.7514 |
0.3218 |
1 |
正确 |
2 |
1 |
0.4236 |
0.6496 |
-0.7514 |
0.3218 |
1 |
正确 |
3 |
-1 |
-0.4236 |
0.6496 |
-0.7514 |
-0.5254 |
-1 |
正确 |
4 |
-1 |
-0.4236 |
0.6496 |
-0.7514 |
-0.5254 |
-1 |
正确 |
5 |
-1 |
-0.4236 |
0.6496 |
-0.7514 |
-0.5254 |
-1 |
正确 |
6 |
1 |
-0.4236 |
0.6496 |
0.7514 |
0.9774 |
1 |
正确 |
7 |
1 |
-0.4236 |
0.6496 |
0.7514 |
0.9774 |
1 |
正确 |
8 |
1 |
-0.4236 |
0.6496 |
0.7514 |
0.9774 |
1 |
正确 |
9 |
-1 |
-0.4236 |
-0.6496 |
0.7514 |
-0.3218 |
-1 |
正确 |
经过三轮迭代之后,在训练集上的错误率为0。
nTrainPosData = 200; nTrainNegData = 200; nLevels = 200; W = 19; H = 19; PTrainData = zeros(W, H, nTrainPosData); NTrainData = zeros(W, H, nTrainNegData); %% read train data fileFolder = '.\Datasets\FACES\'; pfiles = dir(fullfile(strcat(fileFolder,'*.pgm'))); fileNames = {pfiles.name}'; %转换成细胞数组 aa = 1:length(pfiles); %这段程序还没有看懂 a = randperm(length(aa)); trainPosPerm = aa(a(1:nTrainPosData)); for i=1:size(PTrainData,3) PTrainData(:,:,i) =imread(strcat(fileFolder,fileNames{i})); end fileFolder = '.\Datasets\FACES\'; nfiles = dir(fullfile(strcat(fileFolder,'*.pgm'))); fileNames = {nfiles.name}'; %转换成细胞数组 aa = 1:length(nfiles); %这段程序还没有看懂 a = randperm(length(aa)); trainNegPerm = aa(a(1:nTrainNegData)); for i=1:size(NTrainData,3) NTrainData(:,:,i) =imread(strcat(fileFolder,fileNames{i})); end %% read test data testPosPerm = setdiff(1:length(pfiles), trainPosPerm); testNegPerm = setdiff(1:length(nfiles), trainNegPerm); PTestData = zeros(W, H, length(testPosPerm)); NTestData = zeros(W, H, length(testNegPerm)); fileFolder = '.\Datasets\FACES\'; pfiles = dir(fullfile(strcat(fileFolder,'*.pgm'))); fileNames = {pfiles.name}'; %转换成细胞数组 % for i=1:size(PTestData,3) for i=1:200 PTestData(:,:,i) =imread(strcat(fileFolder,fileNames{i})); end fileFolder = '.\Datasets\FACES\'; nfiles = dir(fullfile(strcat(fileFolder,'*.pgm'))); fileNames = {nfiles.name}'; %转换成细胞数组 % for i=1:size(NTestData,3) for i=1:200 NTestData(:,:,i) =imread(strcat(fileFolder,fileNames{i})); end %% Cparams = Train(PTrainData, NTrainData, PTestData, NTestData, nLevels); save('.\Cparams.mat', 'Cparams');
完整代码添加QQ1575304183
这篇关于【图像检测】基于AdaBoost算法实现人脸检测matlab源码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现