[R-CNN]边界框回归

R-CNN算法中,使用SVM分类器对候选建议进行分类后,使用对应类别的边界框回归器(bounding-box regression)预测其坐标偏移值,这一操作能够进一步提高检测精度

定义

假定候选建议$P=(P_{x}, P_{y}, P_{w}, P_{h})$($x,y$表示边界框中心坐标,$w,h$分别表示其宽和高)都有一个对应的标注边界框$G=(G_{x}, G_{y}, G_{w}, G_{h})$。$P$可经过转换得到近似$G$:

$$
\hat{G}{x} = P{w}d_{w}(P) + P_{x} \
\hat{G}{y} = P{h}d_{y}(P) + P_{y} \
\hat{G}{w} = P{w}exp(d_{w}(P)) \
\hat{G}{h} = P{h}exp(d_{h}(P))
$$

所以关键在于如何得到转换参数$d_{\ast}(P)$(其中$\ast=x,y,w,h$)。将CNN模型最后池化层输出的特征向量($\varnothing_{5}(P)$)作为输入函数,进行线性建模:

$$
d_{\ast}(P) = w_{\ast}^{T} \varnothing_{5}(P)
$$

利用正则化最小二乘法(岭回归,就是均方误差+L2权重衰减)来求解该线性回归问题

$$
w_{\ast}=\argmin (\sum_{i}^{N}(t_{\ast}^{i} - \hat{w}{\ast}^{T} \varnothing{5}(P^{i})^{2})) + \lambda \left | \hat{w}_{\ast} \right |^{2}
$$

其中回归目标$t_{\ast}$通过预先设定的$(P, G)$计算得到

$$
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})
$$

边界框回归器训练

  • R-CNN算法中,使用AlexNet作为CNN模型,其第5个池化层输出256*6*6大小特征向量,所以权重$w$大小为$9216\times 4$

  • 文章设置了候选建议和标注边界框的IoU阈值为>0.6

  • 文章设置了超参数$\lambda=1000$

使用随机梯度下降方法训练权重$w$,其实现参考:R-CNN/py/bbox_regression.py

相关阅读