【问题标题】:Return coordinates for bounding boxes Google's Object Detection API返回边界框的坐标 Google 的对象检测 API
【发布时间】:2018-04-17 01:21:41
【问题描述】:

如何使用 Google 对象检测 API 的推理脚本获取生成的边界框的坐标?我知道打印 box[0][i] 返回图像中第 i 个检测的预测,但是这些返回数字的确切含义是什么?有没有办法让我得到 xmin,ymin,xmax,ymax?提前致谢。

【问题讨论】:

  • 如果您对我的回答感到满意,请随时将其标记为已接受。

标签: tensorflow object-detection object-detection-api


【解决方案1】:

Google 对象检测 API 返回格式为 [ymin, xmin, ymax, xmax] 和标准化形式的边界框(完整说明 here)。要找到 (x,y) 像素坐标,我们需要将结果乘以图像的宽度和高度。首先获取图片的宽高:

width, height = image.size

然后,从boxes对象中提取ymin,xmin,ymax,xmax并相乘得到(x,y)坐标:

ymin = boxes[0][i][0]*height
xmin = boxes[0][i][1]*width
ymax = boxes[0][i][2]*height
xmax = boxes[0][i][3]*width

最后打印框角的坐标:

print 'Top left'
print (xmin,ymin,)
print 'Bottom right'
print (xmax,ymax)

【讨论】:

  • 对为什么这样做有任何解释吗?您的链接已失效。是因为输入图像被调整为标准尺寸吗?并且归一化坐标对于处理任何大小的输入都很有用?
  • image 是一个 numpy 数组吗?如果是这样,image.size 给出数组中元素的数量,image.shape 给出图像的尺寸。但我认为它给出了行数,然后是矩阵的列数,即height, width = image.shape
  • @CMCDragonkai,是的,这是有道理的。神经网络中有很多大小和调整大小。
  • @KolaB 希望文档在未来一段时间内继续前进。 tensorflow.org/api_guides/python/…
  • @Gal_M 感谢更新链接。我的评论是关于你的答案中写着width, height = image.size 的那一行。我认为这应该是height, width = image.shape[:2]。在阅读更新的链接后,我仍然这么认为。第一部分“编码和解码”说“编码图像由标量字符串张量表示,解码图像由 形状的3-D uint8张量表示> [height, width, channels]。如果你能澄清你为什么使用width, height = image.size,那就太好了。
【解决方案2】:

您提到的 box 数组包含此信息,格式为 [N, 4] 数组,其中每一行的格式为: [ymin, xmin, ymax, xmax] 在相对于输入图像大小的归一化坐标中。

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 2018-08-01
    • 1970-01-01
    • 2019-09-30
    • 2019-09-18
    • 2020-05-17
    • 2019-10-11
    • 2019-06-18
    • 2020-05-08
    相关资源
    最近更新 更多