Python 3.x 如何计算Detectron2中的并集交点?
我正在使用Detectron2进行目标检测。我已经注册了pascalvoc数据集,并训练了一个用于检测的模型。如何计算测试数据集的平均IOU?我知道detection2有一个用于计算IOU的预定义函数,即detectron2.structures.pairwise_IOU 我有一个csv文件中测试图像的地面真实边界框。csv文件包含(文件名、宽度、高度、类、xmin、ymin、xmax、ymax)。如何在IOU函数中解析这两个边界框并在google colab中显示它 这是我生成预测边界框的代码Python 3.x 如何计算Detectron2中的并集交点?,python-3.x,deep-learning,computer-vision,google-colaboratory,detectron,Python 3.x,Deep Learning,Computer Vision,Google Colaboratory,Detectron,我正在使用Detectron2进行目标检测。我已经注册了pascalvoc数据集,并训练了一个用于检测的模型。如何计算测试数据集的平均IOU?我知道detection2有一个用于计算IOU的预定义函数,即detectron2.structures.pairwise_IOU 我有一个csv文件中测试图像的地面真实边界框。csv文件包含(文件名、宽度、高度、类、xmin、ymin、xmax、ymax)。如何在IOU函数中解析这两个边界框并在google colab中显示它 这是我生成预测边界框的代码
from detectron2.utils.visualizer import ColorMode
import random
dataset_dicts = DatasetCatalog.get('/content/test')
for d in random.sample(dataset_dicts, 5):
im = cv2.imread(d["file_name"])
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1], metadata=microcontroller_metadata, scale=0.8)
v = v.draw_instance_predictions(outputs["instances"].to("cpu"))
plt.figure(figsize = (14, 10))
plt.imshow(cv2.cvtColor(v.get_image()[:, :, ::-1], cv2.COLOR_BGR2RGB))
plt.show()
您可以通过访问边界框和类
outputs["instances"].pred_boxes.tensor.cpu().numpy()
outputs["instances"].pred_classes.cpu().numpy()
现在你要做的是:
你得照亚历山大说的做。 假设对于给定的图像,你有基本的真值框。这些可以表示为
N,4
numpy数组。让我们称之为bboxes\u gt
。假设你的预测给出了M
边界框
现在,您可以将bboxes\u gt
转换为Box
ooobject,然后使用结构.pairwise\u iou()
以对等方式计算所有iou。这将为您提供一个包含所有这些IOU的N,M
矩阵。它看起来像这样:
bboxes_gt = structures.Boxes(torch.Tensor(bboxes_gt))
bboxes_pred = outputs["instances"].pred_boxes
IOUs = structures.pairwise_iou(bboxes_gt, bboxes_pred)
你能告诉我如何解析numpy数组,即detectron2.structures.pairwise\u iou(boxes1:detectron2.structures.box.box,boxes2:detectron2.structures.box.box)→ torch.TensorI没有真正理解你的意思,但是:地面真相数据是如何存储在你的csv中的?您必须将csv中的正确图片与您正在推断的图片配对,然后将正确的类别bbox与基本真相bbox和类别配对