Image-to-Text
HTRflow
Swedish
File size: 13,799 Bytes
0e7e4f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dd23264
0e7e4f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
default_scope = 'mmocr'
env_cfg = dict(
    cudnn_benchmark=True,
    mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),
    dist_cfg=dict(backend='nccl'))
randomness = dict(seed=None)
default_hooks = dict(
    timer=dict(type='IterTimerHook'),
    logger=dict(type='LoggerHook', interval=100),
    param_scheduler=dict(type='ParamSchedulerHook'),
    checkpoint=dict(type='CheckpointHook', interval=1),
    sampler_seed=dict(type='DistSamplerSeedHook'),
    sync_buffer=dict(type='SyncBuffersHook'),
    visualization=dict(
        type='VisualizationHook',
        interval=1,
        enable=False,
        show=False,
        draw_gt=False,
        draw_pred=False))
log_level = 'INFO'
log_processor = dict(type='LogProcessor', window_size=10, by_epoch=True)
load_from = './model.pth'
resume = False
val_evaluator = dict(
    type='Evaluator',
    metrics=[
        dict(
            type='WordMetric',
            mode=['exact', 'ignore_case', 'ignore_case_symbol'],
            valid_symbol='[^A-Z^a-z^0-9^一-龥^å^ä^ö^Å^Ä^Ö]'),
        dict(type='CharMetric', valid_symbol='[^A-Z^a-z^0-9^一-龥^å^ä^ö^Å^Ä^Ö]'),
        dict(
            type='OneMinusNEDMetric',
            valid_symbol='[^A-Z^a-z^0-9^一-龥^å^ä^ö^Å^Ä^Ö]')
    ])
test_evaluator = dict(
    type='Evaluator',
    metrics=[
        dict(
            type='WordMetric',
            mode=['exact', 'ignore_case', 'ignore_case_symbol'],
            valid_symbol='[^A-Z^a-z^0-9^一-龥^å^ä^ö^Å^Ä^Ö]'),
        dict(type='CharMetric', valid_symbol='[^A-Z^a-z^0-9^一-龥^å^ä^ö^Å^Ä^Ö]'),
        dict(
            type='OneMinusNEDMetric',
            valid_symbol='[^A-Z^a-z^0-9^一-龥^å^ä^ö^Å^Ä^Ö]')
    ])
vis_backends = [dict(type='LocalVisBackend')]
visualizer = dict(
    type='TextRecogLocalVisualizer',
    name='visualizer',
    vis_backends=[dict(type='TensorboardVisBackend')])
optim_wrapper = dict(
    type='OptimWrapper', optimizer=dict(type='Adam', lr=0.0003))
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=5, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')
param_scheduler = [dict(type='MultiStepLR', milestones=[3, 4], end=5)]
file_client_args = dict(backend='disk')
dictionary = dict(
    type='Dictionary',
    dict_file=
    './models--Riksarkivet--HTR_pipeline_models/snapshots/296681baf68583f07e89b5fed08136b77e3904cd/SATRN/dict1700.txt',
    with_padding=True,
    with_unknown=True,
    same_start_end=True,
    with_start=True,
    with_end=True)
