[关闭]
@wujiaju 2020-12-22T08:45:43.000000Z 字数 1640 阅读 1366

实验3:基于AdaBoost算法的人脸检测


实验目的

  1. 深入理解Adaboost的原理
  2. 熟悉人脸检测的基本方法
  3. 学会利用Adaboost解决人脸检测问题,将理论和实际工程接轨
  4. 体验机器学习的完整过程

数据集

  1. 本实验提供1000张图片用于训练(和验证)人脸分类器,其中500张是含有人脸的RGB图片,储存在./datasets/original/face 内;另外500张是不含有人脸的RGB图,储存在./datasets/original/nonface 内。
  2. 数据集包含在此处内,请自行下载并将其切分为训练集,验证集。

实验环境

python3, 至少包含下列python包:sklearn, numpy, matplotlib, pickle, PIL.
建议直接安装anaconda3,其已经内置了以上python包。

实验形式

个人独立完成

实验步骤

人脸分类

  1. 读取数据集数据。读取图片,将全部图片转成大小为24*24的灰度图,数据集正负类样本的个数和比例不限,数据集标签形式不限。
  2. 处理数据集数据,提取NPD特征。使用feature.pyNPDFeature类的方法提取特征。(提示:因为预处理数据集的时间比较长,可以用pickle库中的 dump() 函数将预处理后的特征数据保存到缓存中,之后可以使用 load()函数读取特征数据)。
  3. 将数据集切分为训练集和验证集,本次实验不切分测试集。
  4. 根据ensemble.py中的预留的接口编写AdaboostClassifier所有函数。以下为AdaboostClassifier类中的fit()方法的思路:
        4.1 初始化训练集的权值 , ,每一个训练样本被赋予相同的权值。
        4.2训练一个基分类器,基分类器可以使用sklearn.tree库中 DecisionTreeClassifier
        4.3 计算基分类器在训练集上的分类误差率
        4.4 根据分类误差率 ,计算参数
        4.5 更新训练集的权值 .
        4.6 重复以上4.2-4.6的步骤进行迭代,迭代次数为基分类器的个数。
  5. AdaboostClassifier中的方法在验证集上进行预测并计算精确率,并用sklearn.metrics库的classification_report()函数将预测结果写入classifier_report.txt中。

人脸检测

  1. 运行face_detection.py,体验OpenCV自带的基于Haar特征和AdaBoost的人脸检测方法,运行结果保存为detect_result.jpg。
  2. 可以使用其它图片替换实验默认的测试图片,体验人脸检测结果。

整理实验结果,形成图表,并完成实验报告(实验报告模板及代码模板将包含在此处


实验代码及报告提交方式

提交内容

提交时间

评分标准

评分项 占比 说明
出勤 40% 特殊情况可向学院请假,请假条交给助教
代码有效 30% 代码是否正确
实验报告 30% 是否认真按照实验模板填写

注意事项

参考资料

[1] 周志华. 机器学习. 北京:清华大学出版社,2016:173-177

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注