为什么要在边框上添加一个小数字?

时间:2018-12-28 11:19:01

标签: computer-vision object-detection

我发现,在实施Fast(er)RCNN时,总是在边框的宽度和高度上添加一个较小的值。为什么要在宽度和高度上添加少量数字?

例如,在Fast RCNN中,添加了cfg.EPSdefault1e-14):

ex_widths = ex_rois[:, 2] - ex_rois[:, 0] + cfg.EPS
ex_heights = ex_rois[:, 3] - ex_rois[:, 1] + cfg.EPS
ex_ctr_x = ex_rois[:, 0] + 0.5 * ex_widths
ex_ctr_y = ex_rois[:, 1] + 0.5 * ex_heights

gt_widths = gt_rois[:, 2] - gt_rois[:, 0] + cfg.EPS
gt_heights = gt_rois[:, 3] - gt_rois[:, 1] + cfg.EPS
gt_ctr_x = gt_rois[:, 0] + 0.5 * gt_widths
gt_ctr_y = gt_rois[:, 1] + 0.5 * gt_heights

Faster-RCNN中,1.0被添加到widthsheights中。

ex_widths = ex_rois[:, 2] - ex_rois[:, 0] + 1.0
ex_heights = ex_rois[:, 3] - ex_rois[:, 1] + 1.0
ex_ctr_x = ex_rois[:, 0] + 0.5 * ex_widths
ex_ctr_y = ex_rois[:, 1] + 0.5 * ex_heights

gt_widths = gt_rois[:, 2] - gt_rois[:, 0] + 1.0
gt_heights = gt_rois[:, 3] - gt_rois[:, 1] + 1.0
gt_ctr_x = gt_rois[:, 0] + 0.5 * gt_widths
gt_ctr_y = gt_rois[:, 1] + 0.5 * gt_heights

3 个答案:

答案 0 :(得分:1)

我不知道第一种情况是怎么回事,但是在第二种情况下,左右位置都在边界框内。因此,跨接的像素数必须同时包含左右位置。这就是为什么添加1。

答案 1 :(得分:0)

我有一种强烈的感觉,代码将继续使用方框的区域并将其用于计算IoU。如果是这样,则需要确保边界框实际上具有一些非零区域。

答案 2 :(得分:0)

我认为。实际上,需要计算“边界框边框”上的像素。因此,您需要排除它们(加1)。