open-mmlab / mmocr

OpenMMLab Text Detection, Recognition and Understanding Toolbox
https://mmocr.readthedocs.io/en/dev-1.x/
Apache License 2.0
4.3k stars 745 forks source link

[Bug] load model error #1992

Closed anbo724 closed 12 months ago

anbo724 commented 1 year ago

Prerequisite

Task

I'm using the official example scripts/configs for the officially supported tasks/models/datasets.

Branch

main branch https://github.com/open-mmlab/mmocr

Environment

Traceback (most recent call last): File "ipaInfer/ipaInfer.py", line 5, in ocr = MMOCRInferencer(rec='ipaInfer/model/crnn_mini-vgg_5e_ipa-big.py', rec_weights='ipaInfer/model/epoch_400.pth') File "/home/lcj/mmocr/mmocr/apis/inferencers/mmocr_inferencer.py", line 73, in init self.textrec_inferencer = TextRecInferencer( File "/home/lcj/mmocr/mmocr/apis/inferencers/base_mmocr_inferencer.py", line 65, in init super().init( File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/infer/infer.py", line 180, in init self.model = self._init_model(cfg, weights, device) # type: ignore File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/infer/infer.py", line 483, in _init_model model = MODELS.build(cfg.model) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, args, kwargs, registry=self) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 232, in build_model_from_cfg return build_from_cfg(cfg, registry, default_args) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/lcj/mmocr/mmocr/models/textrecog/recognizers/encoder_decoder_recognizer.py", line 60, in init self.decoder = MODELS.build(decoder) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, args, kwargs, registry=self) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 232, in build_model_from_cfg return build_from_cfg(cfg, registry, default_args) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/lcj/mmocr/mmocr/models/textrecog/decoders/crnn_decoder.py", line 40, in init super().init( File "/home/lcj/mmocr/mmocr/models/textrecog/decoders/base.py", line 36, in init self.dictionary = TASK_UTILS.build(dictionary) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, *args, kwargs, registry=self) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/lcj/mmocr/mmocr/models/common/dictionary/dictionary.py", line 69, in init raise ValueError('Expect each line has 0 or 1 character, ' ValueError: Expect each line has 0 or 1 character, got 2 characters at line 43

Reproduces the problem - code sample

from mmocr.apis.inferencers import MMOCRInferencer

ocr = MMOCRInferencer(rec='ipaInfer/model/crnn_mini-vgg_5e_ipa-big.py', rec_weights='ipaInfer/model/epoch_400.pth') print('load finish')

Reproduces the problem - command or script

python test.py

Reproduces the problem - error message

File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/infer/infer.py", line 483, in _init_model model = MODELS.build(cfg.model) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, args, kwargs, registry=self) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 232, in build_model_from_cfg return build_from_cfg(cfg, registry, default_args) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/lcj/mmocr/mmocr/models/textrecog/recognizers/encoder_decoder_recognizer.py", line 60, in init self.decoder = MODELS.build(decoder) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, args, kwargs, registry=self) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 232, in build_model_from_cfg return build_from_cfg(cfg, registry, default_args) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/lcj/mmocr/mmocr/models/textrecog/decoders/crnn_decoder.py", line 40, in init super().init( File "/home/lcj/mmocr/mmocr/models/textrecog/decoders/base.py", line 36, in init self.dictionary = TASK_UTILS.build(dictionary) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, *args, kwargs, registry=self) File "/home/lcj/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/lcj/mmocr/mmocr/models/common/dictionary/dictionary.py", line 69, in init raise ValueError('Expect each line has 0 or 1 character, ' ValueError: Expect each line has 0 or 1 character, got 2 characters at line 43

Additional information

No response

gaotongxiao commented 1 year ago

Looks like the dictionary file that your custom config referred to is invalid - line 43 contains 2 characters?

anbo724 commented 12 months ago

yes, thanks