Peterisfar / YOLOV3

yolov3 by pytorch
MIT License
195 stars 53 forks source link

关于模型的map的疑问? #15

Closed yuanliangxie closed 4 years ago

yuanliangxie commented 4 years ago

您好,虽然你的代码很简洁,但是随着对您的代码的深入了解,发现您的代码貌似并没有取得良好的检测效果。在图像大小为544*544下,conf_thershold=0.01,nms_threshold=0.5时,对voc_test进行000001.jpg进行检测时,发现进行了极大值抑制之后,boundingbox的数量居然还有了276个,但GT_box只有一个,模型检测出很多的FP,所以在此对您的eval——map的计算方式是否正确产生了质疑。虽然运行test.py,在data/result/里会出现有些不错的检测效果的图,但是您的utils/visualize中的visualize_boxes的min_score_thresh=0.5,所以您这些图片其实是在conf_threshold=0.5时得到的。我用我自己的eval方法在conf_threshhold=0.5的条件下对您的检测结果的进行了map测试,发现结果有点poor。。。

yuanliangxie commented 4 years ago

是000002.jpg图片测试,写错了

Peterisfar commented 4 years ago

评价函数用的是faster-rcnn的评价函数,这个代码不是我自己实现的,我用了rgb的评价代码(voc_eval.py),只不过在这个基础上封装了一个类。具体评价的时候、实际使用的时候conf_threshold分别设置为多大你可以百度或者谷歌找一下答案,既然你会写eval函数,这个应该很容易能明白

yuanliangxie commented 4 years ago

你好,我调用了你的eval_map的类,我的结果如下: aeroplane --> mAP : 0.9146040176870438 bicycle --> mAP : 0.9269447946796773 bird --> mAP : 0.8917027904852264 boat --> mAP : 0.7745233155649098 bottle --> mAP : 0.8113474063328214 bus --> mAP : 0.9308343741139371 car --> mAP : 0.9499203664445757 cat --> mAP : 0.9038616847688914 chair --> mAP : 0.7323189491461979 cow --> mAP : 0.9183551702634267 diningtable --> mAP : 0.8062441813546515 dog --> mAP : 0.9029369271560974 horse --> mAP : 0.926333022757214 motorbike --> mAP : 0.9263860687437786 person --> mAP : 0.9088973541896948 pottedplant --> mAP : 0.6108822506243982 sheep --> mAP : 0.8954428640214875 sofa --> mAP : 0.8223864909345021 train --> mAP : 0.9237846619306309 tvmonitor --> mAP : 0.8770250327454929 mAP:0.867737 我是按照yolov3的规则来训练的,没做任何改动,我原来的eval是用的github上的https://github.com/rafaelpadilla/Object-Detection-Metrics这个项目的。 That's so crazy!

yuanliangxie commented 4 years ago

测试的参数: image_size = 544 conf_threshold = 0.01 nms_threshold = 0.5

Peterisfar commented 4 years ago

aeroplane --> mAP : 0.9146040176870438 bicycle --> mAP : 0.9269447946796773 bird --> mAP : 0.8917027904852264 boat --> mAP : 0.7745233155649098 bottle --> mAP : 0.8113474063328214 bus --> mAP : 0.9308343741139371 car --> mAP : 0.9499203664445757 cat --> mAP : 0.9038616847688914 chair --> mAP : 0.7323189491461979 cow --> mAP : 0.9183551702634267 diningtable --> mAP : 0.8062441813546515 dog --> mAP : 0.9029369271560974 horse --> mAP : 0.926333022757214 motorbike --> mAP : 0.9263860687437786 person --> mAP : 0.9088973541896948 pottedplant --> mAP : 0.6108822506243982 sheep --> mAP : 0.8954428640214875 sofa --> mAP : 0.8223864909345021 train --> mAP : 0.9237846619306309 tvmonitor --> mAP : 0.8770250327454929 mAP:0.867737

yolov3指的是哪一个,ultralytics/yolov3?

yuanliangxie commented 4 years ago

我自己pytorch实现的yolov3

yuanliangxie commented 4 years ago

在这个项目上https://github.com/BobLiu20/YOLOv3_PyTorch进行更改的,这个项目的yolo_loss有些问题

