[MODEL] Add Union14M trained models (#1960)

* [Update] Add ABINet

* [Update] Add NRTR

* [Update] Add SATRN

* [Update] Add configs
pull/1983/head
Qing Jiang 2023-09-03 23:01:32 +08:00 committed by GitHub
parent 1dcd6fa695
commit e50c5fd9d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 601 additions and 0 deletions

View File

@ -47,6 +47,22 @@ Linguistic knowledge is of great benefit to scene text recognition. However, how
2. Facts about the pretrained model: MMOCR does not have a systematic pipeline to pretrain the language model (LM) yet, thus the weights of LM are converted from [the official pretrained model](https://github.com/FangShancheng/ABINet). The weights of ABINet-Vision are directly used as the vision model of ABINet.
```
We also provide ABINet trained on [Union14M](https://github.com/Mountchicken/Union14M)
- Evaluated on six common benchmarks
| methods | pretrained | | Regular Text | | | | Irregular Text | | download |
| :---------------------------------------------------------------: | :--------: | :----: | :----------: | :-------: | :-: | :-------: | :------------: | :----: | :----------------------------------------------------------------- |
| | | IIIT5K | SVT | IC13-1015 | | IC15-2077 | SVTP | CT80 | |
| [ABINet-Vision](configs/textrecog/abinet/abinet-vision_10e_union14m.py) | - | 0.9730 | 0.9645 | 0.9552 | | 0.8536 | 0.8977 | 0.9479 | [model](https://download.openmmlab.com/mmocr/textrecog/abinet/abinet_union14m-cbf19742.pth) |
- Evaluated on [Union14M-Benchmark](https://github.com/Mountchicken/Union14M)
| Methods | | Unsolved Challenges | | | | | Additional Challenges | | General | download |
| ------------------------------------------------------ | ----- | ------------------- | -------- | ----------- | --- | ------- | --------------------- | ---------- | ------- | ------------------------------------------------------- |
| | Curve | Multi-Oriented | Artistic | Contextless | | Salient | Multi-Words | Incomplete | General | |
| [ABINet-Vision](configs/textrecog/abinet/abinet-vision_10e_union14m.py) | 0.750 | 0.615 | 0.653 | 0.711 | | 0.729 | 0.591 | 0.026 | 0.794 | [model](https://download.openmmlab.com/mmocr/textrecog/abinet/abinet_union14m-cbf19742.pth) |
## Citation
```bibtex

View File

@ -0,0 +1,118 @@
_base_ = [
'../_base_/datasets/union14m_train.py',
'../_base_/datasets/union14m_benchmark.py',
'../_base_/datasets/cute80.py',
'../_base_/datasets/iiit5k.py',
'../_base_/datasets/svt.py',
'../_base_/datasets/svtp.py',
'../_base_/datasets/icdar2013.py',
'../_base_/datasets/icdar2015.py',
'../_base_/default_runtime.py',
'../_base_/schedules/schedule_adamw_cos_10e.py',
'_base_abinet.py',
]
load_from = 'https://download.openmmlab.com/mmocr/textrecog/abinet/abinet_pretrain-45deac15.pth' # noqa
_base_.pop('model')
dictionary = dict(
type='Dictionary',
dict_file= # noqa
'{{ fileDirname }}/../../../dicts/english_digits_symbols_space.txt',
with_padding=True,
with_unknown=True,
same_start_end=True,
with_start=True,
with_end=True)
model = dict(
type='ABINet',
backbone=dict(type='ResNetABI'),
encoder=dict(
type='ABIEncoder',
n_layers=3,
n_head=8,
d_model=512,
d_inner=2048,
dropout=0.1,
max_len=8 * 32,
),
decoder=dict(
type='ABIFuser',
vision_decoder=dict(
type='ABIVisionDecoder',
in_channels=512,
num_channels=64,
attn_height=8,
attn_width=32,
attn_mode='nearest',
init_cfg=dict(type='Xavier', layer='Conv2d')),
module_loss=dict(type='ABIModuleLoss'),
postprocessor=dict(type='AttentionPostprocessor'),
dictionary=dictionary,
max_seq_len=26,
),
data_preprocessor=dict(
type='TextRecogDataPreprocessor',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375]))
# dataset settings
train_list = [
_base_.union14m_challenging, _base_.union14m_hard, _base_.union14m_medium,
_base_.union14m_normal, _base_.union14m_easy
]
val_list = [
_base_.cute80_textrecog_test, _base_.iiit5k_textrecog_test,
_base_.svt_textrecog_test, _base_.svtp_textrecog_test,
_base_.icdar2013_textrecog_test, _base_.icdar2015_textrecog_test
]
test_list = [
_base_.union14m_benchmark_artistic,
_base_.union14m_benchmark_multi_oriented,
_base_.union14m_benchmark_contextless,
_base_.union14m_benchmark_curve,
_base_.union14m_benchmark_incomplete,
_base_.union14m_benchmark_incomplete_ori,
_base_.union14m_benchmark_multi_words,
_base_.union14m_benchmark_salient,
_base_.union14m_benchmark_general,
]
train_dataset = dict(
type='ConcatDataset', datasets=train_list, pipeline=_base_.train_pipeline)
test_dataset = dict(
type='ConcatDataset', datasets=test_list, pipeline=_base_.test_pipeline)
val_dataset = dict(
type='ConcatDataset', datasets=val_list, pipeline=_base_.test_pipeline)
train_dataloader = dict(
batch_size=128,
num_workers=24,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=train_dataset)
test_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=test_dataset)
val_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
pin_memory=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=val_dataset)
val_evaluator = dict(
dataset_prefixes=['CUTE80', 'IIIT5K', 'SVT', 'SVTP', 'IC13', 'IC15'])
test_evaluator = dict(dataset_prefixes=[
'artistic', 'multi-oriented', 'contextless', 'curve', 'incomplete',
'incomplete-ori', 'multi-words', 'salient', 'general'
])

