Yuxiang1995 / ICDAR2021_MFD

1st Solution For ICDAR 2021 Competition on Mathematical Formula Detection(公式检测冠军方案)
Apache License 2.0
128 stars 42 forks source link

__missing__ raise Keyerror (name) #3

Closed xauat-liushipeng closed 3 years ago

xauat-liushipeng commented 3 years ago

您好,您的repo和mmd官方代码我都试过了,都存在这个问题。数据集有什么特殊要求吗,正常的cocodataset style有问题 Traceback (most recent call last): File "tools/train.py", line 188, in main() File "tools/train.py", line 164, in main datasets = [build_dataset(cfg.data.train)] File "/home/a/.local/lib/python3.7/site-packages/mmdet/datasets/builder.py", line 58, in build_dataset elif cfg['type'] == 'ConcatDataset': File "/home/a/.local/lib/python3.7/site-packages/mmcv/utils/config.py", line 35, in missing raise KeyError(name) KeyError: 'type'

Yuxiang1995 commented 3 years ago

可以发下你dataset的config吗

xauat-liushipeng commented 3 years ago

dataset_type = 'CocoDataset' data_root = 'data/'

img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) train_pipeline = [ dict(type='LoadImageFromFile'), dict(type='LoadAnnotations', with_bbox=True), dict(type='Resize', img_scale=(1447, 2048), keep_ratio=True), dict(type='RandomCrop', crop_size=(1600, 1440)), dict(type='RandomFlip', flip_ratio=0.5), dict(type='Normalize', img_norm_cfg), dict(type='Pad', size_divisor=32), dict(type='DefaultFormatBundle'), dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']), ] test_pipeline = [ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(1583, 2048), flip=True, transforms=[ dict(type='Resize', keep_ratio=True), dict(type='RandomFlip'), dict(type='Normalize', img_norm_cfg), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']), ]) ] data = dict( samples_per_gpu=1, workers_per_gpu=2, train=[ dict( type=dataset_type, ann_file=data_root + 'annotations/train.json', img_prefix=data_root + 'train/', pipeline=train_pipeline), ], val=dict( type=dataset_type, ann_file=data_root + 'annotations/val.json', img_prefix=data_root + 'val/', pipeline=test_pipeline), test=dict( type=dataset_type, ann_file=data_root + 'annotations/test.json', img_prefix=data_root + 'test/', pipeline=test_pipeline)) evaluation = dict(interval=1, metric='bbox')

类别只分了一类 classes = ('formula')

xauat-liushipeng commented 3 years ago

上一个问题解决了确实是数据集cfg的问题,目前还有个问题就是Ranger不可用,说是mmcv not registry

Yuxiang1995 commented 3 years ago

上一个问题解决了确实是数据集cfg的问题,目前还有个问题就是Ranger不可用,说是mmcv not registry

Ranger是我自行加进mmdet里面的,所以需要在本工程代码根目录上运行pip install -e -v .或者python setup.py develop

xauat-liushipeng commented 3 years ago

好的,感谢您耐心答复

dongdongyee commented 3 years ago

我也卡在了Ranger。 完全按照了您的安装步骤安装,但仍然报错 KeyError: 'Ranger is not in the optimizer registry'

Yuxiang1995 commented 3 years ago

我也卡在了Ranger。 完全按照了您的安装步骤安装,但仍然报错 KeyError: 'Ranger is not in the optimizer registry'

刚刚修复了Ranger不可用的bug,pull最新的code试试,或者可以参考自定义添加Optimizer的文档customize_runtime.md

dongdongyee commented 3 years ago

新的修复依旧报错。不过我自己修复了。

修改ranger.py

from mmcv.runner.optimizer import OPTIMIZERS @OPTIMIZERS.register_module() class Ranger(Optimizer): ……

紧接着,将'../base/schedules/schedule_2x.py'中optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)注释掉,否则会引发momentum的keyerror

最后,将mmdet/models/dense_heads中gfl_head.py 对应最新版mmdetection的同文件对应修改,否则会引发torch在reduce时float和long类型不统一的问题。

目前code可以正常运行,但强烈建议团队再次做code review,不知道还有没有其他隐藏问题。

Yuxiang1995 commented 3 years ago

感谢对bug的修复,近期我会做一次code review,还遇到问题的话及时提issue

delveintodetail commented 3 years ago

新的修复依旧报错。不过我自己修复了。

修改ranger.py

from mmcv.runner.optimizer import OPTIMIZERS @OPTIMIZERS.register_module() class Ranger(Optimizer): ……

紧接着,将'../base/schedules/schedule_2x.py'中optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)注释掉,否则会引发momentum的keyerror

最后,将mmdet/models/dense_heads中gfl_head.py 对应最新版mmdetection的同文件对应修改,否则会引发torch在reduce时float和long类型不统一的问题。

目前code可以正常运行,但强烈建议团队再次做code review,不知道还有没有其他隐藏问题。

