Open Terry-Zheng opened 3 months ago
同蹲一个答案,好像之前看有几篇也是自己的repo给的会比mmrotate复现的高
我跑官方的config也打不到宣称的进度。请问你用dota数据集是如何切图处理的?
我跑官方的config也打不到宣称的进度。请问你用dota数据集是如何切图处理的?
@WenLinLliu 我是直接用mmrotate自带的工具分割的,tools/data/dota/README.md
这里有说明
感谢回答,再问一下,val验证集只做验证吗,需不需要把验证集拿去训练
按照论文中的分割方式处理DOTA数据集,val验证集只做验证,使用8块A100训练300epoch,提交官方服务器mAP: 0.5102483053329094。
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能
这个项目里面有更详细的指标,不需要看paper的
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能
这个项目里面有更详细的指标,不需要看paper的
问题是目前复现不出来这个指标,我准备多跑几次看看
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能
这个项目里面有更详细的指标,不需要看paper的
问题是目前复现不出来这个指标,我准备多跑几次看看
你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能
这个项目里面有更详细的指标,不需要看paper的
问题是目前复现不出来这个指标,我准备多跑几次看看
你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html
我也试了好多方法,复现不出人家的指标,感觉唯一的区别就是硬件不一样
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能
这个项目里面有更详细的指标,不需要看paper的
问题是目前复现不出来这个指标,我准备多跑几次看看
你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html
我也试了好多方法,复现不出人家的指标,感觉唯一的区别就是硬件不一样
好嘞,感谢老哥,这里面map数据应该是test数据集的性能,我还没把测试test数据集结果传到服务器评估,目前只是根据mmrotate的训练日志里的数据对比着看的
我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
我使用官方的权重进行测试,map值也达不到官方的效果
dotav1.0的test集
老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能
这个项目里面有更详细的指标,不需要看paper的
问题是目前复现不出来这个指标,我准备多跑几次看看
你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html
我也试了好多方法,复现不出人家的指标,感觉唯一的区别就是硬件不一样
好嘞,感谢老哥,这里面map数据应该是test数据集的性能,我还没把测试test数据集结果传到服务器评估,目前只是根据mmrotate的训练日志里的数据对比着看的
要提交到官方服务器去测,项目里面有大佬提供的权重文件,你可以用来测试,提交到服务器,看看能不能达到项目所述指标。
我有一个建议:官方给的mpa可能是在多尺度分割图片的情况下得到的结果。而在单一尺度下达不到这种精度很正常
这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些
ss 是原生尺寸,而ms是多尺度训练。我不是很清楚你知道复现是哪一个模型,我建议你可以排查一下原文是否使用了多尺度训练
---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2024年7月25日 16:24 | | 收件人 | @.> | | 抄送人 | @.>, @.> | | 主题 | Re: [open-mmlab/mmrotate] [Bug] The reproduced mAP is much less than the official result(RTMDet, O-RCNN, RetinaNet)/复现mAP离官方宣称结果差别较大 (Issue #1036) |
这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些 image.png (view on web)
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些
训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。
我有一个建议:官方给的mpa可能是在多尺度分割图片的情况下得到的结果。而在单一尺度下达不到这种精度很正常
官方的默认都是单尺度性能,多尺度的话会在配置文件名上加ms
标记
这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些
训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。
@yangxue0827 作者好,那请问这种版本问题造成的结果偏低大概是什么范围呢?像我在最开头提到过的那些数据算正常吗?
这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些
训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。
@yangxue0827 作者好,那请问这种版本问题造成的结果偏低大概是什么范围呢?像我在最开头提到过的那些数据算正常吗?
建议是自己将需要对比的方法重新在同版本代码下跑一遍,mmrotate提供的仅供参考。而且你现在测出来的75.84的test已经比我们报的75.69要高了。
ss 是原生尺寸,而ms是多尺度训练。我不是很清楚你知道复现是哪一个模型,我建议你可以排查一下原文是否使用了多尺度训练 … ---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2024年7月25日 16:24 | | 收件人 | @.> | | 抄送人 | @.>, @.> | | 主题 | Re: [open-mmlab/mmrotate] [Bug] The reproduced mAP is much less than the official result(RTMDet, O-RCNN, RetinaNet)/复现mAP离官方宣称结果差别较大 (Issue #1036) | 这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些 image.png (view on web) — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***> 我复现的是oriented_rcnn_r50_fpn_1×_dota_le90这个模型,未使用多尺度,性能数据和原文表格中接近的,下面是原文数据,第三和第四的数据是使用了多尺度
- mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
- dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
- mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。
@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?
这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些
训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。
@yangxue0827 作者好,那请问这种版本问题造成的结果偏低大概是什么范围呢?像我在最开头提到过的那些数据算正常吗?
建议是自己将需要对比的方法重新在同版本代码下跑一遍,mmrotate提供的仅供参考。而且你现在测出来的75.84的test已经比我们报的75.69要高了。
好的,感谢
- mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
- dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
- mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。
好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?
如果你是用test对比的话,可以直接采用mmrotate的,因为评测代码都是用官方的,比较公平和可靠。mmrotate的online eval仅供参考,一个原因是他是小图的评测,另一个原因是eval代码经历过修改和官方的也不一定一致。如果需要用验证集调参数(当然这里验证集就不要参加训练了),也建议用官方的评测脚本来评估验证集整图的检测结果。
- mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
- dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
- mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。
@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?
感觉对比的话控制好变量就行,哪个数据有利就用哪个,自己跑的绝对真实,如果自己方法性能好到碾压对比方法的paper数据,感觉就没必要再跑一遍了
- mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
- dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
- mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。
@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?
如果是希望公平对比,就用mmrotate的结果,不要用论文的结果,因为每篇论文setting不一致,不好直接比较的,这个也是做mmrotate的意义。如果你是要刷SOTA,你可以和原论文的比较,毕竟这里也不care用什么手段了。
mmrotate不是哪篇早期文章的官方代码(当然后面直接用mmrotate开发的不算),mmrotate也没有刻意去完全复现它们(指的是setting和各种稀奇古怪的tricks保持一致),mmrotate的作用是让大家在相同环境和设置下公平比较。如果实在想复现原文的点,还是要用它们开源的代码去跑。
- mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
- dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
- mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。
好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?
如果你是用test对比的话,可以直接采用mmrotate的,因为评测代码都是用官方的,比较公平和可靠。mmrotate的online eval仅供参考,一个原因是他是小图的评测,另一个原因是eval代码经历过修改和官方的也不一定一致。如果需要用验证集调参数(当然这里验证集就不要参加训练了),也建议用官方的评测脚本来评估验证集整图的检测结果。
请问你这说的online eval是指哪种,我上面贴的test集结果都是通过修改configs里的dota.py,将下面的那段注释去掉生成zip,交到DOTA官网计算指标的。
还是说python tools/test.py
跑val集,然后在后面加个--eval mAP
这种
- mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
- dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
- mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。
@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?
如果是希望公平对比,就用mmrotate的结果,不要用论文的结果,因为每篇论文setting不一致,不好直接比较的,这个也是做mmrotate的意义。如果你是要刷SOTA,你可以和原论文的比较,毕竟这里也不care用什么手段了。
理解,也就是比方法消融的时候可以用自己训练的,最后贴SOTA结果对比时再用论文官方数据。
- mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
- dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
- mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。
好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?
如果你是用test对比的话,可以直接采用mmrotate的,因为评测代码都是用官方的,比较公平和可靠。mmrotate的online eval仅供参考,一个原因是他是小图的评测,另一个原因是eval代码经历过修改和官方的也不一定一致。如果需要用验证集调参数(当然这里验证集就不要参加训练了),也建议用官方的评测脚本来评估验证集整图的检测结果。
请问你这说的online eval是指哪种,我上面贴的test集结果都是通过修改configs里的dota.py,将下面的那段注释去掉生成zip,交到DOTA官网计算指标的。
还是说
python tools/test.py
跑val集,然后在后面加个--eval mAP
这种
训练的时候不是会每训练几个epoch后会做一次eval出map。当然你给的这种也是可以手动测的。
Prerequisite
Task
I'm using the official example scripts/configs for the officially supported tasks/models/datasets.
Branch
dev-1.x branch https://github.com/open-mmlab/mmrotate/tree/dev-1.x
Environment
这是相应的训练时的日志(仅保留训练epoch开始前的部分) orcnn_20240314_083322.log rtmdet-r-m_20240416_115227.log rotated-retinanet-rbox-le90_r50_fpn_1x_dota_20240523_100514.log
Reproduces the problem - code sample
None
Reproduces the problem - command or script
oriented-rcnn-le90_r50_fpn_1x_dota
rotated_rtmdet_m-3x-dota
rotated-retinanet-rbox-le90_r50_fpn_1x_dota
Reproduces the problem - error message
如上面所示,这些是我自己从ImageNet预训练模型开始从头singlescale训的结果
离官方宣称的结果差别还是很大,在RTMDet-R这里已经有接近1个点的AP50差距了
Additional information