RISC-V MCU中文社区

【分享】 基于级联分类器的人脸检测基本原理

发表于 开源蜂鸟E203 2021-06-10 04:23:04
0
2458
1

  • 参赛队名:红鲤鱼与绿鲤鱼与驴 队伍编号:CICC4179
  • 本次分享的内容是基于级联分类器的人脸检测基本原理
  • 1) 人脸检测概述
  • 关于人脸检测算法,目前主流方法分为两类,一类是基于知识,主要方法包括模板匹配,人脸特征,形状和边缘,纹理特征,颜色特征;另一类是基于统计,主要方法包括主成分分析和特征脸法,神经网络模型,隐马尔可夫模型,支持向量机,Adaboost算法等。基于知识的方法把人脸看作不同特征的组合,也就是通过人脸的眼睛,嘴巴,鼻子等特征及其组合关系来检测人脸。基于统计的方法将人脸看成统一的二维像素矩阵,通过大量的样本构建人脸子空间,通过相似度的大小来判断人脸是否存在。
  • 2) 基于灰度特征的人脸级联分类器
  • 基于灰度特征的人脸检测级联分类器属于基于统计的方法。从高层的输入输出角度来描述,软件输入是一张图像(可以表示为一个uint8_t或者uint16_t的数组),输出是检测的结果,如果检测到人脸会输出人脸的数量和对应的位置,反之则会输出未检测到人脸这一结果。
  • 注:该算法在github上有开源实现:https://github.com/nenadmarkus/pico
  • 3) 算法流程
  • 我们在图像上设置一定的搜索范围,初始化一系列的滑动窗口,然后把滑动窗口中的像素灰度值和级联分类器里预先训练好的468棵决策树中的节点进行比较,得到该窗口检测结果为人脸的置信度。如果置信度大于一定的阈值,那么我们认为人脸被检测到了,反之则为未检测到人脸。这里需要指出的一点是,可能会存在多个检测结果为阳性的窗口,鉴于此类情况,我们会在最后进行一次聚类,把多个阳性窗口合并成为一个。
  • 该算法还具有支持多尺度和任意旋转角度的扩展版本。关于多尺度,算法的实现细节在于它通过对于原图的降采样,构造了一系列图像的高斯金字塔,对于金字塔中的每一个尺度去进行检测。关于旋转不变性的支持,我们可以对输入的图片做一次几何变换,使其旋转特定角度,然后对该角度下的图片,进行基于级联分类器的人脸检测。把这两种扩展运算结合在一起,就可以大幅度提高检测器的鲁棒性。
  • 上图是决策树示意图。
喜欢1
用户评论

未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板