我发现,在实施Fast(er)RCNN时,总是在边框的宽度和高度上添加一个较小的值。为什么要在宽度和高度上添加少量数字?
例如,在Fast RCNN中,添加了cfg.EPS
(default是1e-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
被添加到widths
和heights
中。
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
答案 0 :(得分:1)
我不知道第一种情况是怎么回事,但是在第二种情况下,左右位置都在边界框内。因此,跨接的像素数必须同时包含左右位置。这就是为什么添加1。
答案 1 :(得分:0)
我有一种强烈的感觉,代码将继续使用方框的区域并将其用于计算IoU。如果是这样,则需要确保边界框实际上具有一些非零区域。
答案 2 :(得分:0)
我认为。实际上,需要计算“边界框边框”上的像素。因此,您需要排除它们(加1)。