Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] The reproduced mAP is much less than the official result(RTMDet, O-RCNN, RetinaNet)/复现mAP离官方宣称结果差别较大 #1036

Open
3 tasks done
Terry-Zheng opened this issue May 22, 2024 · 33 comments

Comments

@Terry-Zheng
Copy link

Terry-Zheng commented May 22, 2024

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

    python tool/train.py configs/oriented_rcnn/oriented-rcnn-le90_r50_fpn_1x_dota.py
  • rotated_rtmdet_m-3x-dota

    python tool/train.py configs/rotated_rtmdet/rotated_rtmdet_m-3x-dota.py
  • rotated-retinanet-rbox-le90_r50_fpn_1x_dota

    python tool/train.py configs/rotated_retinanet/rotated-retinanet-rbox-le90_r50_fpn_1x_dota.py

Reproduces the problem - error message

  • Oriented_RCNN

    AP50 AP75 mAP PL BD BR GTF SV LV SH TC BC ST SBF RA HA SP HC
    train from scatch 75.25 49.30 45.75 88.87 82.50 53.49 70.82 79.02 83.05 88.13 90.79 85.02 84.73 61.85 64.68 72.45 68.35 55.03
    official result 75.69
  • RTMDet-R

    AP50 AP75 mAP PL BD BR GTF SV LV SH TC BC ST SBF RA HA SP HC
    train from scatch 77.36 52.66 49.09 89.03 84.98 51.70 72.94 81.84 84.21 89.05 90.87 87.29 87.16 59.96 66.16 76.89 80.30 58.02
    official result 78.24 54.47 50.56
  • RetinaNet

    AP50 AP75 mAP PL BD BR GTF SV LV SH TC BC ST SBF RA HA SP HC
    train from scatch 67.82 40.87 39.50 88.00 79.56 39.62 66.52 77.36 60.24 76.88 90.87 81.38 81.70 56.08 61.64 55.61 64.02 37.76
    official result 68.42
  • 如上面所示,这些是我自己从ImageNet预训练模型开始从头singlescale训的结果

  • 离官方宣称的结果差别还是很大,在RTMDet-R这里已经有接近1个点的AP50差距了

Additional information

  • 想问下复现结果与官方mAP这么大的差异的原因在哪里,尝试了多个复现都离官方宣传的差一些。
    • 不仅是这两个,还有另外的基于这个框架设计的PKINet我也测试过,在singlescale的情况下也是比官方宣称的差了一个多点
  • 难道是因为官方结果是通过多次训练取得的最大值嘛
    • 那有没有可能通过随机种子复现得到(不过使用的显卡好像不一样)
  • 另外还有一点,就是我用官方提供的模型测试retinanet, kfiou, kld的trainval集时候,测得的模型AP50为40%多,很明显低于自己训练的七八十,因此我想问下这些模型是从别的仓库直接复制过来的吗,还是说代码改动过?
@CrazyBrick
Copy link

同蹲一个答案,好像之前看有几篇也是自己的repo给的会比mmrotate复现的高

@Terry-Zheng Terry-Zheng changed the title [Bug] The reproduced mAP is much less than the official result(RTMDet, O-RCNN)/复现mAP离官方宣称结果差别较大 [Bug] The reproduced mAP is much less than the official result(RTMDet, O-RCNN, RetinaNet)/复现mAP离官方宣称结果差别较大 May 24, 2024
@WenLinLliu
Copy link

我跑官方的config也打不到宣称的进度。请问你用dota数据集是如何切图处理的?

@Terry-Zheng
Copy link
Author

我跑官方的config也打不到宣称的进度。请问你用dota数据集是如何切图处理的?

@WenLinLliu 我是直接用mmrotate自带的工具分割的,tools/data/dota/README.md这里有说明

@WenLinLliu
Copy link

感谢回答,再问一下,val验证集只做验证吗,需不需要把验证集拿去训练

@tianbo321
Copy link

按照论文中的分割方式处理DOTA数据集,val验证集只做验证,使用8块A100训练300epoch,提交官方服务器mAP: 0.5102483053329094。

@Latitude9527
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么
image

@tianbo321
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

@tianbo321
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

@Latitude9527
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能

@tianbo321
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能

这个项目里面有更详细的指标,不需要看paper的

@Latitude9527
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能

这个项目里面有更详细的指标,不需要看paper的

问题是目前复现不出来这个指标,我准备多跑几次看看

@tianbo321
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能

这个项目里面有更详细的指标,不需要看paper的

问题是目前复现不出来这个指标,我准备多跑几次看看

你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html
image

@tianbo321
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能

这个项目里面有更详细的指标,不需要看paper的

问题是目前复现不出来这个指标,我准备多跑几次看看

你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html image

我也试了好多方法,复现不出人家的指标,感觉唯一的区别就是硬件不一样

@Latitude9527
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能