哈哈, 谢谢修复bug,公司内部的代码弄不出来,看他手抄了一遍,居然没有在外网验证就发布,靠谱程度打折扣。。。 @Yuxiang1995 colab上有免费的GPU也应该跑一把。。。。。。

hengyeliu commented 2 years ago

新的修复依旧报错。不过我自己修复了。

修改ranger.py

from mmcv.runner.optimizer import OPTIMIZERS @OPTIMIZERS.register_module() class Ranger(Optimizer): ……

紧接着,将'../base/schedules/schedule_2x.py'中optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)注释掉,否则会引发momentum的keyerror

最后,将mmdet/models/dense_heads中gfl_head.py 对应最新版mmdetection的同文件对应修改,否则会引发torch在reduce时float和long类型不统一的问题。

目前code可以正常运行,但强烈建议团队再次做code review,不知道还有没有其他隐藏问题。

老哥 想问一下你用这个代码可以复现README里面的结果吗?我复现的时候模型一直不收敛,不知道老哥你有没有遇到这种情况。

Liufangyu commented 2 years ago

新的修复依旧报错。不过我自己修复了。 修改ranger.py from mmcv.runner.optimizer import OPTIMIZERS @OPTIMIZERS.register_module() class Ranger(Optimizer): …… 紧接着,将'../base/schedules/schedule_2x.py'中optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)注释掉,否则会引发momentum的keyerror 最后,将mmdet/models/dense_heads中gfl_head.py 对应最新版mmdetection的同文件对应修改,否则会引发torch在reduce时float和long类型不统一的问题。 目前code可以正常运行,但强烈建议团队再次做code review,不知道还有没有其他隐藏问题。

老哥 想问一下你用这个代码可以复现README里面的结果吗?我复现的时候模型一直不收敛,不知道老哥你有没有遇到这种情况。

请问您收敛了吗,小白一个的我直接让那个返回tensor,训练出来的效果不好,loss一直卡在2左右,不知道您的结果如何?

hengyeliu commented 2 years ago

新的修复依旧报错。不过我自己修复了。 修改ranger.py from mmcv.runner.optimizer import OPTIMIZERS @OPTIMIZERS.register_module() class Ranger(Optimizer): …… 紧接着,将'../base/schedules/schedule_2x.py'中optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)注释掉,否则会引发momentum的keyerror 最后,将mmdet/models/dense_heads中gfl_head.py 对应最新版mmdetection的同文件对应修改,否则会引发torch在reduce时float和long类型不统一的问题。 目前code可以正常运行,但强烈建议团队再次做code review,不知道还有没有其他隐藏问题。

老哥 想问一下你用这个代码可以复现README里面的结果吗?我复现的时候模型一直不收敛,不知道老哥你有没有遇到这种情况。

请问您收敛了吗,小白一个的我直接让那个返回tensor,训练出来的效果不好,loss一直卡在2左右,不知道您的结果如何?

把backbone换成ResNet就收敛了,应该是原始的ResNeSt有问题吧

dongdongyee commented 2 years ago

新的修复依旧报错。不过我自己修复了。 修改ranger.py from mmcv.runner.optimizer import OPTIMIZERS @OPTIMIZERS.register_module() class Ranger(Optimizer): …… 紧接着,将'../base/schedules/schedule_2x.py'中optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)注释掉,否则会引发momentum的keyerror 最后,将mmdet/models/dense_heads中gfl_head.py 对应最新版mmdetection的同文件对应修改,否则会引发torch在reduce时float和long类型不统一的问题。 目前code可以正常运行,但强烈建议团队再次做code review,不知道还有没有其他隐藏问题。

老哥 想问一下你用这个代码可以复现README里面的结果吗?我复现的时候模型一直不收敛,不知道老哥你有没有遇到这种情况。

我没有跑这个数据集,我在我们内部的公式检测数据集上测试了一下,效果并没有超过我们现有的方法。

ZeroCodePro commented 1 year ago

新的修复依旧报错。不过我自己修复了。 修改ranger.py from mmcv.runner.optimizer import OPTIMIZERS @OPTIMIZERS.register_module() class Ranger(Optimizer): …… 紧接着,将'../base/schedules/schedule_2x.py'中optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)注释掉,否则会引发momentum的keyerror 最后,将mmdet/models/dense_heads中gfl_head.py 对应最新版mmdetection的同文件对应修改,否则会引发torch在reduce时float和long类型不统一的问题。 目前code可以正常运行,但强烈建议团队再次做code review,不知道还有没有其他隐藏问题。

老哥 想问一下你用这个代码可以复现README里面的结果吗?我复现的时候模型一直不收敛,不知道老哥你有没有遇到这种情况。

请问您收敛了吗,小白一个的我直接让那个返回tensor,训练出来的效果不好,loss一直卡在2左右,不知道您的结果如何?

把backbone换成ResNet就收敛了,应该是原始的ResNeSt有问题吧

改成ResNet,最终模型效果能达到README里面的结果吗