LBP(续)

圆形LBP算子

基本的LBP算子的最大缺陷在于它只覆盖了一个固定半径范围内的小区域,这显然不能满足不同尺寸和频率纹理的需要。为了适应不同尺度的纹理特征,并达到灰度和旋转不变性的要求,Ojala等对LBP算子进行了改进,将3x3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的LBP算子允许在半径为R的圆形邻域内有任意多个像素点。从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子。比如下图定了一个5x5的邻域:

lbph算法算深度学习嘛 lbp算子主要缺点_lbph算法算深度学习嘛

上图内有八个黑色的采样点,每个采样点的值可以通过下式计算:



xp=xc+Rcos(2πpP)yp=yc−Rsin(2πpP) x p = x c + R cos ⁡ ( 2 π p P ) y p = y c − R sin ⁡ ( 2 π p P )

通过上式可以计算任意个采样点的坐标,但是计算得到的坐标未必完全是整数,所以可以通过双线性插值来得到该采样点的像素值:



f(x,y)≈[1−xx][f(0,0)f(1,0)f(0,1)f(1,1)][1−yy] f ( x , y ) ≈ [ 1 − x x ] [ f ( 0 , 0 ) f ( 0 , 1 ) f ( 1 , 0 ) f ( 1 , 1 ) ] [ 1 − y y ]

LBP等价模式

一个LBP算子可以产生不同的二进制模式,对于半径为R的圆形区域内含有P个采样点的LBP算子将会产生2p 2 p 种模式。很显然,随着邻域集内采样点数的增加,二进制模式的种类是急剧增加的。例如:5×5邻域内20个采样点,有220 2 20 =1,048,576种二进制模式。如此多的二值模式无论对于纹理的提取还是对于纹理的识别、分类及信息的存取都是不利的。

同时,过多的模式种类对于纹理的表达是不利的。例如,将LBP算子用于纹理分类或人脸识别时,常采用LBP模式的统计直方图来表达图像的信息,而较多的模式种类将使得数据量过大,且直方图过于稀疏。因此,需要对原始的LBP模式进行降维,使得数据量减少的情况下能最好的代表图像的信息。

为了解决二进制模式过多的问题,提高统计性,Ojala提出了采用一种“等价模式”(Uniform Pattern)来对LBP算子的模式种类进行降维。Ojala等认为,在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,Ojala将“等价模式”定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式类。如00000000(0次跳变),00000111(只含一次从0到1的跳变),10001111(先由1跳到0,再由0跳到1,共两次跳变)都是等价模式类。除等价模式类以外的模式都归为另一类,称为混合模式类。

通过这样的改进,二进制模式的种类大大减少,而不会丢失任何信息。模式数量由原来的2p 2 p 种减少为p(p−1)+2 p ( p − 1 ) + 2 种。这种丢掉2次以上跳变信息的方法,实际上就是一种高频滤波

LBP特征匹配

如果将以上得到的LBP值直接用于人脸识别,其实和不提取LBP特征没什么区别,会造成计算量准确率等一系列问题。我们可以将一副人脸图像分为7x7的子区域,并在子区域内根据LBP值统计其直方图,以直方图作为其判别特征。这样做的好处是在一定范围内避免图像没完全对准的情况,同时也对LBP特征做了降维处理。

 

假设图像或其他数据的特征可以构成直方图,根据直方图间距的不同可以得到多种类型的直方图:



Ψ(x)=[H−1(x),H0(x),…,HL(x)] Ψ ( x ) = [ H − 1 ( x ) , H 0 ( x ) , … , H L ( x ) ]

H的下标每增加1,则直方图间距变为原来的两倍。H−1 H − 1 表示每个样本都有自己的bin,而HL H L 表示所有的样本都在一个bin中。

两个数据集的相似度可以用下式来匹配:

KΔ(Ψ(y),Ψ(z))=∑i=0LwiNi 
   
    
     
     
       K 
      
     
       Δ 
      
     
    
      ( 
     
    
      Ψ 
     
    
      ( 
     
    
      y 
     
    
      ) 
     
    
      , 
     
    
      Ψ 
     
    
      ( 
     
    
      z 
     
    
      ) 
     
    
      ) 
     
    
      = 
     
     
     
       ∑ 
      
      
      
        i 
       
      
        = 
       
      
        0 
       
      
     
       L 
      
     
     
     
       w 
      
     
       i 
      
     
     
     
       N 
      
     
       i 
      
     
   
