如何获取特定边界框的像素坐标

How do I get the pixel coordinates for a specific bounding box

我正在尝试从人那里获取边界框的像素坐标 class(标记为: mscoco_label_map.pbtxt

item {
  name: "/m/01g317"
  id: 1
  display_name: "person"
}

目前我正在通过

将边界框和标签添加到图像上
input_tensor = tf.convert_to_tensor(np.expand_dims(image_np, 0), dtype=tf.float32)
detections, predictions_dict, shapes = detect_fn(input_tensor)
label_id_offset = 1
image_np_with_detections = image_np.copy()

viz_utils.visualize_boxes_and_labels_on_image_array(
          image_np_with_detections,
          detections['detection_boxes'][0].numpy(),
          (detections['detection_classes'][0].numpy() + label_id_offset).astype(int),
          detections['detection_scores'][0].numpy(),
          category_index,
          use_normalized_coordinates=True,
          max_boxes_to_draw=3,
          min_score_thresh=.30,
          agnostic_mode=False)

(所有代码都在while循环内)

但是当我打印出检测结果时['detection_boxes'] 我得到了很多标准化坐标,但我不知道如何将这些坐标分类到特定的框,例如。人物标签。

那么如何在检测中获取特定边界框的像素坐标['detection_boxes']?

Whosebug 的新手,非常感谢任何提示。

所以detection_boxes应该是一个N乘4的边界框数组co-ordinates,形式为[ymin, xmin, ymax, xmax],标准化co-ordinates,detection_classes应该是一组(`float?)数字 class 标签。我假设他们没有改变 API 太多,因为我从去年年初就没有使用过对象检测 API。

您应该可以像这样转换为像素 co-ordinates,然后只获取一组标签。

detection_boxes = detections['detection_boxes'][0].numpy()
detection_classes = detections['detection_classes'][0].numpy().astype(int) + label_id_offset
detection_scores = detections['detection_scores'][0].numpy()

# Scale to pixel co-ordinates
detection_boxes[:, (0, 2)] *= IMAGE_HEIGHT
detection_boxes[:, (1, 3)] *= IMAGE_WIDTH

# Select person boxes
cond = (detection_classes == PERSON_CLASS_ID) & (detection_scores >= SCORE_THRESH)
person_boxes = detection_boxes[cond, :]
person_boxes = np.round(person_boxes).astype(int)