当前位置: 首页 > 知识库问答 >
问题:

如何在tensorflow对象检测api中绘制边界框而不使用归一化坐标

宰父志新
2023-03-14

如何在tensorflow对象检测API中绘制边界框而不使用归一化坐标?在object_detection_tutorial.ipynb中,我注意到默认坐标是normalize坐标,框的形式是[xmin,ymin,xmax,ymax],如何将它们转换为[image_lengthxmin,image_widthymin,image_lengthxmax,image_widthymax]?我试着用

        boxes[0]=boxes[0]*200
        boxes[1]=boxes[1]*100
        boxes[2]=boxes[2]*200
        boxes[3]=boxes[3]*100

但是错误发生了:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-72-efcec9615ee3> in <module>()
     30                   feed_dict={image_tensor: image_np_expanded})
     31                 boxes[0]=boxes[0]*200
---> 32                 boxes[1]=boxes[1]*100
     33                 boxes[2]=boxes[2]*200
     34                 boxes[3]=boxes[3]*100
IndexError: index 1 is out of bounds for axis 0 with size 1

共有1个答案

邓业
2023-03-14

如果查看research/object_detection/utils/visualization_utils.py,则框[0]是ymin而不是xmin当将这些坐标乘以100或200时,请确保它仍然在图像边界(im_width,im_height)中。您可以尝试框[0]*100,框[1]*-200,框[2]*-100,框[3]*200,这与下面的代码类似。

ymin = boxes[0]*100
xmin = boxes[1]*-200
ymax = boxes[2]*-100
xmax = boxes[3]*200

draw = ImageDraw.Draw(image)
im_width, im_height = image.size
(left, right, top, bottom) = (xmin * im_width, xmax * im_width,
                              ymin * im_height, ymax * im_height)

draw.line([(left, top), (left, bottom), (right, bottom),
               (right, top), (left, top)], width=thickness, fill=color)
 类似资料:
  • 在运行Android TF Detect演示并使用我重新训练的3类ssd_mobilenet_v1_coco模型时,我的TF Detect演示崩溃,给出一个IndexOutOfBoundException 12-26 17:53:13.931 224 29-25212/org.tensorflow.demo E/AndroidRuntime:致命异常:推断进程:org.tensorflow.dem

  • 在前面的一些章节中,我们介绍了诸多用于图像分类的模型。在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别。然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。在计算机视觉里,我们将这类任务称为目标检测(object detection)或物体检测。 目标检测在多个领域中被广泛使用。例如,在无人驾驶里,我们需要通过识别拍摄到

  • 问题内容: 如何在没有类的情况下绘制对象(扩展了)?我找到了方法,但它没有绘制对象。 问题答案: 如果要更改组件的绘制方式(添加矩形),则需要在该组件中重新定义。在你的代码中,你正在使用 。 你不应该调用组件。你所做的任何绘画(退还给你的绘画)都是暂时的,并且在Swing下次确定需要重新绘画组件时将丢失。 相反,你应该覆盖或的)方法,并使用接收到的对象作为参数在此方法中进行绘制。 检查此链接以进一

  • 问题内容: 我正在开发一个Android项目,并且选择显示图标是因为它具有适应性和动态性,但是我只能在运行Android且具有API 21或更高版本的设备上运行此应用程序。我的问题是如何在较低的Android版本(即API 14或更高版本)上使用。谢谢! 问题答案: 使用支持库23.2,一直到API v7都对Vector Drawables提供了真正的支持。建议通过添加以下内容来禁用该支持的先前版

  • 我已经根据提供的文档正确安装了Tensorflow对象检测API。然而,当我需要训练我的网络时,没有训练。研究/object\u检测目录中的py文件。我能做些什么来解决这个问题吗? 链接:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md