其中,wi=12i,Ni=I(Hi(y),Hi(z))−I(Hi−1(y),Hi−1(z)) 
   
    
     
     
       w 
      
     
       i 
      
     
    
      = 
     
     
     
       1 
      
      
      
        2 
       
      
        i 
       
      
     
    
      , 
     
     
     
       N 
      
     
       i 
      
     
    
      = 
     
    
      I 
     
    
      ( 
     
     
     
       H 
      
     
       i 
      
     
    
      ( 
     
    
      y 
     
    
      ) 
     
    
      , 
     
     
     
       H 
      
     
       i 
      
     
    
      ( 
     
    
      z 
     
    
      ) 
     
    
      ) 
     
    
      − 
     
    
      I 
     
    
      ( 
     
     
     
       H 
      
      
      
        i 
       
      
        − 
       
      
        1 
       
      
     
    
      ( 
     
    
      y 
     
    
      ) 
     
    
      , 
     
     
     
       H 
      
      
      
        i 
       
      
        − 
       
      
        1 
       
      
     
    
      ( 
     
    
      z 
     
    
      ) 
     
    
      ) 
     
   。

I的计算方法如下图所示:

lbph算法算深度学习嘛 lbp算子主要缺点_从0到1_02

(a)里的y和z代表两种数据分布,三幅图代表三层金字塔,每一层里有间距相等的虚线。

可以看到红点蓝点的位置是固定的,但是根据直方图宽度的不同可以划到不同的直方图里,如(b)所示。

(c)图就是L的计算结果,是通过(b)里两种直方图取交集得来的。

注意:这里的I表示的是交集里元素的个数(即(a)中的连线数),而不是交集的个数(即(c)中的绿条个数)。

Chi square statistic

在《数学狂想曲(五)》中,我们给出了χ2 χ 2 检验的原理和公式。这里仅对于直方图相似度给出最后的公式:



χ2w(S,M)=∑i,jwj(Si,j−Mi,j)2Si,j+Mi,j χ w 2 ( S , M ) = ∑ i , j w j ( S i , j − M i , j ) 2 S i , j + M i , j

其中,i为图像的某块小区域,j为小区域内直方图的某一列的值。wj w j 是每块小区域的权重,比如在人脸区域中,眼睛、嘴巴等区域包含的信息量更为丰富,那么这些区域的权重就可以设置的大一些。

Fisherface

Fisherface由Peter N. Belhumeur, Joao P. Hespanha和David J. Kriegman于1997年提出。

Peter N. Belhumeur,Brown University本科(1985)+Harvard University博士(1993),Yale University和Columbia University教授。

Joao P. Hespanha,Instituto Superior Técnico, Lisbon, Portugal本硕(1991,1993)+ Yale University博士。UCSB教授。

David J. Kriegman,Princeton University本科(1983)+Stanford University硕博(1984,1989)。UCSD教授。

 

概述

和之前的方法不同,Viola-Jones不仅是一个算法,更是一个框架,前DL时代的人脸检测一般都采用该框架。其准确度也由Fisherface时代的不到70%,上升到90%以上。当然,这里所用的数据集以今天的眼光来看,只能算作玩具了——基本都是正面、无遮挡的标准照,光照也比较理想。但不管怎么说,这也是第一个进入商业实用阶段的目标检测框架,目前大多数的商业化产品仍然基于该框架。

Viola-Jones框架主要有三个要点:

1.Haar-like特征,AdaBoost算法和Cascade结构。Haar-like特征利用积分图像(Integral Image)快速的计算矩形区域的差分信号;

2.AdaBoost算法选择区分能力强的特征结合Stump函数做弱分类器,然后把若干这些弱分类器线性组合在一起增强分类性能;

3.Cascade结构做Early decision快速抛弃明显不是人脸的扫描窗口。

下面我们分别描述一下这几个要点。

Integral image

Integral image一种计算差分数据的快速方法。

lbph算法算深度学习嘛 lbp算子主要缺点_直方图_03

上图左侧是图像的像素值,右侧是相应的积分图。

lbph算法算深度学习嘛 lbp算子主要缺点_直方图_04

 

Cascade分类器

Cascade分类器,简单来说,就是先将几个通过Adaboost方法得到的强分类器进行排序,排序原则是简单的放在前边。因为通常来说人脸只占一小部分,所以可以很放心地在前几层分类器就拒绝掉大部分非人脸区域。只要前一级拒绝了,就不在进入下一级分类器,这可以大大提高速度。其本质是一颗退化决策树。