PyTorch中更快的RCNN

时间:2020-03-10 16:20:55

标签: numpy pytorch

在尝试使用PyTorch实施Faster RCNN时,我遇到了很棒的指南here,并且对IoU计算阶段之后发生的操作感到困惑。 我知道可以将正标签分配给锚,其IoU:

  1. 大于0.7或
  2. 最接近边界框的最大值

,对于IoU小于0.3的锚点为负。其余的不在乎。 有人可以解释下一节中发生的情况吗?

考虑a和b的情况,我们需要在这里找到两件事

  • 每个gt_box及其对应的锚定框的最高iou
  • 每个锚定框及其对应的地面真相框的最高iou

案例1

gt_argmax_ious = ious.argmax(axis=0)
print(gt_argmax_ious)

gt_max_ious = ious[gt_argmax_ious, np.arange(ious.shape[1])]
print(gt_max_ious)

# Out:
# [2262 5620]
# [0.68130493 0.61035156]

案例2

 argmax_ious = iou.argmax(axis=1)
 print(argmax_ious.shape)
 print(argmax_ious)

 max_ious = ious[np.arange(len(inside_index)), argmax_ious]
 print(max_ious)
 # Out:
 # (22500,)
 # [0, 1, 0, ..., 1, 0, 0]
 # [0.06811669 0.07083762 0.07083762 ... 0.         0.         0.]

找到具有此max_ious(gt_max_ious)的anchor_boxes

 gt_argmax_ious = np.where(ious == gt_max_ious)[0]
 print(gt_argmax_ious)
 # Out:
 # [2262, 2508, 5620, 5628, 5636, 5644, 5866, 5874, 5882, 5890, 6112,
 #        6120, 6128, 6136, 6358, 6366, 6374, 6382]

现在我们有三个数组

  • argmax_ious-告诉哪个地面真理对象的每个锚点都具有最大iou。
  • max_ious-用每个锚点将max_iou告知地面真理对象。
  • gt_argmax_ious-告诉具有最高交叉点(IoU)重叠的锚点与地面真实框。

使用argmax_iousmax_ious,我们可以为满足[b]和[c]的锚框分配标签和位置。使用gt_argmax_ious,我们可以为满足[a]的锚框分配标签和位置。

0 个答案:

没有答案