为什么要在边界框上添加一个小数字?
Why add a small number on the bounding box?
我发现在 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
我不知道第一种情况发生了什么,但第二种情况看起来左右位置都在边界框内。因此,跨越的像素数必须包括左侧和右侧位置。这就是添加 1 的原因。
我有一种强烈的感觉,代码将继续处理方框的区域,并使用它们来计算 IoU。如果是这样,您需要确保边界框确实有一些非零区域。
我的opinion.Actually,"bounding box border"上的像素需要calculated.SO你需要排除它们(通过加1)。
我发现在 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
我不知道第一种情况发生了什么,但第二种情况看起来左右位置都在边界框内。因此,跨越的像素数必须包括左侧和右侧位置。这就是添加 1 的原因。
我有一种强烈的感觉,代码将继续处理方框的区域,并使用它们来计算 IoU。如果是这样,您需要确保边界框确实有一些非零区域。
我的opinion.Actually,"bounding box border"上的像素需要calculated.SO你需要排除它们(通过加1)。