model = dict(
    type='SATRN',
    backbone=dict(type='ShallowCNN', input_channels=3, hidden_dim=512),
    encoder=dict(
        type='SATRNEncoder',
        n_layers=12,
        n_head=8,
        d_k=64,
        d_v=64,
        d_model=512,
        n_position=100,
        d_inner=2048,
        dropout=0.1),
    decoder=dict(
        type='NRTRDecoder',
        n_layers=6,
        d_embedding=512,
        n_head=8,
        d_model=512,
        d_inner=2048,
        d_k=64,
        d_v=64,
        module_loss=dict(
            type='CEModuleLoss', flatten=True, ignore_first_char=True),
        dictionary=dict(
            type='Dictionary',
            dict_file=
            './models--Riksarkivet--HTR_pipeline_models/snapshots/296681baf68583f07e89b5fed08136b77e3904cd/SATRN/dict1700.txt',
            with_padding=True,
            with_unknown=True,
            same_start_end=True,
            with_start=True,
            with_end=True),
        max_seq_len=100,
        postprocessor=dict(type='AttentionPostprocessor')),
    data_preprocessor=dict(
        type='TextRecogDataPreprocessor',
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375]))
train_pipeline = [
    dict(
        type='LoadImageFromFile',
        file_client_args=dict(backend='disk'),
        ignore_empty=True,
        min_size=2),
    dict(type='LoadOCRAnnotations', with_text=True),
    dict(type='Resize', scale=(400, 64), keep_ratio=False),
    dict(
        type='PackTextRecogInputs',
        meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio'))
]
test_pipeline = [
    dict(type='LoadImageFromFile', file_client_args=dict(backend='disk')),
    dict(type='Resize', scale=(400, 64), keep_ratio=False),
    dict(type='LoadOCRAnnotations', with_text=True),
    dict(
        type='PackTextRecogInputs',
        meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio'))
]
HTR_1700_combined_train = dict(
    type='RecogTextDataset',
    parser_cfg=dict(type='LineJsonParser', keys=['filename', 'text']),
    data_root='/ceph/hpc/scratch/user/euerikl/data/HTR_1700_clean',
    ann_file=
    '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_HTR_shuffled_train.jsonl',
    test_mode=False,
    pipeline=None)
HTR_1700_combined_test = dict(
    type='RecogTextDataset',
    parser_cfg=dict(type='LineJsonParser', keys=['filename', 'text']),
    data_root='/ceph/hpc/scratch/user/euerikl/data/HTR_1700_clean',
    ann_file=
    '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_HTR_shuffled_val.jsonl',
    test_mode=True,
    pipeline=None)
pr_cr_combined_train = dict(
    type='RecogTextDataset',
    parser_cfg=dict(
        type='LineStrParser', keys=['filename', 'text'], separator='|'),
    data_root='/ceph/hpc/scratch/user/euerikl/data/line_images',
    ann_file=
    '/ceph/hpc/home/euerikl/projects/htr_1800/gt_files/combined_train.txt',
    test_mode=False,
    pipeline=None)
pr_cr_combined_test = dict(
    type='RecogTextDataset',
    parser_cfg=dict(
        type='LineStrParser', keys=['filename', 'text'], separator='|'),
    data_root='/ceph/hpc/scratch/user/euerikl/data/line_images',
    ann_file=
    '/ceph/hpc/home/euerikl/projects/htr_1800/gt_files/combined_eval.txt',
    test_mode=True,
    pipeline=None)
out_of_domain_1700_all_test = dict(
    type='RecogTextDataset',
    parser_cfg=dict(type='LineJsonParser', keys=['filename', 'text']),
    data_root='/ceph/hpc/scratch/user/euerikl/data/HTR_1700_testsets_clean',
    ann_file=
    '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_testsets_gt/1700_HTR_testsets_all.jsonl',
    test_mode=True,
    pipeline=None)
train_list = [
    dict(
        type='RecogTextDataset',
        parser_cfg=dict(type='LineJsonParser', keys=['filename', 'text']),
        data_root='/ceph/hpc/scratch/user/euerikl/data/HTR_1700_clean',
        ann_file=
        '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_HTR_shuffled_train.jsonl',
        test_mode=False,
        pipeline=None),
    dict(
        type='RecogTextDataset',
        parser_cfg=dict(
            type='LineStrParser', keys=['filename', 'text'], separator='|'),
        data_root='/ceph/hpc/scratch/user/euerikl/data/line_images',
        ann_file=
        '/ceph/hpc/home/euerikl/projects/htr_1800/gt_files/combined_train.txt',
        test_mode=False,
        pipeline=None)
]
test_list = [
    dict(
        type='RecogTextDataset',
        parser_cfg=dict(type='LineJsonParser', keys=['filename', 'text']),
        data_root='/ceph/hpc/scratch/user/euerikl/data/HTR_1700_testsets_clean',
        ann_file=
        '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_testsets_gt/1700_HTR_testsets_all.jsonl',
        test_mode=True,
        pipeline=None)
]
train_dataset = dict(
    type='ConcatDataset',
    datasets=[
        dict(
            type='RecogTextDataset',
            parser_cfg=dict(type='LineJsonParser', keys=['filename', 'text']),
            data_root='/ceph/hpc/scratch/user/euerikl/data/HTR_1700_clean',
            ann_file=
            '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_HTR_shuffled_train.jsonl',
            test_mode=False,
            pipeline=None),
        dict(
            type='RecogTextDataset',
            parser_cfg=dict(
                type='LineStrParser', keys=['filename', 'text'],
                separator='|'),
            data_root='/ceph/hpc/scratch/user/euerikl/data/line_images',
            ann_file=
            '/ceph/hpc/home/euerikl/projects/htr_1800/gt_files/combined_train.txt',
            test_mode=False,
            pipeline=None)
    ],
    pipeline=[
        dict(
            type='LoadImageFromFile',
            file_client_args=dict(backend='disk'),
            ignore_empty=True,
            min_size=2),
        dict(type='LoadOCRAnnotations', with_text=True),
        dict(type='Resize', scale=(400, 64), keep_ratio=False),
        dict(
            type='PackTextRecogInputs',
            meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio'))
    ])
test_dataset = dict(
    type='ConcatDataset',
    datasets=[
        dict(
            type='RecogTextDataset',
            parser_cfg=dict(type='LineJsonParser', keys=['filename', 'text']),
            data_root=
            '/ceph/hpc/scratch/user/euerikl/data/HTR_1700_testsets_clean',
            ann_file=
            '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_testsets_gt/1700_HTR_testsets_all.jsonl',
            test_mode=True,
            pipeline=None)
    ],
    pipeline=[
        dict(type='LoadImageFromFile', file_client_args=dict(backend='disk')),
        dict(type='Resize', scale=(400, 64), keep_ratio=False),
        dict(type='LoadOCRAnnotations', with_text=True),
        dict(
            type='PackTextRecogInputs',
            meta_keys=('img_path', 'ori_shape', 'img_shape', 'valid_ratio'))
    ])
train_dataloader = dict(
    batch_size=8,
    num_workers=1,
    persistent_workers=True,
    sampler=dict(type='DefaultSampler', shuffle=True),
    dataset=dict(
        type='ConcatDataset',
        datasets=[
            dict(
                type='RecogTextDataset',
                parser_cfg=dict(
                    type='LineJsonParser', keys=['filename', 'text']),
                data_root='/ceph/hpc/scratch/user/euerikl/data/HTR_1700_clean',
                ann_file=
                '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_HTR_shuffled_train.jsonl',
                test_mode=False,
                pipeline=None),
            dict(
                type='RecogTextDataset',
                parser_cfg=dict(
                    type='LineStrParser',
                    keys=['filename', 'text'],
                    separator='|'),
                data_root='/ceph/hpc/scratch/user/euerikl/data/line_images',
                ann_file=
                '/ceph/hpc/home/euerikl/projects/htr_1800/gt_files/combined_train.txt',
                test_mode=False,
                pipeline=None)
        ],
        pipeline=[
            dict(
                type='LoadImageFromFile',
                file_client_args=dict(backend='disk'),
                ignore_empty=True,
                min_size=2),
            dict(type='LoadOCRAnnotations', with_text=True),
            dict(type='Resize', scale=(400, 64), keep_ratio=False),
            dict(
                type='PackTextRecogInputs',
                meta_keys=('img_path', 'ori_shape', 'img_shape',
                           'valid_ratio'))
        ]))
test_dataloader = dict(
    batch_size=8,
    num_workers=1,
    persistent_workers=True,
    drop_last=False,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=dict(
        type='ConcatDataset',
        datasets=[
            dict(
                type='RecogTextDataset',
                parser_cfg=dict(
                    type='LineJsonParser', keys=['filename', 'text']),
                data_root=
                '/ceph/hpc/scratch/user/euerikl/data/HTR_1700_testsets_clean',
                ann_file=
                '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_testsets_gt/1700_HTR_testsets_all.jsonl',
                test_mode=True,
                pipeline=None)
        ],
        pipeline=[
            dict(
                type='LoadImageFromFile',
                file_client_args=dict(backend='disk')),
            dict(type='Resize', scale=(400, 64), keep_ratio=False),
            dict(type='LoadOCRAnnotations', with_text=True),
            dict(
                type='PackTextRecogInputs',
                meta_keys=('img_path', 'ori_shape', 'img_shape',
                           'valid_ratio'))
        ]))
val_dataloader = dict(
    batch_size=8,
    num_workers=1,
    persistent_workers=True,
    drop_last=False,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=dict(
        type='ConcatDataset',
        datasets=[
            dict(
                type='RecogTextDataset',
                parser_cfg=dict(
                    type='LineJsonParser', keys=['filename', 'text']),
                data_root=
                '/ceph/hpc/scratch/user/euerikl/data/HTR_1700_testsets_clean',
                ann_file=
                '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/data/processed/1700_testsets_gt/1700_HTR_testsets_all.jsonl',
                test_mode=True,
                pipeline=None)
        ],
        pipeline=[
            dict(
                type='LoadImageFromFile',
                file_client_args=dict(backend='disk')),
            dict(type='Resize', scale=(400, 64), keep_ratio=False),
            dict(type='LoadOCRAnnotations', with_text=True),
            dict(
                type='PackTextRecogInputs',
                meta_keys=('img_path', 'ori_shape', 'img_shape',
                           'valid_ratio'))
        ]))
gpu_ids = range(0, 4)
cudnn_benchmark = True
work_dir = '/ceph/hpc/home/euerikl/projects/hf_openmmlab_models/models/checkpoints/1700_1800_combined_satrn'
checkpoint_config = dict(interval=1)
auto_scale_lr = dict(base_batch_size=32)
launcher = 'pytorch'