谷歌的目标检测API如何返回边界框的坐标?

3

如何使用Google的物体检测API推理脚本获取生成的边界框的坐标?我知道打印boxes[0][i]会返回图像中第i个检测的预测,但这些返回的数字具体意义是什么?是否有一种方法可以获取xmin、ymin、xmax、ymax?提前感谢。


如果您对我的答案感到满意,请随意将其标记为接受的答案。 - Gal_M
2个回答

15

谷歌目标检测API以[ymin,xmin,ymax,xmax]的格式返回边界框,并以归一化形式呈现(完整解释在此链接)。为了找到(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)

为什么要这样做?你的链接失效了。是因为输入图像被调整为标准大小吗?归一化坐标对于处理任何大小的输入都有用吗? - CMCDragonkai
1
image 是一个 numpy 数组吗?如果是的话,image.size 给出数组中元素的数量,而 image.shape 给出图像的维度。但我认为它会给出矩阵的行数和列数,例如 height, width = image.shape - KolaB
@CMCDragonkai,是的,那很有道理。神经网络中需要大量的尺寸调整和重置。 - Gal_M
@KolaB 请预计文档在未来一段时间内会不断更新。https://www.tensorflow.org/api_guides/python/image#Working_with_Bounding_Boxes/ - Gal_M
boxes对象还能用吗?我找不到它。 - Artur Müller Romanov
显示剩余2条评论

3

你提到的boxes数组包含这些信息,格式为[N, 4]的数组,其中每一行都是以下格式:
[ymin,xmin,ymax,xmax]以输入图像大小为基准的归一化坐标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接