From 7aea3619cad23cf83deb2eeab2e53dd1cb1a43d2 Mon Sep 17 00:00:00 2001 From: Xinyu Wang <45810070+xinke-wang@users.noreply.github.com> Date: Mon, 22 Aug 2022 14:30:44 +0800 Subject: [PATCH] [Config] Update MASTER config (#1301) * [Config] Add textrec_default_runtime * add vis hook * update master config * update metafile * update Co-authored-by: gaotongxiao --- .../{master.py => _base_master_resnet31.py} | 38 ++++++++ .../master/master_r31_12e_ST_MJ_SA.py | 91 ------------------- .../master/master_resnet31_12e_st_mj_sa.py | 45 +++++++++ .../master/master_resnet31_12e_toy.py | 41 +++++++++ .../textrecog/master/master_toy_dataset.py | 71 --------------- configs/textrecog/master/metafile.yml | 6 +- 6 files changed, 127 insertions(+), 165 deletions(-) rename configs/textrecog/master/{master.py => _base_master_resnet31.py} (68%) delete mode 100644 configs/textrecog/master/master_r31_12e_ST_MJ_SA.py create mode 100644 configs/textrecog/master/master_resnet31_12e_st_mj_sa.py create mode 100644 configs/textrecog/master/master_resnet31_12e_toy.py delete mode 100644 configs/textrecog/master/master_toy_dataset.py diff --git a/configs/textrecog/master/master.py b/configs/textrecog/master/_base_master_resnet31.py similarity index 68% rename from configs/textrecog/master/master.py rename to configs/textrecog/master/_base_master_resnet31.py index 8e27e815..2d4440f8 100644 --- a/configs/textrecog/master/master.py +++ b/configs/textrecog/master/_base_master_resnet31.py @@ -1,3 +1,5 @@ +file_client_args = dict(backend='disk') + dictionary = dict( type='Dictionary', dict_file='dicts/english_digits_symbols.txt', @@ -71,3 +73,39 @@ model = dict( type='TextRecogDataPreprocessor', mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5])) + +train_pipeline = [ + dict( + type='LoadImageFromFile', + file_client_args=file_client_args, + ignore_empty=True, + min_size=5), + dict(type='LoadOCRAnnotations', with_text=True), + dict( + type='RescaleToHeight', + height=48, + min_width=48, + max_width=160, + width_divisor=16), + dict(type='PadToWidth', width=160), + dict( + type='PackTextRecogInputs', + meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio')) +] + +test_pipeline = [ + dict(type='LoadImageFromFile', file_client_args=file_client_args), + dict( + type='RescaleToHeight', + height=48, + min_width=48, + max_width=160, + width_divisor=16), + dict(type='PadToWidth', width=160), + # add loading annotation after ``Resize`` because ground truth + # does not need to do resize data transform + dict(type='LoadOCRAnnotations', with_text=True), + dict( + type='PackTextRecogInputs', + meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio')) +] diff --git a/configs/textrecog/master/master_r31_12e_ST_MJ_SA.py b/configs/textrecog/master/master_r31_12e_ST_MJ_SA.py deleted file mode 100644 index 32c98273..00000000 --- a/configs/textrecog/master/master_r31_12e_ST_MJ_SA.py +++ /dev/null @@ -1,91 +0,0 @@ -_base_ = [ - '../../_base_/recog_datasets/mjsynth.py', - '../../_base_/recog_datasets/synthtext.py', - '../../_base_/recog_datasets/synthtext_add.py', - '../../_base_/recog_datasets/cute80.py', - '../../_base_/recog_datasets/iiit5k.py', - '../../_base_/recog_datasets/svt.py', - '../../_base_/recog_datasets/svtp.py', - '../../_base_/recog_datasets/icdar2013.py', - '../../_base_/recog_datasets/icdar2015.py', - '../../_base_/default_runtime.py', - '../../_base_/schedules/schedule_adam_step_12e.py', - 'master.py', -] - -# dataset settings -train_list = [ - _base_.mj_rec_train, _base_.st_rec_train, _base_.st_add_rec_train -] -test_list = [ - _base_.cute80_rec_test, _base_.iiit5k_rec_test, _base_.svt_rec_test, - _base_.svtp_rec_test, _base_.ic13_rec_test, _base_.ic15_rec_test -] -file_client_args = dict(backend='disk') -default_hooks = dict(logger=dict(type='LoggerHook', interval=50), ) - -train_pipeline = [ - dict( - type='LoadImageFromFile', - file_client_args=file_client_args, - ignore_empty=True, - min_size=5), - dict(type='LoadOCRAnnotations', with_text=True), - dict( - type='RescaleToHeight', - height=48, - min_width=48, - max_width=160, - width_divisor=16), - dict(type='PadToWidth', width=160), - dict( - type='PackTextRecogInputs', - meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio')) -] - -test_pipeline = [ - dict(type='LoadImageFromFile', file_client_args=file_client_args), - dict( - type='RescaleToHeight', - height=48, - min_width=48, - max_width=160, - width_divisor=16), - dict(type='PadToWidth', width=160), - # add loading annotation after ``Resize`` because ground truth - # does not need to do resize data transform - dict(type='LoadOCRAnnotations', with_text=True), - dict( - type='PackTextRecogInputs', - meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio')) -] - -train_dataloader = dict( - batch_size=512, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='ConcatDataset', datasets=train_list, pipeline=train_pipeline)) -test_dataloader = dict( - batch_size=1, - num_workers=4, - persistent_workers=True, - drop_last=False, - sampler=dict(type='DefaultSampler', shuffle=False), - dataset=dict( - type='ConcatDataset', datasets=test_list, pipeline=test_pipeline)) -val_dataloader = test_dataloader - -val_evaluator = dict( - type='MultiDatasetsEvaluator', - metrics=[ - dict( - type='WordMetric', - mode=['exact', 'ignore_case', 'ignore_case_symbol']), - dict(type='CharMetric') - ], - dataset_prefixes=['CUTE80', 'IIIT5K', 'SVT', 'SVTP', 'IC13', 'IC15']) -test_evaluator = val_evaluator - -visualizer = dict(type='TextRecogLocalVisualizer', name='visualizer') diff --git a/configs/textrecog/master/master_resnet31_12e_st_mj_sa.py b/configs/textrecog/master/master_resnet31_12e_st_mj_sa.py new file mode 100644 index 00000000..cceefedb --- /dev/null +++ b/configs/textrecog/master/master_resnet31_12e_st_mj_sa.py @@ -0,0 +1,45 @@ +_base_ = [ + '../../_base_/recog_datasets/mjsynth.py', + '../../_base_/recog_datasets/synthtext.py', + '../../_base_/recog_datasets/synthtext_add.py', + '../../_base_/recog_datasets/cute80.py', + '../../_base_/recog_datasets/iiit5k.py', + '../../_base_/recog_datasets/svt.py', + '../../_base_/recog_datasets/svtp.py', + '../../_base_/recog_datasets/icdar2013.py', + '../../_base_/recog_datasets/icdar2015.py', + '../../_base_/textrec_default_runtime.py', + '../../_base_/schedules/schedule_adam_step_12e.py', + '_base_master_resnet31.py', +] + +# dataset settings +train_list = [ + _base_.mj_rec_train, _base_.st_rec_train, _base_.st_add_rec_train +] +test_list = [ + _base_.cute80_rec_test, _base_.iiit5k_rec_test, _base_.svt_rec_test, + _base_.svtp_rec_test, _base_.ic13_rec_test, _base_.ic15_rec_test +] + +train_dataset = dict( + type='ConcatDataset', datasets=train_list, pipeline=_base_.train_pipeline) +test_dataset = dict( + type='ConcatDataset', datasets=test_list, pipeline=_base_.test_pipeline) + +train_dataloader = dict( + batch_size=512, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=train_dataset) + +test_dataloader = dict( + batch_size=1, + num_workers=4, + persistent_workers=True, + drop_last=False, + sampler=dict(type='DefaultSampler', shuffle=False), + dataset=test_dataset) + +val_dataloader = test_dataloader diff --git a/configs/textrecog/master/master_resnet31_12e_toy.py b/configs/textrecog/master/master_resnet31_12e_toy.py new file mode 100644 index 00000000..0bb5f1ff --- /dev/null +++ b/configs/textrecog/master/master_resnet31_12e_toy.py @@ -0,0 +1,41 @@ +_base_ = [ + '_base_master_resnet31.py', + '../../_base_/recog_datasets/toy_data.py', + '../../_base_/textrec_default_runtime.py', + '../../_base_/schedules/schedule_adam_step_12e.py', +] + +# dataset settings +train_list = {{_base_.train_list}} +test_list = {{_base_.test_list}} + +train_dataset = dict( + type='ConcatDataset', datasets=train_list, pipeline=_base_.train_pipeline) +test_dataset = dict( + type='ConcatDataset', datasets=test_list, pipeline=_base_.test_pipeline) + +train_dataloader = dict( + batch_size=2, + num_workers=1, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=train_dataset) + +val_dataloader = dict( + batch_size=2, + num_workers=1, + persistent_workers=True, + drop_last=False, + sampler=dict(type='DefaultSampler', shuffle=False), + dataset=test_dataset) + +test_dataloader = val_dataloader + +val_evaluator = [ + dict( + type='WordMetric', mode=['exact', 'ignore_case', + 'ignore_case_symbol']), + dict(type='CharMetric') +] + +test_evaluator = val_evaluator diff --git a/configs/textrecog/master/master_toy_dataset.py b/configs/textrecog/master/master_toy_dataset.py deleted file mode 100644 index 95c25857..00000000 --- a/configs/textrecog/master/master_toy_dataset.py +++ /dev/null @@ -1,71 +0,0 @@ -_base_ = [ - 'master.py', - '../../_base_/recog_datasets/toy_data.py', - '../../_base_/default_runtime.py', - '../../_base_/schedules/schedule_adam_step_12e.py', -] - -# dataset settings -train_list = {{_base_.train_list}} -test_list = {{_base_.test_list}} -file_client_args = dict(backend='disk') -default_hooks = dict(logger=dict(type='LoggerHook', interval=50), ) - -train_pipeline = [ - dict(type='LoadImageFromFile', file_client_args=file_client_args), - dict(type='LoadOCRAnnotations', with_text=True), - dict( - type='RescaleToHeight', - height=48, - min_width=48, - max_width=160, - width_divisor=16), - dict(type='PadToWidth', width=160), - dict( - type='PackTextRecogInputs', - meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio')) -] - -test_pipeline = [ - dict(type='LoadImageFromFile', file_client_args=file_client_args), - dict( - type='RescaleToHeight', - height=48, - min_width=48, - max_width=160, - width_divisor=16), - dict(type='PadToWidth', width=160), - # add loading annotation after ``Resize`` because ground truth - # does not need to do resize data transform - dict(type='LoadOCRAnnotations', with_text=True), - dict( - type='PackTextRecogInputs', - meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio')) -] - -train_dataloader = dict( - batch_size=2, - num_workers=1, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='ConcatDataset', datasets=train_list, pipeline=train_pipeline)) - -val_dataloader = dict( - batch_size=2, - num_workers=1, - persistent_workers=True, - drop_last=False, - sampler=dict(type='DefaultSampler', shuffle=False), - dataset=dict( - type='ConcatDataset', datasets=test_list, pipeline=test_pipeline)) -test_dataloader = val_dataloader - -val_evaluator = [ - dict( - type='WordMetric', mode=['exact', 'ignore_case', - 'ignore_case_symbol']), - dict(type='CharMetric') -] -test_evaluator = val_evaluator -visualizer = dict(type='TextRecogLocalVisualizer', name='visualizer') diff --git a/configs/textrecog/master/metafile.yml b/configs/textrecog/master/metafile.yml index 55b0b804..6988baa3 100644 --- a/configs/textrecog/master/metafile.yml +++ b/configs/textrecog/master/metafile.yml @@ -16,9 +16,9 @@ Collections: README: configs/textrecog/master/README.md Models: - - Name: master_r31_12e_ST_MJ_SA + - Name: master_resnet31_12e_st_mj_sa In Collection: MASTER - Config: configs/textrecog/master/master_r31_12e_ST_MJ_SA.py + Config: configs/textrecog/master/master_resnet31_12e_st_mj_sa.py Metadata: Training Data: - SynthText @@ -49,4 +49,4 @@ Models: Dataset: CT80 Metrics: word_acc: 88.54 - Weights: https://download.openmmlab.com/mmocr/textrecog/master/master_r31_12e_ST_MJ_SA-787edd36.pth + Weights: https://download.openmmlab.com/mmocr/textrecog/master/master_resnet31_12e_st_mj_sa-787edd36.pth