View File

@ -40,6 +40,22 @@ A challenging aspect of scene text recognition is to handle text with distortion
| [ASTER](/configs/textrecog/aster/aster_resnet45_6e_st_mj.py) | ResNet45 | 0.9357 | 0.8949 | 0.9281 | | 0.7665 | 0.8062 | 0.8507 | [model](https://download.openmmlab.com/mmocr/textrecog/aster/aster_resnet45_6e_st_mj/aster_resnet45_6e_st_mj-cc56eca4.pth) \| [log](https://download.openmmlab.com/mmocr/textrecog/aster/aster_resnet45_6e_st_mj/20221214_232605.log) |
| [ASTER-TTA](/configs/textrecog/aster/aster_resnet45_6e_st_mj.py) | ResNet45 | 0.9337 | 0.8949 | 0.9251 | | 0.7925 | 0.8109 | 0.8507 | |
We also provide ASTER trained on [Union14M](https://github.com/Mountchicken/Union14M)
- Evaluated on six common benchmarks
| Methods | pretrained | | Regular Text | | | | Irregular Text | | download |
| :------------------------------------------------------------: | :--------: | :----: | :----------: | :-------: | :-: | :-------: | :------------: | :----: | :-------------------------------------------------------------------- |
| | | IIIT5K | SVT | IC13-1015 | | IC15-2077 | SVTP | CT80 | |
| [ASTER](configs/textrecog/aster/aster_resnet45_6e_union14m.py) | - | 0.9437 | 0.8903 | 0.9360 | | 0.7857 | 0.8093 | 0.9097 | [model](https://download.openmmlab.com/mmocr/textrecog/aster/aster_union14m/aster_union14m-230eb471.pth) |
- Evaluated on [Union14M-Benchmark](https://github.com/Mountchicken/Union14M)
| Methods | | Unsolved Challenges | | | | | Additional Challenges | | General | download |
| ------------------------------------------------------ | ----- | ------------------- | -------- | ----------- | --- | ------- | --------------------- | ---------- | ------- | ------------------------------------------------------- |
| | Curve | Multi-Oriented | Artistic | Contextless | | Salient | Multi-Words | Incomplete | General | |
| [ASTER](configs/textrecog/aster/aster_resnet45_6e_union14m.py) | 0.384 | 0.130 | 0.418 | 0.529 | | 0.319 | 0.498 | 0.013 | 0.667 | [model](https://download.openmmlab.com/mmocr/textrecog/aster/aster_union14m/aster_union14m-230eb471.pth) |
## Citation
```bibtex

View File

@ -0,0 +1,91 @@
# training schedule for 1x
_base_ = [
'_base_aster.py',
'../_base_/datasets/union14m_train.py',
'../_base_/datasets/union14m_benchmark.py',
'../_base_/datasets/cute80.py',
'../_base_/datasets/iiit5k.py',
'../_base_/datasets/svt.py',
'../_base_/datasets/svtp.py',
'../_base_/datasets/icdar2013.py',
'../_base_/datasets/icdar2015.py',
'../_base_/default_runtime.py',
'../_base_/schedules/schedule_adamw_cos_6e.py',
]
dictionary = dict(
type='Dictionary',
dict_file= # noqa
'{{ fileDirname }}/../../../dicts/english_digits_symbols_space.txt',
with_padding=True,
with_unknown=True,
same_start_end=True,
with_start=True,
with_end=True)
# dataset settings
train_list = [
_base_.union14m_challenging, _base_.union14m_hard, _base_.union14m_medium,
_base_.union14m_normal, _base_.union14m_easy
]
val_list = [
_base_.cute80_textrecog_test, _base_.iiit5k_textrecog_test,
_base_.svt_textrecog_test, _base_.svtp_textrecog_test,
_base_.icdar2013_textrecog_test, _base_.icdar2015_textrecog_test
]
test_list = [
_base_.union14m_benchmark_artistic,
_base_.union14m_benchmark_multi_oriented,
_base_.union14m_benchmark_contextless,
_base_.union14m_benchmark_curve,
_base_.union14m_benchmark_incomplete,
_base_.union14m_benchmark_incomplete_ori,
_base_.union14m_benchmark_multi_words,
_base_.union14m_benchmark_salient,
_base_.union14m_benchmark_general,
]
default_hooks = dict(logger=dict(type='LoggerHook', interval=50))
auto_scale_lr = dict(base_batch_size=512)
train_dataset = dict(
type='ConcatDataset', datasets=train_list, pipeline=_base_.train_pipeline)
test_dataset = dict(
type='ConcatDataset', datasets=test_list, pipeline=_base_.test_pipeline)
val_dataset = dict(
type='ConcatDataset', datasets=val_list, pipeline=_base_.test_pipeline)
train_dataloader = dict(
batch_size=512,
num_workers=12,
persistent_workers=True,
pin_memory=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=train_dataset)
test_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
pin_memory=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=test_dataset)
val_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
pin_memory=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=val_dataset)
val_evaluator = dict(
dataset_prefixes=['CUTE80', 'IIIT5K', 'SVT', 'SVTP', 'IC13', 'IC15'])
test_evaluator = dict(dataset_prefixes=[
'artistic', 'multi-oriented', 'contextless', 'curve', 'incomplete',
'incomplete-ori', 'multi-words', 'salient', 'general'
])

View File

@ -44,6 +44,22 @@ Scene text recognition has attracted a great many researches due to its importan
| [NRTR](/configs/textrecog/nrtr/nrtr_resnet31-1by16-1by8_6e_st_mj.py) | R31-1/16-1/8 | 0.9470 | 0.8918 | 0.9399 | | 0.7376 | 0.7969 | 0.8854 | [model](https://download.openmmlab.com/mmocr/textrecog/nrtr/nrtr_resnet31-1by16-1by8_6e_st_mj/nrtr_resnet31-1by16-1by8_6e_st_mj_20220920_143358-43767036.pth) \| [log](https://download.openmmlab.com/mmocr/textrecog/nrtr/nrtr_resnet31-1by16-1by8_6e_st_mj/20220920_143358.log) |
| [NRTR-TTA](/configs/textrecog/nrtr/nrtr_resnet31-1by16-1by8_6e_st_mj.py) | R31-1/16-1/8 | 0.9423 | 0.8903 | 0.9360 | | 0.7641 | 0.8016 | 0.8854 | |
We also provide NRTR trained on [Union14M](https://github.com/Mountchicken/Union14M)
- Evaluated on six common benchmarks
| Methods | Backbone | | Regular Text | | | | Irregular Text | | download |
| :--------------------------------------------------------------: | :---------: | :----: | :----------: | :-------: | :-: | :-------: | :------------: | :----: | :----------------------------------------------------------------- |
| | | IIIT5K | SVT | IC13-1015 | | IC15-2077 | SVTP | CT80 | |
| [NRTR](configs/textrecog/nrtr/nrtr_resnet31-1by8-1by4_union14m.py) | R31-1/8-1/4 | 0.9673 | 0.9320 | 0.9557 | | 0.8074 | 0.8357 | 0.9201 | [model](https://download.openmmlab.com/mmocr/textrecog/nrtr/nrtr_union14m/nrtr_union14m-606b6cba.pth) |
- Evaluated on [Union14M-Benchmark](https://github.com/Mountchicken/Union14M)
| Methods | Backbone | | Unsolved Challenges | | | | | Additional Challenges | | General | download |
| ------------------------------------------------ | :---------: | ----- | ------------------- | -------- | ----------- | --- | ------- | --------------------- | ---------- | ------- | -------------------------------------------------- |
| | | Curve | Multi-Oriented | Artistic | Contextless | | Salient | Multi-Words | Incomplete | General | |
| [NRTR](configs/textrecog/aster/aster_resnet45_6e_union14m.py) | R31-1/8-1/4 | 0.493 | 0.406 | 0.543 | 0.696 | | 0.429 | 0.755 | 0.015 | 0.752 | [model](https://download.openmmlab.com/mmocr/textrecog/nrtr/nrtr_union14m/nrtr_union14m-606b6cba.pth) |
## Citation
```bibtex

View File

@ -0,0 +1,114 @@
_base_ = [
'../_base_/datasets/union14m_train.py',
'../_base_/datasets/union14m_benchmark.py',
'../_base_/datasets/cute80.py',
'../_base_/datasets/iiit5k.py',
'../_base_/datasets/svt.py',
'../_base_/datasets/svtp.py',
'../_base_/datasets/icdar2013.py',
'../_base_/datasets/icdar2015.py',
'../_base_/default_runtime.py',
'../_base_/schedules/schedule_adam_base.py',
'_base_nrtr_resnet31.py',
]
# optimizer settings
train_cfg = dict(max_epochs=6)
# learning policy
param_scheduler = [
dict(type='MultiStepLR', milestones=[3, 4], end=6),
]
_base_.pop('model')
dictionary = dict(
type='Dictionary',
dict_file= # noqa
'{{ fileDirname }}/../../../dicts/english_digits_symbols_space.txt',
with_padding=True,
with_unknown=True,
same_start_end=True,
with_start=True,
with_end=True)
model = dict(
type='NRTR',
backbone=dict(
type='ResNet31OCR',
layers=[1, 2, 5, 3],
channels=[32, 64, 128, 256, 512, 512],
stage4_pool_cfg=dict(kernel_size=(2, 1), stride=(2, 1)),
last_stage_pool=False),
encoder=dict(type='NRTREncoder'),
decoder=dict(
type='NRTRDecoder',
module_loss=dict(
type='CEModuleLoss', ignore_first_char=True, flatten=True),
postprocessor=dict(type='AttentionPostprocessor'),
dictionary=dictionary,
max_seq_len=30,
),
data_preprocessor=dict(
type='TextRecogDataPreprocessor',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375]))
# dataset settings
train_list = [
_base_.union14m_challenging, _base_.union14m_hard, _base_.union14m_medium,
_base_.union14m_normal, _base_.union14m_easy
]
val_list = [
_base_.cute80_textrecog_test, _base_.iiit5k_textrecog_test,
_base_.svt_textrecog_test, _base_.svtp_textrecog_test,
_base_.icdar2013_textrecog_test, _base_.icdar2015_textrecog_test
]
test_list = [
_base_.union14m_benchmark_artistic,
_base_.union14m_benchmark_multi_oriented,
_base_.union14m_benchmark_contextless,
_base_.union14m_benchmark_curve,
_base_.union14m_benchmark_incomplete,
_base_.union14m_benchmark_incomplete_ori,
_base_.union14m_benchmark_multi_words,
_base_.union14m_benchmark_salient,
_base_.union14m_benchmark_general,
]
train_dataset = dict(
type='ConcatDataset', datasets=train_list, pipeline=_base_.train_pipeline)
test_dataset = dict(
type='ConcatDataset', datasets=test_list, pipeline=_base_.test_pipeline)
val_dataset = dict(
type='ConcatDataset', datasets=val_list, pipeline=_base_.test_pipeline)
train_dataloader = dict(
batch_size=128,
num_workers=24,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=train_dataset)
test_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=test_dataset)
val_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
pin_memory=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=val_dataset)
val_evaluator = dict(
dataset_prefixes=['CUTE80', 'IIIT5K', 'SVT', 'SVTP', 'IC13', 'IC15'])
test_evaluator = dict(dataset_prefixes=[
'artistic', 'multi-oriented', 'contextless', 'curve', 'incomplete',
'incomplete-ori', 'multi-words', 'salient', 'general'
])

View File

@ -48,6 +48,22 @@ Recognizing irregular text in natural scene images is challenging due to the lar
| [SAR](/configs/textrecog/sar/sar_r31_sequential_decoder_academic.py) | R31-1/8-1/4 | SequentialSARDecoder | 0.9553 | 0.9073 | 0.9409 | | 0.7761 | 0.8093 | 0.8958 | [model](https://download.openmmlab.com/mmocr/textrecog/sar/sar_resnet31_sequential-decoder_5e_st-sub_mj-sub_sa_real/sar_resnet31_sequential-decoder_5e_st-sub_mj-sub_sa_real_20220915_185451-1fd6b1fc.pth) \| [log](https://download.openmmlab.com/mmocr/textrecog/sar/sar_resnet31_sequential-decoder_5e_st-sub_mj-sub_sa_real/20220915_185451.log) |
| [SAR-TTA](/configs/textrecog/sar/sar_r31_sequential_decoder_academic.py) | R31-1/8-1/4 | SequentialSARDecoder | 0.9530 | 0.9073 | 0.9389 | | 0.8002 | 0.8124 | 0.9028 | |
We also provide ASTER trained on [Union14M](https://github.com/Mountchicken/Union14M)
- Evaluated on six common benchmarks
| Methods | Backbone | Decoder | | Regular Text | | | | Irregular Text | | download |
| :----------------------------------------------------: | :---------: | :------------------: | :----: | :----------: | :-------: | :-: | :-------: | :------------: | :----: | :------------------------------------------------------- |
| | | | IIIT5K | SVT | IC13-1015 | | IC15-2077 | SVTP | CT80 | |
| [SAR](configs/textrecog/sar/sar_resnet31_sequential-decoder_5e_union14m.py) | R31-1/8-1/4 | SequentialSARDecoder | 0.9707 | 0.9366 | 0.9576 | | 0.8219 | 0.8698 | 0.9201 | [model](https://download.openmmlab.com/mmocr/textrecog/sar/sar_union14m/sar_union14m-a7ad75a6.pth) |
- Evaluated on [Union14M-Benchmark](https://github.com/Mountchicken/Union14M)
| Methods | Backbone | Decoder | | | Unsolved Challenges | | | | Additional Challenges | | General | download |
| ----------------------------------- | ----------- | -------------------- | ----- | -------------- | ------------------- | ----------- | --- | ------- | --------------------- | ---------- | ------- | ------------------------------------- |
| | | | Curve | Multi-Oriented | Artistic | Contextless | | Salient | Multi-Words | Incomplete | General | |
| [SAR](configs/textrecog/sar/sar_resnet31_sequential-decoder_5e_union14m.py) | R31-1/8-1/4 | SequentialSARDecoder | 0.689 | 0.569 | 0.606 | 0.733 | | 0.601 | 0.746 | 0.021 | 0.760 | [model](https://download.openmmlab.com/mmocr/textrecog/sar/sar_union14m/sar_union14m-a7ad75a6.pth) |
## Citation
```bibtex

View File

@ -0,0 +1,111 @@
_base_ = [
'../_base_/datasets/union14m_train.py',
'../_base_/datasets/union14m_benchmark.py',
'../_base_/datasets/cute80.py',
'../_base_/datasets/iiit5k.py',
'../_base_/datasets/svt.py',
'../_base_/datasets/svtp.py',
'../_base_/datasets/icdar2013.py',
'../_base_/datasets/icdar2015.py',
'../_base_/default_runtime.py',
'../_base_/schedules/schedule_adam_step_5e.py',
'_base_sar_resnet31_parallel-decoder.py',
]
_base_.pop('model')
dictionary = dict(
type='Dictionary',
dict_file= # noqa
'{{ fileDirname }}/../../../dicts/english_digits_symbols_space.txt',
with_padding=True,
with_unknown=True,
same_start_end=True,
with_start=True,
with_end=True)
model = dict(
type='SARNet',
data_preprocessor=dict(
type='TextRecogDataPreprocessor',
mean=[127, 127, 127],
std=[127, 127, 127]),
backbone=dict(type='ResNet31OCR'),
encoder=dict(
type='SAREncoder',
enc_bi_rnn=False,
enc_do_rnn=0.1,
enc_gru=False,
),
decoder=dict(
type='SequentialSARDecoder',
enc_bi_rnn=False,
dec_bi_rnn=False,
dec_do_rnn=0,
dec_gru=False,
pred_dropout=0.1,
d_k=512,
pred_concat=True,
postprocessor=dict(type='AttentionPostprocessor'),
module_loss=dict(
type='CEModuleLoss', ignore_first_char=True, reduction='mean'),
dictionary=dictionary,
max_seq_len=30))
# dataset settings
train_list = [
_base_.union14m_challenging, _base_.union14m_hard, _base_.union14m_medium,
_base_.union14m_normal, _base_.union14m_easy
]
val_list = [
_base_.cute80_textrecog_test, _base_.iiit5k_textrecog_test,
_base_.svt_textrecog_test, _base_.svtp_textrecog_test,
_base_.icdar2013_textrecog_test, _base_.icdar2015_textrecog_test
]
test_list = [
_base_.union14m_benchmark_artistic,
_base_.union14m_benchmark_multi_oriented,
_base_.union14m_benchmark_contextless,
_base_.union14m_benchmark_curve,
_base_.union14m_benchmark_incomplete,
_base_.union14m_benchmark_incomplete_ori,
_base_.union14m_benchmark_multi_words,
_base_.union14m_benchmark_salient,
_base_.union14m_benchmark_general,
]
train_dataset = dict(
type='ConcatDataset', datasets=train_list, pipeline=_base_.train_pipeline)
test_dataset = dict(
type='ConcatDataset', datasets=test_list, pipeline=_base_.test_pipeline)
val_dataset = dict(
type='ConcatDataset', datasets=val_list, pipeline=_base_.test_pipeline)
train_dataloader = dict(
batch_size=128,
num_workers=24,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=train_dataset)
test_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=test_dataset)
val_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
pin_memory=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=val_dataset)
val_evaluator = dict(
dataset_prefixes=['CUTE80', 'IIIT5K', 'SVT', 'SVTP', 'IC13', 'IC15'])
test_evaluator = dict(dataset_prefixes=[
'artistic', 'multi-oriented', 'contextless', 'curve', 'incomplete',
'incomplete-ori', 'multi-words', 'salient', 'general'
])

View File

@ -42,6 +42,22 @@ Scene text recognition (STR) is the task of recognizing character sequences in n
| [Satrn_small](/configs/textrecog/satrn/satrn_shallow-small_5e_st_mj.py) | 0.9423 | 0.9011 | 0.9567 | | 0.7886 | 0.8574 | 0.8472 | [model](https://download.openmmlab.com/mmocr/textrecog/satrn/satrn_shallow-small_5e_st_mj/satrn_shallow-small_5e_st_mj_20220915_152442-5591bf27.pth) \| [log](https://download.openmmlab.com/mmocr/textrecog/satrn/satrn_shallow-small_5e_st_mj/20220915_152442.log) |
| [Satrn_small-TTA](/configs/textrecog/satrn/satrn_shallow-small_5e_st_mj.py) | 0.9380 | 0.8995 | 0.9488 | | 0.8122 | 0.8620 | 0.8507 | |
We also provide SATRN trained on [Union14M](https://github.com/Mountchicken/Union14M)
- Evaluated on six common benchmarks
| Methods | | Regular Text | | | | Irregular Text | | download |
| :-----------------------------------------------------------: | :----: | :----------: | :-------: | :-: | :-------: | :------------: | :----: | :------------------------------------------------------------------------------- |
| | IIIT5K | SVT | IC13-1015 | | IC15-2077 | SVTP | CT80 | |
| [SATRN](configs/textrecog/satrn/satrn_shallow_5e_union14m.py) | 0.9727 | 0.9536 | 0.9685 | | 0.8714 | 0.9039 | 0.9618 | [model](https://download.openmmlab.com/mmocr/textrecog/satrn/satrn_union14m/satrn_union14m-6ac4114e.pth) |
- Evaluated on [Union14M-Benchmark](https://github.com/Mountchicken/Union14M)
| Methods | | Unsolved Challenges | | | | | Additional Challenges | | General | download |
| ------------------------------------------------------ | ----- | ------------------- | -------- | ----------- | --- | ------- | --------------------- | ---------- | ------- | ------------------------------------------------------- |
| | Curve | Multi-Oriented | Artistic | Contextless | | Salient | Multi-Words | Incomplete | General | |
| [SATRN](configs/textrecog/satrn/satrn_shallow_5e_union14m.py) | 0.748 | 0.647 | 0.671 | 0.761 | | 0.722 | 0.741 | 0.009 | 0.758 | [model](https://download.openmmlab.com/mmocr/textrecog/satrn/satrn_union14m/satrn_union14m-6ac4114e.pth) |
## Citation
```bibtex

View File

@ -0,0 +1,87 @@
_base_ = [
'../_base_/datasets/union14m_train.py',
'../_base_/datasets/union14m_benchmark.py',
'../_base_/datasets/cute80.py',
'../_base_/datasets/iiit5k.py',
'../_base_/datasets/svt.py',
'../_base_/datasets/svtp.py',
'../_base_/datasets/icdar2013.py',
'../_base_/datasets/icdar2015.py',
'../_base_/default_runtime.py',
'../_base_/schedules/schedule_adam_step_5e.py',
'_base_satrn_shallow.py',
]
dictionary = dict(
type='Dictionary',
dict_file= # noqa
'{{ fileDirname }}/../../../dicts/english_digits_symbols_space.txt',
with_padding=True,
with_unknown=True,
same_start_end=True,
with_start=True,
with_end=True)
# dataset settings
train_list = [
_base_.union14m_challenging, _base_.union14m_hard, _base_.union14m_medium,
_base_.union14m_normal, _base_.union14m_easy
]
val_list = [
_base_.cute80_textrecog_test, _base_.iiit5k_textrecog_test,
_base_.svt_textrecog_test, _base_.svtp_textrecog_test,
_base_.icdar2013_textrecog_test, _base_.icdar2015_textrecog_test
]
test_list = [
_base_.union14m_benchmark_artistic,
_base_.union14m_benchmark_multi_oriented,
_base_.union14m_benchmark_contextless,
_base_.union14m_benchmark_curve,
_base_.union14m_benchmark_incomplete,
_base_.union14m_benchmark_incomplete_ori,
_base_.union14m_benchmark_multi_words,
_base_.union14m_benchmark_salient,
_base_.union14m_benchmark_general,
]
train_dataset = dict(
type='ConcatDataset', datasets=train_list, pipeline=_base_.train_pipeline)
test_dataset = dict(
type='ConcatDataset', datasets=test_list, pipeline=_base_.test_pipeline)
val_dataset = dict(
type='ConcatDataset', datasets=val_list, pipeline=_base_.test_pipeline)
# optimizer
optim_wrapper = dict(type='OptimWrapper', optimizer=dict(type='Adam', lr=3e-4))
train_dataloader = dict(
batch_size=64,
num_workers=24,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=train_dataset)
test_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=test_dataset)
val_dataloader = dict(
batch_size=128,
num_workers=4,
persistent_workers=True,
pin_memory=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False),
dataset=val_dataset)
val_evaluator = dict(
dataset_prefixes=['CUTE80', 'IIIT5K', 'SVT', 'SVTP', 'IC13', 'IC15'])
test_evaluator = dict(dataset_prefixes=[
'artistic', 'multi-oriented', 'contextless', 'curve', 'incomplete',
'incomplete-ori', 'multi-words', 'salient', 'general'
])