在计算机视觉领域,最基本也最经典的一个问题就是目标识别(Object Detection):给出一张图像,用detector检测出图像中特定的object(如人脸)。这方面的论文最经典的恐怕要数《Rapid Object Detection using a Boosted Cascade of Simple Features》这篇了,截止目前(2015.4.2)已经引用10834次。Matlab的Computer Vision System Toolbox中的vision.CascadeObjectDetector System 以及 OpenCV中提供的Cascade Classification 都是基于这篇论文的算法。该算法的特点是在保证高准确率的基础上,速度也非常快。本文就结合自己的理解,对这篇论文做一个简略的阅读笔记。由于太过经典,网上有各种关于该论文的资料可供读者参详,本文只是个人笔记,不求详尽。
首先,目标检测的基本原理就是先通过训练集学习一个分类器,然后在测试图像中以不同scale的窗口滑动扫描整个图像;每次扫描做一下分类,判断一下当前的这个窗口是否为要检测的目标。算法的核心是分类,分类的核心一个是用什么特征,一个是用哪种分类器。该论文的贡献也就是在这两个方面。
特征
我们的分类器是对一个窗口(如20*20)进行分类,那就需要用到这个窗口的特征,比如颜色直方图、SIFT特征。本文中用的是 Harr-like 特征。解释一下。
Harr-like 特征是一类矩形特征,该文用了以下四种:
特征值的计算方式是:先分别求灰色矩阵和白色矩阵中的像素值(对于灰度图就是它的灰度值)的和,然后两者相减。由于四种中的每一种又可以有不同的大小,不同的位置,通过计算,可以验证一个24*24的窗口中有16万个这样的特征。
首先补充一下为什么这样的特征可以用,举个例子吧,看下图,两个矩形是通过后面的adaboost选出来的最好用的中的两个。第一个可以反映出眼睛区域更dark;第二个反映出眼睛比鼻梁上端更dark。