调用tf.image.non_max_suppression时获取ValueError

时间:2019-12-20 09:15:49

标签: tensorflow nms

我想使用tensorflow tf.image.non_max_suppression函数。

我尝试了以下两个片段:

indices = tf.image.non_max_suppression(
    boxes=anchors_fit, 
    scores=rpn_cls_prob,
    max_output_size=self.max_outputs_num, 
)
indices,scores = tf.image.non_max_suppression_with_scores(
    boxes=anchors_fit, 
    scores=rpn_cls_prob,
    max_output_size=self.max_outputs_num, 
)

其中anchors_fit.shape[36864,4] 并且rpn_cls_prob.shape[36864]

两个电话都加注:

ValueError: Shape must be rank 0 but is rank 1 for 'non_max_suppression_with_scores/NonMaxSuppressionV5' (op: 'NonMaxSuppressionV5') with input shapes: [36864,4], [36864], [1], [], [], [].

我该怎么办?

1 个答案:

答案 0 :(得分:0)

self.max_outputs_num的形状是什么?

来自the documentation

  

max_output_size :标量整数张量,表示要通过非最大抑制选择的最大盒数。

在这里,它似乎是一维数组,因为错误消息将其报告在方括号之间。 此外,它将与错误消息匹配,因为标量的秩为0,一维数组的秩为1。

因此,您可能应该将self.max_outputs_num从数组转换为标量。