先附上参考文章吧。

文章其实是“P. Viola, M. Jones. Rapid Object Detection using a Boosted Cascade of Simple Features[J].CVPR, 2001”的学习笔记,下面第二个链接是文献的中英文版本。

https://www.cnblogs.com/YiXiaoZhou/p/5875492.html

https://www.cnblogs.com/wjgaas/p/3618557.html


基于AdaBoost的特征选择

实际应用中,对分类产生较大影响的往往只有少数的特征,比如传统的主成分分析方法(PCA)就是用来寻找这些对分类影响较大的特征,而论文中提取了180000多的特征,远远过完备(180000>>24*24),所以选择主要的特征是必要的。文中使用adaboost中的弱分类器实现特征的选择,在设计弱分类器时,仅考虑一维特征,选择误差最小的那个分类器作为该轮迭代产生的弱分类器,而对应的维度就是该轮迭代选择出的特征。其过程如下表:

在之前的文章中已经介绍过adaboost的算法模型了,其有很重要的一点就是可以用来做特征选择。这里的adaboost每一轮只选出一个特征。通过迭代一定轮数,就可以构建出一个adaboost的强分类器,同时也自动做了特征选择。

级联分类器

为了提高人脸检测的速度和精度,最终的分类器还需要通过几个强分类器级联得到。在一个级联分类系统中,对于每一个输入图片,顺序通过每个强分类器,前面的强分类器相对简单,其包含的弱分类器也相对较少,后面的强分类器逐级复杂,只有通过前面的强分类检测后的图片才能送入后面的强分类器检测,比较靠前的几级分类器可以过滤掉大部分的不合格图片,只有通过了所有强分类器检测的图片区域才是有效人脸区域。

到这里,应该能搞懂级联分类器Cascade做了什么事情。

AdaBoost训练出来的强分类器一般具有较小的误识率,但检测率并不很高。正确率就是TPR,误检率就是FPR。

较小的误实率的意思就是给我一个人脸特征,我有很大的概率可以把它判别为人脸特征。检测率不是很高的意思就是给我一个不是人脸的特征,我也有不小的概率将它划分为人脸特征。

一般情况下,高检测率会导致高误识率,这是强分类阈值的划分导致的,要提高强分类器的检测率就要降低阈值,要降低强分类器的误识率就要提高阈值,这是个矛盾的事情。据参考论文的实验结果,增加分类器个数可以在提高强分类器检测率的同时降低误识率,所以级联分类器在训练时要考虑如下平衡,一是弱分类器的个数和计算时间的平衡,二是强分类器检测率和误识率之间的平衡。

假设AdaBoost分类器要实现99%的正确率,1%的误检率需要200维特征,而实现具有99.9%正确率和50%的误检率的AdaBoost分类器仅需要10维特征,那么通过级联,假设10级级联,最终得到的正确率和误检率分别为(这个例子既考虑了特征个数既弱分类器个数又考虑了分类器检测率与误识率):

这个公式应该很好理解,因为多个强分类器之间是串行的。

可以看到通过级联adaboost分类器们能够使用较少的特征和较简单的分类器更快更好的实现分类。

另外在检测的过程中,因为TPR较高,所以一旦检测到某区域不是目标就可以直接停止后续检测。由于在人脸检测应用中非人脸区域占大部分,这样大部分检测窗口都能够很快停止,是分类速度得到很大的提高。

级联分类器的训练过程

这个训练流程与普通的训练稍微有点不一样。

第一层强分类器的样本的为全部样本,有正有负,第二层强分类的样本为第一层分类器预测正的那一部分,其中错分的作为负样本,正确的就是正样本,一次类推。

【机器学习】传统目标检测算法之级联分类器Cascade相关推荐

  1. 【机器学习】传统目标检测算法之Haar分类器

    引言 Haar分类器又称Viola-Jones识别器,是Viola和Jones分别在2001年的<Rapid Object Detection using a Boosted Cascade o ...

  2. 【机器学习】传统目标检测算法总结

    目标检测是什么 object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题. ...

  3. 2D: 传统目标检测算法综述

    一. 目标检测的发展历程 1. 2001年,V-J检测器诞生,主要用于人脸的检测: 2. 2006年,HOG + SVM的方法出现,主要用于行人的检测: 3. 2008年,rgb大神(记住这个人,后面 ...

  4. 【机器学习】传统目标检测算法之DPM

    前面介绍了一下HOG,HOG有一个缺点:很难处理遮挡问题,人体姿势动作幅度过大或物体方向改变也不易检测. 继2005年HOG提出之后,DPM模型在借鉴了HOG之后也被提了出来同时还取得了不错的成绩. ...

  5. 【机器学习】传统目标检测算法之HOG

    转载+理解:hog:https://www.cnblogs.com/wyuzl/p/6792216.html hog:https://blog.csdn.net/masibuaa/article/de ...

  6. C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码

    一.目标识别技术概述 1.摘要 目标检测是计算机视觉中最基本和最具挑战性的问题之一,它试图从自然图像中的大量预定义类别中定位目标实例.深度学习技术已成为直接从数据中学习特征表示的强大策略,并在通用目标 ...

  7. 干货|基于深度学习的目标检测算法面试必备(RCNN~YOLOv5)

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨不出名的小金@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/35406 ...

  8. 学习笔记之——基于深度学习的目标检测算法

    国庆假期闲来无事~又正好打算入门基于深度学习的视觉检测领域,就利用这个时间来写一份学习的博文~本博文主要是本人的学习笔记与调研报告(不涉及商业用途),博文的部分来自我团队的几位成员的调研报告(由于隐私 ...

  9. 计算机视觉目标检测算法总结1——简介

    目标检测是在图片中对可变数量的目标进行查找和分类 目标种类和数量问题 目标尺度问题 外在环境干扰问题 目标检测方法(深度学习) 基于一体化卷积网络的检测:Overfeat->YOLO->S ...

最新文章

  1. JQ_Web Uploader图片上传控件
  2. mac如何修改php.ini,mac 如何修改php.ini
  3. 5G UE — SIM Card
  4. mysql phpmyadmin 修改下一个自增值的开始位置 计数重置
  5. sklearn自学指南(part22)--支持向量机的分类与回归
  6. cfree是c语言程序的什么,用C-FREE编写的C语言程序
  7. 《剑指Offer》 二维数组中的查找
  8. World Wind Java开发之十——AnalyticSurface栅格渲染(转)
  9. Java各版本特性简介
  10. 图片压缩的另一种实现(3)
  11. c# String.Split数组省去空字符
  12. 学习Java可以干什么?
  13. 我的第二次知识图谱问答(末尾gan货)
  14. 你真的打算凑合过完这一生吗(转)
  15. 几款主流数据库的详细比较
  16. 面试文案策划要准备一些什么?
  17. DOM基础详细 包含多个案例
  18. (UTF-8)ASP汉字转拼音函数(附Access数据库)
  19. oracle decode 01427,錯誤的ORA-01427:單行子查詢返回多個行。
  20. wrl转换pcd格式Python实现

热门文章

  1. CVE-2019-14287(sudo提权)
  2. git add 失效
  3. Nvidia: Mx150 CUDA10安装驱动
  4. fputc会覆盖吗_深覆盖 VS 深覆合如何区分?这一篇看完就都明白了!
  5. 多项式幂函数(加强版)
  6. 文件操作中关于文件句柄的相关操作
  7. 从exe4j生成的exe中抽取jar文件
  8. MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
  9. phpstorm一个窗口打开多个项目
  10. GridView+ZedGraph【转】