【问题标题】:Shape must be rank 2 but is rank 3 for NonMaxSuppressionV3: ERROR形状必须为 2 级,但 NonMaxSuppressionV3 为 3 级:错误
【发布时间】:2018-09-14 09:13:11
【问题描述】:

我在视频对象检测时尝试使用 tf.image.non_max_suppression 时遇到此错误。 TensorFlow 版本为 1.10.0

ValueError:形状必须为 2 级,但为 3 级 'non_max_suppression/NonMaxSuppressionV3'(操作:'NonMaxSuppressionV3') 输入形状:[1,500,4]、[1,500]、[]、[]、[]。

【问题讨论】:

  • 您能否发布一些代码来说明您尝试解决的问题以及您遇到的问题的描述?
  • 我正在使用 tensorflow 来检测视频中的对象。当我调用预构建函数“ tf.image.non_max_suppression ”时,出现了前面提到的错误。 selected_indices = tf.image.non_max_suppression(boxes, scores, 3, 0.6) selected_boxes = tf.gather(boxes, selected_indices)
  • 非常感谢,bassma,如果您编辑您的问题并将评论中的信息添加到文本中,那就太好了。

标签: tensorflow non-maximum-suppression


【解决方案1】:

我在使用 tensorflow2.1 时遇到同样的错误,原因是(如错误中所述)批处理维度不存在。

tf.image.non_max_suppression( 框,分数,max_output_size,iou_threshold=0.5, score_threshold=float('-inf'), name=None)

boxes 形状为 [num_boxes, 4] 的二维浮点张量。

例子:

selected_indices = tf.image.non_max_suppression(
    boxes=boxes,
    scores=scores,
    max_output_size=7,
    iou_threshold=0.5)

您应该删除张量的第一个(批量)维度(上例中的框和分数) 如果您的批次维度为 1,您可以使用

boxes = tf.squeeze(boxes)
scores = tf.squeeze(scores)

看来你可以在这个野兽中拥有批量维度: https://www.tensorflow.org/api_docs/python/tf/image/combined_non_max_suppression

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2019-05-10
    • 2018-05-30
    相关资源
    最近更新 更多