[关闭]
@liushiya 2018-10-25T10:10:44.000000Z 字数 1991 阅读 4248

基于AdaBoost算法的人脸检测

机器学习 实验


You can click here to get the English version.

实验目的

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

数据集

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

实验环境

  1. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

实验时间及地点

2018年10月14日 下午2:00-5:00 B7-138(谭明奎老师) B7-238(吴庆耀老师)

提交截止时间

2018-11-18 上午12:00

实验形式

个人独立完成

实验步骤

人脸分类
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% 特殊情况可向学院请假
代码有效 20% 代码有效是指代码中是否存在语法错误
实验报告 30% 是否按照实验模板填写
代码规范 10% 主要考核代码变量命名是否规范

实验提交方式

提交流程

  1. 访问222.201.187.50:7001
  2. 点击对应的提交入口
  3. 填写自己的姓名、学号,上传pdf格式的报告和zip格式的代码压缩包

注意事项


有任何的意见或者建议都可以直接在qq群中向助教反映。

参考文献

[1] Liao, S., Jain, A. K., & Li, S. Z. (2016). A fast and accurate unconstrained face detector. IEEE transactions on pattern analysis and machine intelligence, 38(2), 211-223.
[2] 周志华. 机器学习. 北京:清华大学出版社,2016:173-177

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