tensorflow得到最大IOU的盒子,但丢弃全零的盒子

时间:2018-05-28 08:13:37

标签: tensorflow

这个问题是根据这个问题构建的:(tensorflow remember the index after calculating getting the maximum box)。我发现丢弃的盒子全部为零特别难,所以我发布了一个新的。

完整说明:

假设我有两个盒子阵列,每个盒子的形状分别为(?, b1, 4)(?, b2, 4)(将?视为未知的批量大小):

box1: [[[1,2,3,4], [2,3,4,5], [3,4,5,6], [0,0,0,0], [0,0,0,0]...]...]
box2: [[[4,3,2,1], [3,2,5,4], [4,3,5,6]...]...]

(以上数字是任意设定的)

请注意,box1 可能会或可能不会最后有假方框[0,0,0,0])。

我想:

  1. 在每个批次中,对于box1中的每个非假冒 A (即不包含全零的框),在box2框中找到 B ,其中包含 A 的最大IOU(与工会交叉)(当然在同一批次中),然后附加元组(A,B)到列表 list_max

  2. 附加到 list_nonmax box2box1中没有最大IOU的所有方框iou_single_box(box1, box2)中的任何方框(当然是按批次分隔)

  3. 您可以认为:

    1. b1 b2 都是python变量,而不是张量流量张量。

    2. 计算单个框之间或一批框之间的IOU的方法已经存在,可以直接使用:

      (4,) box1 box2 的形状为iou_multiple_boxes(bbox1, bbox2)

      (b1, 4) bbox1 bbox2 的形状分别为(b2, 4)iou_batch_boxes(bbbox1, bbbox2)

      (?, b1, 4) bbbox1 bbbox2 的形状分别为(?, b2, 4)?(将box1视为未知的批量大小。)

    3. 您可以查看我之前发布的问题(tensorflow remember the index after calculating getting the maximum box)。我只添加一个约束:

      1. 我不希望box2中的任何框与b1中的任何框匹配。获取 list_max list_nonmax
      2. 请注意,未设置假方箱的数量。

        ****:我知道这个问题很复杂。我这样做是因为Tensorflow无法处理动态长度数组(在运行时必须为box1确定[0, 0, 0, 0]。因此,我在box1的末尾填充"Name | Address | Phone | Twitterlink | Facebooklink"以使长度固定。

1 个答案:

答案 0 :(得分:1)

我相信这很容易使用tf.boolean_mask()这样的代码(已测试):

System.Data.SqlClient.SqlException (0x80131904): Cannot open server "organisation.com" requested by the login.  The login failed

将输出

  

输入框:
  [[[0. 1. 2. 3.]
    [4. 5. 6. 7.]
    [0. 0. 0. 0.]
    [0. 0. 0. 0.]]

     

[[8. 9. 10. 11.]
    [12。 13. 14. 15.]
    [0. 0. 0. 0.]
    [0. 0. 0. 0.]]]
    ========================================
  [[[2. 3. 4. 5.]
    [6. 7. 8. 9.]
    [10。 11. 12. 13.]]

     

[[14。 15. 16. 17.]
    [18。 19. 20. 21.]
    [22。 23. 24. 25.]]]
    ========================================
  列表最大值:
  [[[0. 1. 2. 3.]
    [2. 3. 4. 5.]]

     

[[4. 5. 6. 7.]
    [10。 11. 12. 13.]]

     

[[8. 9. 10. 11.]
    [22。 23. 24. 25.]]

     

[[12。 13. 14. 15.]
    [18。 19. 20. 21.]]]
    ========================================
  列出nonmax:
  [[6. 7. 8. 9.]
   [14。 15. 16. 17.]]
    ========================================