yuanliangxie commented 4 years ago

所以,我才怀疑你的map计算有问题,我的yolov3在你的eval_map下明显打败了你的!

Peterisfar commented 4 years ago

所以,我才怀疑你的map计算有问题,我的yolov3在你的eval_map下明显打败了你的!

你测试用了多尺度和反转了吗?训练权重用的是Imagenet的权重还是coco的权重?数据增强方法有哪些?

Peterisfar commented 4 years ago

测试集训练集分别是什么

yuanliangxie commented 4 years ago

没有加多尺度和反转,backbone的预训练权重加载的是darknet53.conv官方的预训练权重 数据增强是SSD的数据增强方法 训练集为:voc_2012trainval + voc_2007trainval且没有去掉diffcult标签 测试集:voc_2007

Peterisfar commented 4 years ago

没有加多尺度和反转,backbone的预训练权重加载的是darknet53.conv官方的预训练权重 数据增强是SSD的数据增强方法 训练集为:voc_2012trainval + voc_2007trainval且没有去掉diffcult标签 测试集:voc_2007

所以你什么技巧也没加,就只是加了数据增强,学习率,mAP,损失上都没做任何改进mAP能到0.867?

yuanliangxie commented 4 years ago

yes!我也很惊讶,因为我先前的map测试方法得到的map为:0.734,我还一直以为我的模型并没有训练好,但是在你的eval_map的方法上测,就得到这个结果了。

Peterisfar commented 4 years ago

没有加多尺度和反转,backbone的预训练权重加载的是darknet53.conv官方的预训练权重 数据增强是SSD的数据增强方法 训练集为:voc_2012trainval + voc_2007trainval且没有去掉diffcult标签 测试集:voc_2007

你预训练权重加载的是只是backbone部分吗,FPN部分呢

yuanliangxie commented 4 years ago

没有加多尺度和反转,backbone的预训练权重加载的是darknet53.conv官方的预训练权重 数据增强是SSD的数据增强方法 训练集为:voc_2012trainval + voc_2007trainval且没有去掉diffcult标签 测试集:voc_2007

你预训练权重加载的是只是backbone部分吗,FPN部分呢 仅仅只是加载backbone而已,模型的加载与那个BobLiu的项目一样。

Peterisfar commented 4 years ago

没有加多尺度和反转,backbone的预训练权重加载的是darknet53.conv官方的预训练权重 数据增强是SSD的数据增强方法 训练集为:voc_2012trainval + voc_2007trainval且没有去掉diffcult标签 测试集:voc_2007

你预训练权重加载的是只是backbone部分吗,FPN部分呢

这个voc_eval.py是一个开源的,我没有看到别人说这个写的有啥问题。你可以把你的测试结果传到pascal_voc官网上去看看到底是多少

yuanliangxie commented 4 years ago

可以可以,我上传一下看下多少 我的训练的epoch是比你多的,不止50!

Peterisfar commented 4 years ago

可以可以,我上传一下看下多少 我的训练的epoch是比你多的,不止50!

你的epoch是多少,我没有试过训得久一点会怎么样,一般50epoch差不多了

yuanliangxie commented 4 years ago

我按论文上写的150个epoch训练的,我这个0.734是前一两个星期训练的了,当时看见没啥效果,好像是在130个epoch下就没训练了。也许你的训练久一点可能map会更高!

Peterisfar commented 4 years ago

我按论文上写的150个epoch训练的,我这个0.734是前一两个星期训练的了,当时看见没啥效果,好像是在130个epoch下就没训练了。也许你的训练久一点可能map会更高!

这个就不知道了,如果你有官网的提交结果了可以这里分享一下,如果那个voc_eval.py有问题,后面再修改

yuanliangxie commented 4 years ago

好的,没问题!

