我正在尝试合并COCO数据集中某些类别以进行评估。我的目标是将“汽车”、“卡车”、“公交车”这些类别合并为一个新的类别“车辆”。但我不想训练一个新模型。以下代码输出对所有80个COCO类别的评估结果。
from detectron2.evaluation import COCOEvaluator, inference_on_datasetfrom detectron2.data import build_detection_test_loaderfrom detectron2.modeling import build_modelfrom detectron2.checkpoint import DetectionCheckpointermodel = 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)
有什么建议吗?
回答:
解决这个问题的一个简单方法是,让模型预测“汽车”、“公交车”和“卡车”,但在绘制边界框之前,将标签修改为“车辆”。
在将检测到的对象传递给TensorFlow的“visutil”函数绘制边界框之前,只需一个简单的if-else语句:
if label in ["car", "buses", "trucks"]: label="vehicles"
如果你不想重新训练模型,这是唯一的方法。
但是,如果你想重新训练模型,只需将“公交车”、“卡车”和“汽车”的标签更改为“车辆”。