文章目录
- 边界框回归(Bounding-Box Regression)
- 一、边界框回归简介
- 二、边界框回归细节
- 三、相关问题思考
- 1. 为什么使用相对坐标差?
- 2. 为什么宽高比要取对数?
- 3. 为什么IoU较大时边界框回归可视为线性变换?
 
 
边界框回归(Bounding-Box Regression)
本篇博客实际上参考了CSDN另一篇博客写的 这是链接。但那篇博客的排版和语言表达实在是太烂了,公式错误也很多,以至于我花了很多时间才看明白。我将自己的思考结果记录下来,供大家参考。
一、边界框回归简介
那么边界框回归所要做的就是利用某种映射关系,使得候选目标框(region proposal) P = ( P x , P y , P w , P h ) P=\left(P_{x}, P_{y}, P_{w}, P_{h}\right) P=(Px,Py,Pw,Ph)的映射目标框无限接近于真实目标框(ground-truth)。将上述原理利用数学符号表示如下:在给定一组候选目标框 ,寻找到一个映射 f f f ,使得 f ( P x , P y , P w , P h ) = ( G ^ x , G ^ y , G ^ w , G ^ h ) ≈ ( G x , G y , G w , G h ) f(P_{x}, P_{y}, P_{w}, P_{h})=(\hat{G}_{x}, \hat{G}_{y}, \hat{G}_{w}, \hat{G}_{h}) \approx\left(G_{x}, G_{y}, G_{w}, G_{h}\right) f(Px,Py,Pw,Ph)=(G^x,G^y,G^w,G^h)≈(Gx,Gy,Gw,Gh) 。其中 ( G x , G y , G w , G h ) \left(G_{x}, G_{y}, G_{w}, G_{h}\right) (Gx,Gy,Gw,Gh)表示真实值, ( G ^ x , G ^ y , G ^ w , G ^ h ) (\hat{G}_{x}, \hat{G}_{y}, \hat{G}_{w}, \hat{G}_{h}) (G^x,G^y,G^w,G^h)表示预测值。

