Open zhengzhe97 opened 3 years ago
后来发现是边训练边测试和单测试,两次读取的anno_path不同,边训练边测试会读取TrainDataset下的anno_path。
个人认为可能是如下代码存在问题:self.dataset.get_anno() TrainDataset下的anno_path
./ppdet/engine/trainer.py
def _init_metrics(self):
if self.mode == 'test':
self._metrics = []
return
if self.cfg.metric == 'COCO':
# TODO: bias should be unified
bias = self.cfg['bias'] if 'bias' in self.cfg else 0
save_prediction_only = self.cfg['save_prediction_only'] \
if 'save_prediction_only' in self.cfg else False
self._metrics = [
COCOMetric(
anno_file=self.dataset.get_anno(),
bias=bias,
save_prediction_only=save_prediction_only)
]
不知道是不是只有我有这个问题 - -,
感谢反馈,请问两次测试使用的是同一个模型吗?边训练边测试时,由于第一轮训练的模型效果比较差,可能会导致评估时间很长,或者预测结果为空的情况,这个问题已经修复,建议您用最新的代码试试。
是同一个模型,我用的是2.0-rc分支。两种验证方式读取的anno_path不一样,我手动调整了下验证时的路径。最新的代码还没尝试
使用训练边测试,在评估mAP时出现如下报错。开始以为是没有生成正确coco类型的json,排查后发现格式无误,使用./tools/eval.py直接验证,正确输出。
coco_detection.yml如下: