gpt4 book ai didi

python - TensorFlow对象检测API教程中获取边界框坐标

转载 作者:太空狗 更新时间:2023-10-29 20:23:36 24 4
gpt4 key购买 nike

我是 Python 和 Tensorflow 的新手。我正在尝试从 Tensorflow Object Detection API 运行对象检测教程文件,但是当检测到对象时,我找不到在哪里可以获得边界框的坐标。

相关代码:

 # The following processing is only for single image
detection_boxes = tf.squeeze(tensor_dict['detection_boxes'], [0])
detection_masks = tf.squeeze(tensor_dict['detection_masks'], [0])

我假设绘制边界框的地方是这样的:

 # Visualization of the results of detection.
vis_util.visualize_boxes_and_labels_on_image_array(
image_np,
output_dict['detection_boxes'],
output_dict['detection_classes'],
output_dict['detection_scores'],
category_index,
instance_masks=output_dict.get('detection_masks'),
use_normalized_coordinates=True,
line_thickness=8)
plt.figure(figsize=IMAGE_SIZE)
plt.imshow(image_np)

我尝试打印 output_dict['detection_boxes'] 但我不确定数字的含义。有很多。

array([[ 0.56213236,  0.2780568 ,  0.91445708,  0.69120586],
[ 0.56261235, 0.86368728, 0.59286624, 0.8893863 ],
[ 0.57073039, 0.87096912, 0.61292225, 0.90354401],
[ 0.51422435, 0.78449738, 0.53994244, 0.79437423],
......

[ 0.32784131, 0.5461576 , 0.36972913, 0.56903434],
[ 0.03005961, 0.02714229, 0.47211722, 0.44683522],
[ 0.43143299, 0.09211366, 0.58121657, 0.3509962 ]], dtype=float32)

我找到了类似问题的答案,但我没有像他们那样有一个名为 boxes 的变量。如何获取坐标?

最佳答案

I tried printing output_dict['detection_boxes'] but I am not sure what the numbers mean

您可以自己查看代码。 visualize_boxes_and_labels_on_image_array 定义 here .

请注意,您正在传递 use_normalized_coordinates=True。如果跟踪函数调用,您将看到您的数字 [ 0.56213236, 0.2780568 , 0.91445708, 0.69120586] 等是值 [ymin, xmin, ymax, xmax] 其中图片坐标:

(left, right, top, bottom) = (xmin * im_width, xmax * im_width, 
ymin * im_height, ymax * im_height)

由函数计算:

def draw_bounding_box_on_image(image,
ymin,
xmin,
ymax,
xmax,
color='red',
thickness=4,
display_str_list=(),
use_normalized_coordinates=True):
"""Adds a bounding box to an image.
Bounding box coordinates can be specified in either absolute (pixel) or
normalized coordinates by setting the use_normalized_coordinates argument.
Each string in display_str_list is displayed on a separate line above the
bounding box in black text on a rectangle filled with the input 'color'.
If the top of the bounding box extends to the edge of the image, the strings
are displayed below the bounding box.
Args:
image: a PIL.Image object.
ymin: ymin of bounding box.
xmin: xmin of bounding box.
ymax: ymax of bounding box.
xmax: xmax of bounding box.
color: color to draw bounding box. Default is red.
thickness: line thickness. Default value is 4.
display_str_list: list of strings to display in box
(each to be shown on its own line).
use_normalized_coordinates: If True (default), treat coordinates
ymin, xmin, ymax, xmax as relative to the image. Otherwise treat
coordinates as absolute.
"""
draw = ImageDraw.Draw(image)
im_width, im_height = image.size
if use_normalized_coordinates:
(left, right, top, bottom) = (xmin * im_width, xmax * im_width,
ymin * im_height, ymax * im_height)

关于python - TensorFlow对象检测API教程中获取边界框坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com