边界框回归过程图像表示如图1所示。在图1中红色框代表候选目标框,绿色框代表真实目标框,蓝色框代表边界框回归算法预测目标框。红色圆圈代表选候选目标框的中心点,绿色圆圈代表选真实目标框的中心点,蓝色圆圈代表选边界框回归算法预测目标框的中心点。
二、边界框回归细节
RCNN论文里指出,边界框回归是利用平移变换和尺度变换来实现映射 。平移变换的计算公式如下:
 
     
      
       
        
         
         
          
           
            {
           
           
            
             
              
               
                
                 
                  
                   G
                  
                  
                   ^
                  
                 
                 
                  x
                 
                
                
                 =
                
                
                 
                  P
                 
                 
                  w
                 
                
                
                 
                  d
                 
                 
                  x
                 
                
                
                 (
                
                
                 P
                
                
                 )
                
                
                 +
                
                
                 
                  P
                 
                 
                  x
                 
                
               
              
             
            
            
             
              
               
                
                 
                  
                   G
                  
                  
                   ^
                  
                 
                 
                  y
                 
                
                
                 =
                
                
                 
                  P
                 
                 
                  h
                 
                
                
                 
                  d
                 
                 
                  y
                 
                
                
                 (
                
                
                 P
                
                
                 )
                
                
                 +
                
                
                 
                  P
                 
                 
                  y
                 
                
               
              
             
            
           
          
         
         
         
          
           (1)
          
         
        
       
       
         \left\{\begin{array}{l} \hat{G}_{x}=P_{w} d_{x}(P)+P_{x} \\ \hat{G}_{y}=P_{h} d_{y}(P)+P_{y} \end{array}\right.\tag1 
       
      
     {G^x=Pwdx(P)+PxG^y=Phdy(P)+Py(1)
尺度变换的计算公式如下:
     
      
       
        
         
         
          
           
            {
           
           
            
             
              
               
                
                 
                  
                   G
                  
                  
                   ^
                  
                 
                 
                  w
                 
                
                
                 =
                
                
                 
                  P
                 
                 
                  w
                 
                
                
                 exp
                
                
                 
                
                
                 
                  (
                 
                 
                  
                   d
                  
                  
                   w
                  
                 
                 
                  (
                 
                 
                  P
                 
                 
                  )
                 
                 
                  )
                 
                
               
              
             
            
            
             
              
               
                
                 
                  
                   G
                  
                  
                   ^
                  
                 
                 
                  h
                 
                
                
                 =
                
                
                 
                  P
                 
                 
                  h
                 
                
                
                 exp
                
                
                 
                
                
                 
                  (
                 
                 
                  
                   d
                  
                  
                   w
                  
                 
                 
                  (
                 
                 
                  P
                 
                 
                  )
                 
                 
                  )
                 
                
               
              
             
            
           
          
         
         
         
          
           (2)
          
         
        
       
       
         \left\{\begin{array}{l} \hat{G}_{w}=P_{w} \exp \left(d_{w}(P)\right) \\ \hat{G}_{h}=P_{h} \exp \left(d_{w}(P)\right) \end{array}\right.\tag2 
       
      
     {G^w=Pwexp(dw(P))G^h=Phexp(dw(P))(2)
 其中 
    
     
      
       
        
         d
        
        
         ⋆
        
       
       
        (
       
       
        P
       
       
        )
       
      
      
       d_{\star}(P)
      
     
    d⋆(P)(
    
     
      
       
        ⋆
       
      
      
       \star
      
     
    ⋆代表
    
     
      
       
        x
       
       
        ,
       
       
        y
       
       
        ,
       
       
        w
       
       
        ,
       
       
        h
       
      
      
       x,y,w,h
      
     
    x,y,w,h),是基于
    
     
      
       
        
         pool
        
        
         5
        
       
      
      
       \text{pool}_5
      
     
    pool5的四个线性函数。在这里,我们将特征记作
    
     
      
       
        
         ϕ
        
        
         5
        
       
       
        (
       
       
        P
       
       
        )
       
      
      
       \phi_{5}(P)
      
     
    ϕ5(P),那么
    
     
      
       
        
         d
        
        
         ⋆
        
       
       
        (
       
       
        P
       
       
        )
       
       
        =
       
       
        
         w
        
        
         ⋆
        
        
         T
        
       
       
        
         ϕ
        
        
         5
        
       
       
        (
       
       
        P
       
       
        )
       
      
      
       d_\star(P)=w_{\star}^T\phi_5(P)
      
     
    d⋆(P)=w⋆Tϕ5(P)。因此,我们可以利用最小二乘法或者梯度下降算法进行求解 ,RCNN论文中给出了 的求解表达式:
 
     
      
       
        
         
         
          
           
            
             w
            
            
             ∗
            
           
           
            =
           
           
            
             
              
               arg
              
              
               
              
              
               min
              
              
               
              
             
             
              
               
                w
               
               
                ^
               
              
              
               ⋆
              
             
            
           
           
            
             ∑
            
            
             N
            
           
           
            
             
              (
             
             
              
               t
              
              
               ∗
              
              
               i
              
             
             
              −
             
             
              
               
                w
               
               
                ^
               
              
              
               ∗
              
              
               T
              
             
             
              
               ϕ
              
              
               5
              
             
             
              
               (
              
              
               
                P
               
               
                i
               
              
              
               )
              
             
             
              )
             
            
            
             2
            
           
           
            +
           
           
            λ
           
           
            
             
              ∥
             
             
              
               
                w
               
               
                ^
               
              
              
               ∗
              
             
             
              ∥
             
            
            
             2
            
           
          
         
         
         
          
           (3)
          
         
        
       
       
         w_{*}=\underset{\hat{w}_\star}{\arg \min } \sum^{N}\left(t_{*}^{i}-\hat{w}_{*}^{T} \phi_{5}\left(P^{i}\right)\right)^{2}+\lambda\left\|\hat{w}_{*}\right\|^{2}\tag3 
       
      
     w∗=w^⋆argmin∑N(t∗i−w^∗Tϕ5(Pi))2+λ∥w^∗∥2(3)
 其中:
 
     
      
       
        
         
         
          
           
            {
           
           
            
             
              
               
                
                 t
                
                
                 x
                
               
              
             
             
              
               
                
                
                 =
                
                
                 
                  
                   
                    G
                   
                   
                    x
                   
                  
                  
                   −
                  
                  
                   
                    P
                   
                   
                    x
                   
                  
                 
                 
                  
                   P
                  
                  
                   w
                  
                 
                
               
              
             
            
            
             
              
               
                
                 t
                
                
                 y
                
               
              
             
             
              
               
                
                
                 =
                
                
                 
                  
                   
                    G
                   
                   
                    y
                   
                  
                  
                   −
                  
                  
                   
                    P
                   
                   
                    y
                   
                  
                 
                 
                  
                   P
                  
                  
                   h
                  
                 
                
               
              
             
            
            
             
              
               
                
                 t
                
                
                 w
                
               
              
             
             
              
               
                
                
                 =
                
                
                 log
                
                
                 
                
                
                 
                  
                   G
                  
                  
                   w
                  
                 
                 
                  
                   P
                  
                  
                   w
                  
                 
                
               
              
             
            
            
             
              
               
                
                 t
                
                
                 h
                
               
              
             
             
              
               
                
                
                 =
                
                
                 log
                
                
                 
                
                
                 
                  
                   G
                  
                  
                   h
                  
                 
                 
                  
                   P
                  
                  
                   h
                  
                 
                
               
              
             
            
           
          
         
         
         
          
           (4)
          
         
        
       
       
         \left\{\begin{aligned} t_{x} & =\frac{G_{x}-P_{x}}{P_{w}} \\ t_{y} & =\frac{G_{y}-P_{y}}{P_{h}} \\ t_{w} & =\log \frac{G_{w}}{P_{w}} \\ t_{h} & =\log \frac{G_{h}}{P_{h}} \end{aligned}\right.\tag4 
       
      
     ⎩
              ⎨
              ⎧txtytwth=PwGx−Px=PhGy−Py=logPwGw=logPhGh(4)
 
    
     
      
       
        
         t
        
        
         x
        
       
      
      
       t_{x}
      
     
    tx、
    
     
      
       
        
         t
        
        
         y
        
       
      
      
       t_{y}
      
     
    ty是中心点的平移移动,
    
     
      
       
        
         t
        
        
         w
        
       
      
      
       t_{w}
      
     
    tw、
    
     
      
       
        
         t
        
        
         h
        
       
      
      
       t_{h}
      
     
    th是尺度放缩量。
可以看出,上述模型就是一个Ridge回归模型。在RCNN中,边界框回归要设计4个不同的Ridge回归模型分别求解 w x , w y , w w , w h w_x,w_y,w_w,w_h wx,wy,ww,wh 。
回归模型的输入是什么?是 ( P x , P y , P w , P h ) (P_{x}, P_{y}, P_{w}, P_{h}) (Px,Py,Pw,Ph)这个四维张量吗?
真正的输入是这个窗口对应的 CNN 特征,也就是 R-CNN 中的 pool 5 \text{pool}_5 pool5(特征向量)。训练阶段也会用到Ground Truth的坐标数据,也就是式 ( 4 ) (4) (4)提到的 t ⋆ t_\star t⋆。
三、相关问题思考
1. 为什么使用相对坐标差?
在式 ( 4 ) (4) (4)中 ,那么为什么要将真实框的中心坐标与候选框的中心坐标的差值分别除以宽高呢?

接下来的讨论中,我们假设边界框的回归使用绝对坐标。
首先我们假设两张尺寸不同,但内容相同的图像,图像如图2所示。我们假设经过CNN提取的特征分别为
    
     
      
       
        
         ϕ
        
        
         1
        
       
      
      
       \phi_1
      
     
    ϕ1和
    
     
      
       
        
         ϕ
        
        
         2
        
       
      
      
       \phi_2
      
     
    ϕ2。同时,我们假设
    
     
      
       
        
         x
        
        
         i
        
       
      
      
       x_i
      
     
    xi为第
    
     
      
       
        i
       
      
      
       i
      
     
    i个真实目标框的
    
     
      
       
        x
       
      
      
       x
      
     
    x坐标, 
    
     
      
       
        
         p
        
        
         i
        
       
      
      
       p_i
      
     
    pi为第
    
     
      
       
        i
       
      
      
       i
      
     
    i个候选目标框的
    
     
      
       
        x
       
      
      
       x
      
     
    x 坐标,边界框回归
    
     
      
       
        x
       
      
      
       x
      
     
    x坐标的映射关系为
    
     
      
       
        
         g
        
        
         x
        
       
      
      
       g_x
      
     
    gx。那么我们可以得出:
 
     
      
       
        
         
         
          
           
            {
           
           
            
             
              
               
                
                 
                  g
                 
                 
                  x
                 
                
                
                 
                  (
                 
                 
                  
                   ϕ
                  
                  
                   1
                  
                 
                 
                  )
                 
                
                
                 =
                
                
                 
                  x
                 
                 
                  1
                 
                
                
                 −
                
                
                 
                  p
                 
                 
                  1
                 
                
               
              
             
            
            
             
              
               
                
                 
                  g
                 
                 
                  x
                 
                
                
                 
                  (
                 
                 
                  
                   ϕ
                  
                  
                   2
                  
                 
                 
                  )
                 
                
                
                 =
                
                
                 
                  x
                 
                 
                  2
                 
                
                
                 −
                
                
                 
                  p
                 
                 
                  2
                 
                
               
              
             
            
           
          
         
         
         
          
           (5)
          
         
        
       
       
         \left\{\begin{array}{l} g_x\left(\phi_{1}\right)=x_{1}-p_{1} \\ g_x\left(\phi_{2}\right)=x_{2}-p_{2} \end{array}\right.\tag5 
       
      
     {gx(ϕ1)=x1−p1gx(ϕ2)=x2−p2(5)
 理论上来说,CNN得出的特征
    
     
      
       
        
         ϕ
        
        
         1
        
       
      
      
       \phi_1
      
     
    ϕ1和
    
     
      
       
        
         ϕ
        
        
         2
        
       
      
      
       \phi_2
      
     
    ϕ2是相似的,那么线性函数映射的结果也应该是接近的。但显然
    
     
      
       
        
         x
        
        
         1
        
       
       
        −
       
       
        
         p
        
        
         1
        
       
       
        ≠
       
       
        
         x
        
        
         2
        
       
       
        −
       
       
        
         p
        
        
         2
        
       
      
      
       x_{1}-p_{1} \neq x_{2}-p_{2}
      
     
    x1−p1=x2−p2。由于尺寸的变化,候选目标框和真实目标框坐标之间的偏移量也随着尺寸而成比例缩放,即这个值不是恒定不变的。但是归一化的比例值可以认为是近似相同的。
关于CNN是否有尺度不变性,这篇论文有说明过Object Detection in 20 Years: A Survey
因此,我们必须对 x x x坐标的偏移量除以候选目标框的宽, y y y坐标的偏移量除以候选目标框的高。只有这样才能得到候选目标框与真实目标框之间坐标偏移量值的相对值。同时使用相对偏移量的好处可以自由选择输入图像的尺寸,使得模型灵活多变。也就说,对坐标偏移量除以宽高就是在做尺度归一化,即尺寸较大的目标框的坐标偏移量较大,尺寸较小的目标框的坐标偏移量较小。
2. 为什么宽高比要取对数?
类比问题1,我们不禁要问为什么不直接使用宽高的比值作为目标进行学习,非得“多此一举”取对数?
线性函数输出的是一个实数,因为宽和高乘的倍数必须大于0,所以要取指数的形式,反过来就是取对数。
3. 为什么IoU较大时边界框回归可视为线性变换?
‘Rich feature hierarchies for accurate object detection and semantic segmentation’文章中曾经提到,IoU必须大于 0.6 0.6 0.6时,才可以使用线性回归,否则边界框回归将是一个复杂的非线性问题。
知乎上一篇博客曾经尝试解释过这个问题 这是链接。
 
但我觉得是不合理的,当 G w ≈ P w G_{w} \approx P_{w} Gw≈Pw 和 G h ≈ P h G_{h} \approx P_{h} Gh≈Ph时候,式 ( 4 ) (4) (4)的后两项确实可以视为某种线性的变换。但我们要理解到,我们回归的输入量是 ( P x , P y , P w , P h ) (P_{x}, P_{y}, P_{w}, P_{h}) (Px,Py,Pw,Ph)窗口对应的 CNN 特征,而不是四维张量 ( P x , P y , P w , P h ) (P_{x}, P_{y}, P_{w}, P_{h}) (Px,Py,Pw,Ph)。所以这里分析原边界框的坐标和Ground-truth的边界框坐标是否是线性关系是没有意义的。



