这个项目里面有更详细的指标,不需要看paper的

问题是目前复现不出来这个指标,我准备多跑几次看看

你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html image

我也试了好多方法,复现不出人家的指标,感觉唯一的区别就是硬件不一样

好嘞,感谢老哥,这里面map数据应该是test数据集的性能,我还没把测试test数据集结果传到服务器评估,目前只是根据mmrotate的训练日志里的数据对比着看的

@tianbo321
Copy link

我用官方的config跑的验证结果差了四个点,官方log最后验证是map0.89001,我的log验证是0.85056,数据集方面,官方config貌似把验证和训练数据都放在同一个trainval文件夹里,难道不应该分开么 image

我使用官方的权重进行测试,map值也达不到官方的效果

dotav1.0的test集

老哥有没有跑过paper链接里的源码,原文的代码跑起来能不能达到paper性能

这个项目里面有更详细的指标,不需要看paper的

问题是目前复现不出来这个指标,我准备多跑几次看看

你可以看看这个官方文档 https://mmrotate.readthedocs.io/zh-cn/v0.3.4/model_zoo.html image

我也试了好多方法,复现不出人家的指标,感觉唯一的区别就是硬件不一样

好嘞,感谢老哥,这里面map数据应该是test数据集的性能,我还没把测试test数据集结果传到服务器评估,目前只是根据mmrotate的训练日志里的数据对比着看的

要提交到官方服务器去测,项目里面有大佬提供的权重文件,你可以用来测试,提交到服务器,看看能不能达到项目所述指标。

@ZhenboZhao77
Copy link

我有一个建议:官方给的mpa可能是在多尺度分割图片的情况下得到的结果。而在单一尺度下达不到这种精度很正常

@Latitude9527
Copy link

这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些
image

@ZhenboZhao77
Copy link

ZhenboZhao77 commented Jul 25, 2024 via email

@yangxue0827
Copy link
Collaborator

这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些 image

训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。

@yangxue0827
Copy link
Collaborator

我有一个建议:官方给的mpa可能是在多尺度分割图片的情况下得到的结果。而在单一尺度下达不到这种精度很正常

官方的默认都是单尺度性能,多尺度的话会在配置文件名上加ms标记

@Terry-Zheng
Copy link
Author

这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些 image

训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。

@yangxue0827 作者好,那请问这种版本问题造成的结果偏低大概是什么范围呢?像我在最开头提到过的那些数据算正常吗?

@yangxue0827
Copy link
Collaborator

yangxue0827 commented Jul 25, 2024

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己将需要对比的方法重新在同版本代码下跑一遍。

@yangxue0827
Copy link
Collaborator

yangxue0827 commented Jul 25, 2024

这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些 image

训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。

@yangxue0827 作者好,那请问这种版本问题造成的结果偏低大概是什么范围呢?像我在最开头提到过的那些数据算正常吗?

建议是自己将需要对比的方法重新在同版本代码下跑一遍,mmrotate提供的仅供参考。而且你现在测出来的75.84的test已经比我们报的75.69要高了。

@Latitude9527
Copy link

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这个模型,未使用多尺度,性能数据和原文表格中接近的,下面是原文数据,第三和第四的数据是使用了多尺度
image

@Terry-Zheng
Copy link
Author

Terry-Zheng commented Jul 25, 2024

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。

@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?

@Latitude9527
Copy link

这是我训练的权重在dota评估服务器评估的的结果,应该算是复现成功了吧。预训练文件用的官方在imagenet训练的resnet50,数据集用的ss_trainval.json分割的,完全照搬mmrotate设置。但是训练日志里最后验证指标还是0.85跟官方训练日志的0.89还是差了一些 image

训练日志里的指标应该比较早版本的mmrotate训练的,后来应该对online的评估代码做了调整,整体计算出来的结果可能偏低导致的,以test的结果为准,online eval仅供同版本代码训练进行对比和参考。

@yangxue0827 作者好,那请问这种版本问题造成的结果偏低大概是什么范围呢?像我在最开头提到过的那些数据算正常吗?

建议是自己将需要对比的方法重新在同版本代码下跑一遍,mmrotate提供的仅供参考。而且你现在测出来的75.84的test已经比我们报的75.69要高了。

好的,感谢

@yangxue0827
Copy link
Collaborator

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。

好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?

如果你是用test对比的话,可以直接采用mmrotate的,因为评测代码都是用官方的,比较公平和可靠。mmrotate的online eval仅供参考,一个原因是他是小图的评测,另一个原因是eval代码经历过修改和官方的也不一定一致。如果需要用验证集调参数(当然这里验证集就不要参加训练了),也建议用官方的评测脚本来评估验证集整图的检测结果。

@Latitude9527
Copy link

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。

@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?

