前面对R-CNN系的目标检测方法进行了个总结,其中对目标的定位使用了边框回归,当时对这部分内容不是很理解,这里单独学习下。
R-CNN中最后的边框回归层,以候选区域(Region proposal)为输入,来对Region proposal中包含的目标进行准将的定位。但是,这个输入的候选区域通常不会正确的包含目标区域,如下图:
绿色边框是飞机的Ground Truth边框,绿色的是Region proposal边框,虽然Region proposal中包含了目标飞机,但是其定位却不是很准确,这就需要对候选区域的边框进行修正,调整其位置和大小,以使其能够更为接近绿色的Ground Truth边框。
边框回归的方法
无论是Ground Truth边框还是Region proposal边框,可以使用一个四元组 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)来表示。其中, ( x , y ) (x,y) (x,y)表示边框的中心位置, ( w , h ) (w,h) (w,h)表示边框的宽和高。
在边框回归时,实际就是找到一种变换,使修正的后的Region proposal边框位置和Ground Truth边框尽可能的接近,公式表示如下:
f ( P x , P y , P w , P h ) ≈ ( G x , G y , G w , G h ) f(P_x,P_y,P_w,P_h) \approx (G_x,G_y,G_w,G_h) f(Px,Py,Pw,Ph)≈(Gx,Gy,Gw,Gh)
其中, ( P x , P y , P w , P h ) (P_x,P_y,P_w,P_h) (Px,Py,Pw,Ph)输入的候选区域的边框, ( G x , G y , G w , G h ) (G_x,G_y,G_w,G_h) (Gx,Gy,Gw,Gh)是Ground Truth边框。
那么这种变换 f f f怎么进行呢?
观察边框的四元组表示 ( x , y ) (x,y) (x,y)表示中心位置,对于位置的修正通常使用平移; ( w , h ) (w,h) (w,h)表示边框的宽和高,则可以使用缩放进行修正。也就是对边框的回归修正,
-
对边框的中心位置进行平移 ( Δ x , Δ y ) (\Delta x,\Delta y) (Δx,Δy)
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \Delta x &= P_…
则修正的中心位置就是
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \hat{G_x} &= … -
对边框的宽和高进行缩放 ( S w , S h ) (S_w,S_h) (Sw,Sh),
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ S_w &= exp(d_w…
修正后的边框的宽和高为
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \hat{G_w} &= …
修正后的边框 ( G x ^ , G y ^ , G w ^ , G h ^ ) (\hat{G_x},\hat{G_y},\hat{G_w},\hat{G_h} ) (Gx^,Gy^,G