bubbliiiing / efficientdet-pytorch

这是一个efficientdet-pytorch的源码,可以用于训练自己的模型。
MIT License
305 stars 61 forks source link

为什么MAP的结果总是0 #19

Open jiansfoggy opened 3 years ago

jiansfoggy commented 3 years ago

你好,我在用Efficient-Det训练Text-COCO做文字检测,bounding box框的位置是正确的,之后我按照说明运行get_map.py 文件来求map和precision,recall。 但是得到的结果总是0. 绝大部分结果被认定为false positive, 请问这是数据的问题还是get_map代码的问题?

bubbliiiing commented 3 years ago

我不太懂你的意思,直接预测是对的吗,如果是这样就是获得的用于计算map的txt有错了。

jiansfoggy commented 3 years ago

计算map的txt有错

感谢回复。我的class number是1。 我计算map的步骤是, 1 先运行了get_dr_txt.py 2 我有ground truth的bounding box文件,没有运行get_gt_txt.py 3 最后运行get_map.py

出现的问题, 1.当运行get_dr_txt.py,如果设置confidence 和iou threshold大于0.2时,3500张图片里大约只有600张能被识别出文字。 2 无论我将confidence 和iou threshold设为0.05或者0.5,通过get_dr_txt.py得到多少txt文件,当我运行get_map.py时绝大部分的图片都会被归为false positive。从而导致precision,recall and mAP均为0. 不过当我拿训练后的weight来预测bounding box,它在不同的图片上能正确的框出文字部分。所以即使mAP不高,我猜它也不太可能是0啊。

所以现在不太懂问题出在哪里,是需要修改nms那里,还是get_map这个文件,抑或是什么别的地方? 谢谢啦~

bubbliiiing commented 3 years ago

还是按默认参数来进行map计算,把模型修改成自己的就可以了 然后你检查一下对应的txt,就是input文件夹里面的txt,你看看结果的格式是否正确

bubbliiiing commented 3 years ago

因为只是这样我看不出来,我得从对应的txt的结果来判断

jiansfoggy commented 3 years ago

还是按默认参数来进行map计算,把模型修改成自己的就可以了 然后你检查一下对应的txt,就是input文件夹里面的txt,你看看结果的格式是否正确

好的谢谢,我先试一下。

bubbliiiing commented 3 years ago

重要的是查看一下txt的正误

LvShuaiChao commented 2 years ago

一般说来是类别标签的问题,我的就是改了EfficientNet.py下面的"classes_path" : 'model_data/coco_classes.txt' 以及get_map.py下面的classes_path = 'model_data/voc_classes.txt'为自己数据集的实际类别名之后就好了。

bubbliiiing commented 2 years ago

嗯是