我在视频对象检测时尝试使用 tf.image.non_max_suppression 时遇到此错误。TensorFlow 版本为 1.10.0
ValueError:形状必须是等级 2,但对于输入形状为 [1,500,4]、[1,500]、[]、[]、[] 的“non_max_suppression/NonMaxSuppressionV3”(操作:“NonMaxSuppressionV3”)是等级 3。
我在视频对象检测时尝试使用 tf.image.non_max_suppression 时遇到此错误。TensorFlow 版本为 1.10.0
ValueError:形状必须是等级 2,但对于输入形状为 [1,500,4]、[1,500]、[]、[]、[] 的“non_max_suppression/NonMaxSuppressionV3”(操作:“NonMaxSuppressionV3”)是等级 3。
我在使用 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