首页 > 解决方案 > 形状必须为 2 级,但 NonMaxSuppressionV3 为 3 级:错误

问题描述

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

ValueError:形状必须是等级 2,但对于输入形状为 [1,500,4]、[1,500]、[]、[]、[] 的“non_max_suppression/NonMaxSuppressionV3”(操作:“NonMaxSuppressionV3”)是等级 3。

标签: tensorflownon-maximum-suppression

解决方案


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

tf.image.non_max_suppression(boxes, scores, max_output_size, iou_threshold=0.5, score_threshold=float('-inf'), name=None)

形状为 [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


推荐阅读