easton-cau / SOTR

SOTR: Segmenting Objects with Transformers
MIT License
193 stars 32 forks source link

测试和训练的问题 #2

Closed Xushibo96 closed 3 years ago

Xushibo96 commented 3 years ago

您好,我在运行测试和训练时遇到了几个问题,希望您解答一下。
首先我运行

python tools/train_net.py \
    --config-file configs/SOTR/R101.yaml \
    --eval-only \
    --num-gpus 4 \
    MODEL.WEIGHTS work_dir/SOTR_R101/SOTR_R101.pth

得到的结果是:

|   AP   |  AP50  |  AP75  |  APs   |  APm   |  APl   |
|:------:|:------:|:------:|:------:|:------:|:------:|
| 39.730 | 60.303 | 42.707 | 18.045 | 43.414 | 59.794 |

跟您给出的有一定差距,不知道是哪里出了问题。
另外,在运行训练代码时,tools/train_net.py的第52行super(DefaultTrainer, self).__init__(model, data_loader, optimizer)似乎有问题,我把它改成super(Trainer, self).__init__(cfg)问题消失,但是会出现

FloatingPointError: Loss became infinite or NaN at iteration=2!
loss_dict = {'loss_ins': nan, 'loss_cate': nan}

我的学习率设置是:

SOLVER:
  IMS_PER_BATCH: 4
  BASE_LR: 0.00001
  WARMUP_FACTOR: 0.00001

请问NaN的问题应该如何解决? 期待您的回复,谢谢。

easton-cau commented 3 years ago

1.请先检查环境,以下是测试过没有问题的环境:

torch == 1.7.1 torchvision == 0.8.2 detectron2 == 0.2.1

2.学习率请采用Base-SOTR.yaml中的数值

3.我们提供了训练后的模型权重,请先测试下效果,确保代码没有问题

如果有问题随时联系。

easton-cau commented 3 years ago

您是在验证集还是测试集上测试?论文中的结果是在COCO test-dev上测试的,而非coco_2017_val。

您可以测试一遍测试集,然后将结果提交到COCO竞赛平台,进行验证,测试集不对用户提供ground truth。

Xushibo96 commented 3 years ago

好的,我是在coco2017val测试的,应该是搞错了,我再试试,谢谢。

在 2021年8月24日,下午4:37,easton-cau @.***> 写道:



您是在验证集还是测试集上测试?论文中的结果是在COCO test-dev上测试的,而非coco_2017_val。

您可以测试一遍测试集,然后将结果提交到COCO竞赛平台,进行验证,测试集不对用户提供ground truth。

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/easton-cau/SOTR/issues/2#issuecomment-904442201, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AIQFOXV2FZCOVPZA5PZT67TT6NK5RANCNFSM5CWHTYMQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

hhlisme commented 3 years ago

如果有问题随时联系。

你好,我尝试的时候也存在类似的问题。环境和配置都一样,唯一改了一点就是上面@Xushibo96提到的tools/train_net.py的第52行改成super(Trainer, self).init(cfg)(不然会报错)。执行训练代码时,也总是报上面@Xushibo96提到的FloatingPointError: Loss became infinite or NaN at iteration=1! loss_dict = {'loss_ins': nan, 'loss_cate': nan},此时R101.yaml为作者提供的版本未做任何修改。(考虑到可能是没有下载R-101.pkl,我也尝试自行下载R-101.pkl后放到相应目录下本地读取,但也存在Some model parameters or buffers are not found in the checkpoint的WARNING提示,且报上述错误)。在多次尝试后,把BASE_LR调成1*10-12(即0.000000000001)时勉强才能跑起来,但从日志上看,loss_cate一开始就有百万级的大小,loss_ins一开始就只有2.6+,差异悬殊。 想请教一下这样操作是否正确?

easton-cau commented 3 years ago

@hhlisme 您好,请将配置的环境与错误日志发一下。正常情况下loss_cate开始时不会很大。

easton-cau commented 3 years ago

@hhlisme 好的

roar-1128 commented 2 years ago

如果有问题随时联系。

你好,我尝试的时候也存在类似的问题。环境和配置都一样,唯一改了一点就是上面@Xushibo96提到的tools/train_net.py的第52行改成super(Trainer, self).init(cfg)(不然会报错)。执行训练代码时,也总是报上面@Xushibo96提到的FloatingPointError: Loss became infinite or NaN at iteration=1! loss_dict = {'loss_ins': nan, 'loss_cate': nan},此时R101.yaml为作者提供的版本未做任何修改。(考虑到可能是没有下载R-101.pkl,我也尝试自行下载R-101.pkl后放到相应目录下本地读取,但也存在Some model parameters or buffers are not found in the checkpoint的WARNING提示,且报上述错误)。在多次尝试后,把BASE_LR调成1*10-12(即0.000000000001)时勉强才能跑起来,但从日志上看,loss_cate一开始就有百万级的大小,loss_ins一开始就只有2.6+,差异悬殊。 想请教一下这样操作是否正确?

我出现了和你一样的问题,请问你解决了吗

hhlisme commented 2 years ago

如果有问题随时联系。

你好,我尝试的时候也存在类似的问题。环境和配置都一样,唯一改了一点就是上面@Xushibo96提到的tools/train_net.py的第52行改成super(Trainer, self).init(cfg)(不然会报错)。执行训练代码时,也总是报上面@Xushibo96提到的FloatingPointError: Loss became infinite or NaN at iteration=1! loss_dict = {'loss_ins': nan, 'loss_cate': nan},此时R101.yaml为作者提供的版本未做任何修改。(考虑到可能是没有下载R-101.pkl,我也尝试自行下载R-101.pkl后放到相应目录下本地读取,但也存在Some model parameters or buffers are not found in the checkpoint的WARNING提示,且报上述错误)。在多次尝试后,把BASE_LR调成1*10-12(即0.000000000001)时勉强才能跑起来,但从日志上看,loss_cate一开始就有百万级的大小,loss_ins一开始就只有2.6+,差异悬殊。 想请教一下这样操作是否正确?

我出现了和你一样的问题,请问你解决了吗

@roar-1128 这个是版本问题,需要按照作者提示的版本操作,就没问题了。

roar-1128 commented 2 years ago

你好,我的环境是: torch == 1.7.1 torchvision == 0.8.2 detectron == 0.2.1

与作者使用的是一样的

如果有问题随时联系。

你好,我尝试的时候也存在类似的问题。环境和配置都一样,唯一改了一点就是上面@Xushibo96提到的tools/train_net.py的第52行改成super(Trainer, self).init(cfg)(不然会报错)。执行训练代码时,也总是报上面@Xushibo96提到的FloatingPointError: Loss became infinite or NaN at iteration=1! loss_dict = {'loss_ins': nan, 'loss_cate': nan},此时R101.yaml为作者提供的版本未做任何修改。(考虑到可能是没有下载R-101.pkl,我也尝试自行下载R-101.pkl后放到相应目录下本地读取,但也存在Some model parameters or buffers are not found in the checkpoint的WARNING提示,且报上述错误)。在多次尝试后,把BASE_LR调成1*10-12(即0.000000000001)时勉强才能跑起来,但从日志上看,loss_cate一开始就有百万级的大小,loss_ins一开始就只有2.6+,差异悬殊。 想请教一下这样操作是否正确?

我出现了和你一样的问题,请问你解决了吗

@roar-1128 这个是版本问题,需要按照作者提示的版本操作,就没问题了。