如何获得在tensorflow对象检测API的多边框坐标(How to get the multip

2019-10-30 00:02发布

我想要得到的多个边界框坐标和每类边界框和返回它作为一个JSON文件。

当我打印盒[]从下面的代码,它具有(1,300,4)的形状。 有在盒子[] 300个坐标。 但也有2只在我的预测图像。 我想,它们被我的形象在预测边界框的坐标。

此外,我们怎么会知道哪个包围盒映射到的类/形象?

例如,假设我有一只狗和一个人的形象,我怎么会知道哪个包围盒对应的狗类,哪一个Person类? 箱子[]给我们的形状(1,300,4)的阵列没有它的边界框所对应的图像中的哪个类的任何指示。

我跟着这个答案让边框使用了一个阈值在框中[] 300个坐标坐标。

我试着让边框得分最高。 但它只返回即使预测图像有多个边框中的单个边界框。

边界框得分最高的坐标甚至不匹配的预测图像的边框坐标。 我如何边框坐标这是我的预测图像上?

            vis_util.visualize_boxes_and_labels_on_image_array(
                image_np,
                np.squeeze(boxes),
                np.squeeze(classes).astype(np.int32),
                np.squeeze(scores),
                category_index,
                use_normalized_coordinates=True,
                line_thickness=8)
            im = Image.fromarray(image_np)

            true_boxes = boxes[0][scores[0]==scores.max()]    # Gives us the box with max score
            for i in range(true_boxes.shape[0]):   # rescaling the coordinates
                ymin = true_boxes[i,0]*height
                xmin = true_boxes[i,1]*width
                ymax = true_boxes[i,2]*height
                xmax = true_boxes[i,3]*width

坐标我从上面的代码XMIN,YMIN,XMAX,YMAX得到(具有最高分)不完全匹配的预测图像的边框坐标。 他们是关闭的几个像素。 另外,我只得到即使预测图像有多个边框以及多种类型(如:狗和人)一个边框。

我想返回一个JSON文件与IMAGE_NAME,bounding_boxes和类对应于每个边界框。

谢谢,我是新来这。 请问,如果你不明白这个问题的任何部分。

Answer 1:

我跟着这个答案在这里的链接 ,我发现我所有的边框的坐标:

min_score_thresh=0.60
true_boxes = boxes[0][scores[0] > min_score_thresh]
for i in range(true_boxes.shape[0]):
    ymin = int(true_boxes[i,0]*height)
    xmin = int(true_boxes[i,1]*width)
    ymax = int(true_boxes[i,2]*height)
    xmax = int(true_boxes[i,3]*width)

    roi = image[ymin:ymax,xmin:xmax].copy()
    cv2.imwrite("box_{}.jpg".format(str(i)), roi)


文章来源: How to get the multiple bounding box coordinates in tensorflow object-detection API