|
_base_ = [ |
|
'../../_base_/default_runtime.py', |
|
'../../_base_/schedules/schedule_adam_step_20e.py', |
|
'../../_base_/recog_pipelines/abinet_pipeline.py', |
|
'../../_base_/recog_datasets/toy_data.py' |
|
|
|
|
|
] |
|
|
|
train_list = {{_base_.train_list}} |
|
test_list = {{_base_.test_list}} |
|
|
|
train_pipeline = {{_base_.train_pipeline}} |
|
test_pipeline = {{_base_.test_pipeline}} |
|
|
|
|
|
num_chars = 37 |
|
max_seq_len = 26 |
|
label_convertor = dict( |
|
type='ABIConvertor', |
|
dict_type='DICT36', |
|
with_unknown=False, |
|
with_padding=False, |
|
lower=True, |
|
) |
|
|
|
model = dict( |
|
type='ABINet', |
|
backbone=dict(type='ResNetABI'), |
|
encoder=dict( |
|
type='ABIVisionModel', |
|
encoder=dict( |
|
type='TransformerEncoder', |
|
n_layers=3, |
|
n_head=8, |
|
d_model=512, |
|
d_inner=2048, |
|
dropout=0.1, |
|
max_len=8 * 32, |
|
), |
|
decoder=dict( |
|
type='ABIVisionDecoder', |
|
in_channels=512, |
|
num_channels=64, |
|
attn_height=8, |
|
attn_width=32, |
|
attn_mode='nearest', |
|
use_result='feature', |
|
num_chars=num_chars, |
|
max_seq_len=max_seq_len, |
|
init_cfg=dict(type='Xavier', layer='Conv2d')), |
|
), |
|
loss=dict( |
|
type='ABILoss', |
|
enc_weight=1.0, |
|
dec_weight=1.0, |
|
fusion_weight=1.0, |
|
num_classes=num_chars), |
|
label_convertor=label_convertor, |
|
max_seq_len=max_seq_len, |
|
iter_size=1) |
|
|
|
data = dict( |
|
samples_per_gpu=192, |
|
workers_per_gpu=8, |
|
val_dataloader=dict(samples_per_gpu=1), |
|
test_dataloader=dict(samples_per_gpu=1), |
|
train=dict( |
|
type='UniformConcatDataset', |
|
datasets=train_list, |
|
pipeline=train_pipeline), |
|
val=dict( |
|
type='UniformConcatDataset', |
|
datasets=test_list, |
|
pipeline=test_pipeline), |
|
test=dict( |
|
type='UniformConcatDataset', |
|
datasets=test_list, |
|
pipeline=test_pipeline)) |
|
|
|
evaluation = dict(interval=1, metric='acc') |
|
|