Tensorflow 对象检测 api 得到按边界框坐标排序的预测

Tensorflow object detection api get predictions sorted by bounding box coordinates

我使用 tensorflow 对象检测训练了一个神经网络来解决简单的验证码 API,但是当我使用以下代码输出预测时:

for index, value in enumerate(classes[0]):
object_dict = {}
if scores[0, index] > threshold:
    object_dict[(category_index.get(value)).get('name').encode('utf8')] = scores[0, index]
    objects.append(object_dict)

我得到每个函数的随机顺序预测 运行。我之前问过一个问题,有人建议我尝试使用坐标,但我找不到连接 classes 和与此 class 关联的框的坐标的方法。附上已解决的验证码示例,因此我需要一种方法来按从左到右的顺序输出预测。

Image

鉴于 boxes[0] 是一个形状为 num_boxes * 4 的数组,其中框中的第一个值是 xmin,这可以获得框的索引,按具有最低的 xmin(从更左边开始的那个)。

indices = np.argsort(boxes[0][:,0])

然后就可以使用这些索引对boxes、scores、classed进行排序,如下:

sorted_scores = scores[0][indices]
sorted_boxes = boxes[0][indices]
sorted_classes = classes[0] indicies

例如,如果您想改为按 xmax 排序,则可以使用 np.argsort(boxes[0][:,2])。 您可以尝试使用 0-3 按 xmin、ymin、xmax 和 ymax 进行排序。