python-3.x - 如何计算 Detectron2 中的交集?
问题描述
我正在使用 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()
现在你必须做的:
- 在图片上做你的推理
- 从 csv 文件加载图片的基本事实
- 将您的推理的类别和边界框与您的真实情况 (= IoU) 进行比较
推荐阅读
- angular - 调用 AngularFirestore 时出现 Javascript 错误
- java - NLTK -> 使用斯坦福依赖解析器 ->
- javascript - 无法将文件上传到 SuiteScript
- python - 在python中将文本文件转换为嵌套的json
- javascript - 是否可以在 jQuery 中使用加载 API 来加载带有类选择器而不是 id 的片段
- node.js - 通过 VSTS 将 webpack/npm 部署到 windows vm 失败
- python - 创建具有多个窗口的 Tkitner 应用程序
- c# - 实体框架中的类型转换问题
- ruby - 如何忽略连续括号/大括号的 Rubocop 布局/MultilineArrayBraceLayout 规则?
- c# - 将图像复制到另一个文件夹