文章目录
- 边界框回归(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的边界框坐标是否是线性关系是没有意义的。