---原始邮件--- 发件人: "leon"<notifications@github.com> 发送时间: 2019年12月29日(星期日) 下午5:23 收件人: "Peterisfar/YOLOV3"<YOLOV3@noreply.github.com>; 抄送: "yuanliangxie"<214510890@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [Peterisfar/YOLOV3] 关于模型的map的疑问? (#15)

我按论文上写的150个epoch训练的,我这个0.734是前一两个星期训练的了,当时看见没啥效果,好像是在130个epoch下就没训练了。也许你的训练久一点可能map会更高!

这个就不知道了,如果你有官网的提交结果了可以这里分享一下,如果那个voc_eval.py有问题,后面再修改

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

Peterisfar commented 4 years ago

好的,没问题! ---原始邮件--- 发件人: "leon"<notifications@github.com> 发送时间: 2019年12月29日(星期日) 下午5:23 收件人: "Peterisfar/YOLOV3"<YOLOV3@noreply.github.com>; 抄送: "yuanliangxie"<214510890@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [Peterisfar/YOLOV3] 关于模型的map的疑问? (#15) 我按论文上写的150个epoch训练的,我这个0.734是前一两个星期训练的了,当时看见没啥效果,好像是在130个epoch下就没训练了。也许你的训练久一点可能map会更高! 这个就不知道了,如果你有官网的提交结果了可以这里分享一下,如果那个voc_eval.py有问题,后面再修改 — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

这是我引用的评价的开源代码,https://github.com/Peterisfar/py-faster-rcnn/blob/master/lib/datasets/voc_eval.py

yuanliangxie commented 4 years ago

hello,when I submit the result of mine to PASCAL VOC evaluation server,there is a error: Failed to get evaluation results by category for challenge 3: [Errno 2] No such file or directory: u'/var/voc_challenges/VOC2008/submissions/28789/comp3_report.txt.score' Do you know how to solve it ?

yuanliangxie commented 4 years ago

我按论文上写的150个epoch训练的,我这个0.734是前一两个星期训练的了,当时看见没啥效果,好像是在130个epoch下就没训练了。也许你的训练久一点可能map会更高!

这个就不知道了,如果你有官网的提交结果了可以这里分享一下,如果那个voc_eval.py有问题,后面再修改 你好,这是我在voc2010test上的测试结果: http://host.robots.ox.ac.uk:8080/anonymous/ZFJ4IW.html map = 0.80780 应该是算已经复现论文效果了!

Peterisfar commented 4 years ago

我按论文上写的150个epoch训练的,我这个0.734是前一两个星期训练的了,当时看见没啥效果,好像是在130个epoch下就没训练了。也许你的训练久一点可能map会更高!

这个就不知道了,如果你有官网的提交结果了可以这里分享一下,如果那个voc_eval.py有问题,后面再修改 你好,这是我在voc2010test上的测试结果: http://host.robots.ox.ac.uk:8080/anonymous/ZFJ4IW.html map = 0.80780 应该是算已经复现论文效果了!

感谢你的提交,那么你觉得这个voc_eval.py有啥问题吗?源码在这https://github.com/Peterisfar/py-faster-rcnn/blob/master/lib/datasets/voc_eval.py

yuanliangxie commented 4 years ago

我按论文上写的150个epoch训练的,我这个0.734是前一两个星期训练的了,当时看见没啥效果,好像是在130个epoch下就没训练了。也许你的训练久一点可能map会更高!

这个就不知道了,如果你有官网的提交结果了可以这里分享一下,如果那个voc_eval.py有问题,后面再修改 你好,这是我在voc2010test上的测试结果: http://host.robots.ox.ac.uk:8080/anonymous/ZFJ4IW.html map = 0.80780 应该是算已经复现论文效果了!

感谢你的提交,那么你觉得这个voc_eval.py有啥问题吗?源码在这https://github.com/Peterisfar/py-faster-rcnn/blob/master/lib/datasets/voc_eval.py 应该是我之前的eval函数用的有错误,你这个应该没有问题!感谢你封装的voc_eval.py!

yuanliangxie commented 4 years ago

为了感谢你封装的易用eval,我特地将你的最好的结果best_84.0.pt送入官网的voc2010-test数据集进行测试:测试结果为:http://host.robots.ox.ac.uk:8080/anonymous/TOLCRF.html 我在我的yolo模型中重新加载darknet53.conv.74的权重,进行训练,在封装的eval中测试得到map=0.806. 在官网voc2010-test数据集中结果为:http://host.robots.ox.ac.uk:8080/anonymous/VXSXGV.html