zoukankan      html  css  js  c++  java
  • 级联分类器

    级联分类器


    读"P. Viola, M. Jones. Rapid Object Detection using a Boosted Cascade of Simple Features[J].CVPR, 2001"笔记

    论文的主要贡献点

    • 提出积分图(Integral image)的概念。在该论文中作者使用的是Haar-like特征,然后使用积分图能够非常迅速的计算不同尺度上的Haar-like特征。

    • 使用AdaBoost作为特征选择的方法选择少量的特征在使用AdaBoost构造分类器。

    • 以级联的方式,从简单到复杂逐步串联分类器,形成级联分类器。


    积分图
    1.首先介绍下 haar-like feature
    使用提取特征而不是直接使用像素值有两方面原因:

    The most common reason is that features can act to encode ad-hoc domain knowledge that is difficult to learning using a finite quantity of training data.

    For this system there is also a second critical motivation for features: the feature based system operates much faster than a pixel-based system.

    Haar-like feature是由等面积的正负矩形区域生成的算子,该论文给出了3种Haar-like feature 算子,如下图所示:

    enter description here

    Haarlike.JPG

    其中A,B分别表示的是水平方向和竖直方向上的梯度,C包含了3个矩形区域,D计算的是对角方向上的梯度。对于不同尺度的算子可以得到不同尺度下的特征。该论文中在(24,24)的图像区域内提取了超过18万个特征,虽然没说算子怎么构造的。

    后来的学者设计了更多更复杂的Haar-like featurs:

    enter description here

    haarlikefeature.JPG

    haar-like 特征的haar来源于haar基函数,如下图:

    enter description here

    HaarFunction.jpg

    haar特征就类似二维情形下的haar基函数。

    1. 积分图

    积分图可以借助于二维积分很容易理解,我们的被积函数是图像的灰度值,定义域是图像区域,那么可以以积分的方式计算从原点到任意点形成的矩形区域内的像素和。

    例如区间的概率值可以直接使用分布函数得到:, Haar-like特征算子的区域也是矩形区域,所以在计算haar-like特征时可以使用积分图快速的计算。

    对于论文中提到的三种特征算子,我们假设从左上角坐标开始坐标索引值依次增大,那么对于A类特征值可如下计算:

    其中是积分表

    two-rectangle 特征需要6次查表,如上式, three-rectangle 特征需要8次查表, four-rectangle特征需要9次查表。


    基于AdaBoost的特征选择

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

    enter description here

    adaboostFS.JPG


    级联分类器

    文中给出了一种比传统的AdaBoost分类器更快的分类方法,即级联分类器。该分类器由若干个简单的AdaBoost分类器串接得来。假设AdaBoost分类器要实现99%的正确率,1%的误检率需要200维特征,而实现具有99.9%正确率和50%的误检率的AdaBoost分类器仅需要10维特征,那么通过级联,假设10级级联,最终得到的正确率和误检率分别为:

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

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

    级联分类器的训练过程

    In pratice a very simple framework is used to produce an effective classifier which is highly efficient. Each stage in the cascade reduces the false positive rate and decreases the detection rate. A target is selected for the minimum reduction in false positives and the maximum decrease in detection. Each stage is trained by adding features until the target detection and false positives rate are met ( these rates are determined by testing the detector on a validation set). Stages are added until the overall target for false for false positive and detection rate is met.

    1. 预先选定每一层的最大可接受误检率fpr(maximum acceptable rate of fpr) 和每一层最小可接受的检测率(minimum acceptable detection rate)

    2. 设定系统整体的可接受误检率

    3. 初始化. FPR=1, TPR = 1(检测率)

    4. 循环. 如果当前,添加一层adaboost分类器,如果该分类器训练过程中没有达到该层最大误检率就继续添加新特征,添加新特征时降低阈值,使分类器的检测率大于给定值,然后更新

    5. 每一级分类器使用的训练集是上一级分类器判定正确的样本,而其中的错分的被当作负样本。这使得下一级的分类器更关注那些更难区分的样本。


    cascade detector 示意图

    enter description here

    cascade.JPG


    参考文献

    Viola Jones Face Detector


  • 相关阅读:
    Spring4 MVC json问题(406 Not Acceptable)
    java 从网络Url中下载文件
    Java基础知识(一) 自增、自减运算符
    java文件读写操作
    java集合运算:求交集,并集,集合差
    httpclient+jsoup实现网页信息抓取
    java web使用gradle配置详情
    关于mysql登录异常处理方法
    windows server 2012 r2 远程桌面连接指南
    Java生成带小图标的二维码-google zxing 工具类
  • 原文地址:https://www.cnblogs.com/YiXiaoZhou/p/5875492.html
Copyright © 2011-2022 走看看