请用几句话向我解释Viola-Jones人脸检测方法的工作原理。
答案 0 :(得分:78)
Viola-Jones探测器是一个强大的,二元分类器构建的几个弱 探测器
Each weak detector is an extremely simple binary classifier
在学习阶段,训练一系列弱探测器以便进行训练 使用Adaboost获得所需的命中率/未命中率(或精确度/召回率) 为了检测对象,原始图像被分成几个矩形 补丁,每个补丁都提交给级联
如果矩形图像补丁通过所有级联阶段,那么 它被归类为“积极的” 该过程以不同的比例重复
实际上,在较低的水平, 物体探测器的基本组件 只是需要说的话 原始的某个子区域 图像包含一个istance 感兴趣的对象与否。那是 什么是二元分类器。
基本的弱分类器基于一个非常简单的视觉特征(那些 一种特征通常被称为“类哈尔特征”)
Haar-like功能包含类本地 通过减去a的总和来计算的特征 该剩余部分的特征子区域 功能区域。
这些特征的特点是它们易于计算,并且使用积分图像,计算效率非常高。
Lienhart介绍了一组延伸的类Haar特征(见图)
这些是标准的Haar式特征,已扭曲45度。 Lienhart最初没有使用扭曲的棋盘格Haar-like(x2y2),因为它们代表的对角线元素可以简单地用扭曲表示
但是很明显,这个功能的扭曲版本也可以实现和使用。
这些扭曲的类似Haar的特征也可以使用扭曲45度的整体图像快速有效地计算。唯一的实施问题是 扭曲的特征必须四舍五入为整数值,以便它们与像素边界对齐。此过程类似于缩放哈尔样时使用的舍入 更大或更小的窗户的功能,但一个区别是45度 扭曲特征,用于高度和宽度的整数像素数 特征意味着像素的对角线坐标将始终位于相同的对角线像素集上
这意味着与垂直和水平标准相比,可用的不同尺寸的45度扭曲特征的数量显着减少
对齐的功能。
所以我们有类似的东西:
关于公式,使用积分图像快速计算类哈尔特征看起来像:
最后,here is a c++ implementation使用了Ivan Kusalic的ViolaJones.h
查看完整的c ++ project go here
答案 1 :(得分:3)
Viola-Jones探测器是一个强二进制分类器构建的几个弱探测器。每个弱检测器都是一个非常简单的二元分类器
检测由以下部分组成:
Haar Filter
:从图像中提取特征到calssify(特征用于编码特殊领域知识)
Integral Image
:允许非常快速的功能评估
Cascade Classifier
:级联分类器由多级过滤器组成,用于对图像(图像的滑动窗口)进行分类是一个面。
以下是如何检测图像中的脸部的概述。
检测窗口在整个图像提取特征周围移动(由
haar filter
计算Integral Image
,然后将提取的特征发送到Cascade Classifier
以对其进行分类(如果它是面部)。滑动窗口逐个像素地移动。每次窗口移动时,窗口内的图像区域都将通过级联分类器。
Haar Filter
:您可以了解过滤器可以提取eyes
,bridge of the nose
等功能。
Integral Image
:允许非常快速的功能评估
Cascade Classifier
:
级联分类器由多级过滤器组成,如下图所示。每次滑动窗口移动时,滑动窗口内的新区域将逐级地通过级联分类器。如果输入区域未能通过阶段的阈值,则级联分类器将立即拒绝该区域作为面。如果一个区域成功通过所有阶段,它将被分类为面部候选者,可以通过进一步处理来细化。
更多详情:
首先,我建议您阅读源文件Rapid Object Detection using a Boosted Cascade of Simple Features,以便对该方法有一个概述。
如果您无法清楚地了解它,可以查看Viola-Jones Face Detection或Implementing the Viola-Jones Face Detection Algorithm或Study of Viola-Jones Real Time Face Detector了解详情。
这是一个python代码Python implementation of the face detection algorithm by Paul Viola and Michael J. Jones。
matlab代码here。