感觉对比的话控制好变量就行,哪个数据有利就用哪个,自己跑的绝对真实,如果自己方法性能好到碾压对比方法的paper数据,感觉就没必要再跑一遍了

@yangxue0827
Copy link
Collaborator

yangxue0827 commented Jul 25, 2024

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。

@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?

如果是希望公平对比,就用mmrotate的结果,不要用论文的结果,因为每篇论文setting不一致,不好直接比较的,这个也是做mmrotate的意义。如果你是要刷SOTA,你可以和原论文的比较,毕竟这里也不care用什么手段了。

@yangxue0827
Copy link
Collaborator

yangxue0827 commented Jul 25, 2024

mmrotate不是哪篇早期文章的官方代码(当然后面直接用mmrotate开发的不算),mmrotate也没有刻意去完全复现它们(指的是setting和各种稀奇古怪的tricks保持一致),mmrotate的作用是让大家在相同环境和设置下公平比较。如果实在想复现原文的点,还是要用它们开源的代码去跑。

@Terry-Zheng
Copy link
Author

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。

好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?

如果你是用test对比的话,可以直接采用mmrotate的,因为评测代码都是用官方的,比较公平和可靠。mmrotate的online eval仅供参考,一个原因是他是小图的评测,另一个原因是eval代码经历过修改和官方的也不一定一致。如果需要用验证集调参数(当然这里验证集就不要参加训练了),也建议用官方的评测脚本来评估验证集整图的检测结果。

请问你这说的online eval是指哪种,我上面贴的test集结果都是通过修改configs里的dota.py,将下面的那段注释去掉生成zip,交到DOTA官网计算指标的。

# inference on test dataset and format the output results
# for submission. Note: the test set has no annotation.
# test_dataloader = dict(
# batch_size=1,
# num_workers=2,
# persistent_workers=True,
# drop_last=False,
# sampler=dict(type='DefaultSampler', shuffle=False),
# dataset=dict(
# type=dataset_type,
# data_root=data_root,
# data_prefix=dict(img_path='test/images/'),
# test_mode=True,
# pipeline=test_pipeline))
# test_evaluator = dict(
# type='DOTAMetric',
# format_only=True,
# merge_patches=True,
# outfile_prefix='./work_dirs/dota/Task1')

还是说python tools/test.py跑val集,然后在后面加个--eval mAP这种

@Terry-Zheng
Copy link
Author

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。

@yangxue0827 好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?

如果是希望公平对比,就用mmrotate的结果,不要用论文的结果,因为每篇论文setting不一致,不好直接比较的,这个也是做mmrotate的意义。如果你是要刷SOTA,你可以和原论文的比较,毕竟这里也不care用什么手段了。

理解,也就是比方法消融的时候可以用自己训练的,最后贴SOTA结果对比时再用论文官方数据。

@yangxue0827
Copy link
Collaborator

  1. mmrotate目的是在相同数据处理已经训练策略下公平对比各个方法,并不会按照这些方法原文的setting跑,所以和原文的性能不具备可以性;
  2. dota用的是AP50指标不像coco的AP50:95这么稳定,加上DOTA数据量不大,因此有1%内的波动比较正常;
  3. mmrotate提供的权重可能是老版本训练的,新版本代码只保证能load上并测试,因此可能在最终评估精度上有些差异也正常,建议是自己讲需要对比的方法重新在同版本代码下跑一遍。

好的,那请问如果我需要在论文中对比的话,是可以直接用自己重新训练现有方法的结果对比吗?还是说得用现有方法论文提供的官方数据?

如果你是用test对比的话,可以直接采用mmrotate的,因为评测代码都是用官方的,比较公平和可靠。mmrotate的online eval仅供参考,一个原因是他是小图的评测,另一个原因是eval代码经历过修改和官方的也不一定一致。如果需要用验证集调参数(当然这里验证集就不要参加训练了),也建议用官方的评测脚本来评估验证集整图的检测结果。

请问你这说的online eval是指哪种,我上面贴的test集结果都是通过修改configs里的dota.py,将下面的那段注释去掉生成zip,交到DOTA官网计算指标的。

# inference on test dataset and format the output results
# for submission. Note: the test set has no annotation.
# test_dataloader = dict(
# batch_size=1,
# num_workers=2,
# persistent_workers=True,
# drop_last=False,
# sampler=dict(type='DefaultSampler', shuffle=False),
# dataset=dict(
# type=dataset_type,
# data_root=data_root,
# data_prefix=dict(img_path='test/images/'),
# test_mode=True,
# pipeline=test_pipeline))
# test_evaluator = dict(
# type='DOTAMetric',
# format_only=True,
# merge_patches=True,
# outfile_prefix='./work_dirs/dota/Task1')

还是说python tools/test.py跑val集,然后在后面加个--eval mAP这种

训练的时候不是会每训练几个epoch后会做一次eval出map。当然你给的这种也是可以手动测的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants