【问题标题】:Merging certain categories from COCO dataset从 COCO 数据集中合并某些类别
【发布时间】:2019-11-29 15:50:00
【问题描述】:

我正在尝试合并 coco 数据集上的某些类以进行评估。我的目标是将类别“汽车”、“卡车”、“公共汽车”合并到一个新类别“车辆”。但我不想训练一个新模型。以下代码输出对所有 80 个 Coco 类别的评估。

from detectron2.evaluation import COCOEvaluator, inference_on_dataset
from detectron2.data import build_detection_test_loader
from detectron2.modeling import build_model
from detectron2.checkpoint import DetectionCheckpointer

model = build_model(cfg)
DetectionCheckpointer(model).load(weights_path)

evaluator = COCOEvaluator("testsetPre_val", cfg, False, output_dir="./output/")
val_loader = build_detection_test_loader(cfg, "testsetPre_val")
inference_on_dataset(model, val_loader, evaluator)

有什么建议吗?

【问题讨论】:

  • “合并类别”是什么意思?
  • 我想合并 3 个类别。它应该是一种超类,因为我的数据集不区分公共汽车和卡车,而 coco 数据集可以。

标签: python machine-learning object-detection


【解决方案1】:

嗯,解决这个问题的简单方法是,让模型预测“汽车”、“公共汽车”和“卡车”。但在绘制边界框之前将标签编辑为“车辆”。

在通过将检测到的对象传递给 TensorFlow 的“visutil”函数来围绕检测到的对象绘制边界框之前,只需使用一个简单的 if-else 语句:

if label in ["car", "buses", "trucks"]:
    label="vehicles"

如果您不想重新训练模型,这是唯一的方法。

如果您想重新训练模型,请将“公共汽车”、“卡车”和“汽车”的标记更改为“车辆”。

【讨论】:

  • 谢谢,我更改了评估类中的映射。
猜你喜欢
  • 2021-03-28
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 2018-04-05
  • 2020-07-06
  • 2022-11-13
  • 1970-01-01
相关资源
最近更新 更多