mmocr
mmocr copied to clipboard
Bad Performance of PAN in IC2015
this is bad perormance of pan in my training models the config is 2022-04-10 10:28:32,076 - mmocr - INFO - Distributed training: False 2022-04-10 10:28:32,284 - mmocr - INFO - Config: optimizer = dict(type='Adam', lr=0.001) optimizer_config = dict(grad_clip=None) lr_config = dict(policy='poly', power=0.9) total_epochs = 600 checkpoint_config = dict(interval=10) log_config = dict(interval=5, hooks=[dict(type='TextLoggerHook')]) dist_params = dict(backend='nccl') log_level = 'INFO' load_from = None resume_from = None workflow = [('train', 1)] opencv_num_threads = 0 mp_start_method = 'fork' model_poly = dict( type='PANet', backbone=dict( type='mmdet.ResNet', depth=18, num_stages=4, out_indices=(0, 1, 2, 3), frozen_stages=-1, norm_cfg=dict(type='SyncBN', requires_grad=True), init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet18'), norm_eval=True, style='caffe'), neck=dict(type='FPEM_FFM', in_channels=[64, 128, 256, 512]), bbox_head=dict( type='PANHead', in_channels=[128, 128, 128, 128], out_channels=6, loss=dict(type='PANLoss'), postprocessor=dict(type='PANPostprocessor', text_repr_type='poly')), train_cfg=None, test_cfg=None) model_quad = dict( type='PANet', backbone=dict( type='mmdet.ResNet', depth=18, num_stages=4, out_indices=(0, 1, 2, 3), frozen_stages=-1, norm_cfg=dict(type='SyncBN', requires_grad=True), init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet18'), norm_eval=True, style='caffe'), neck=dict(type='FPEM_FFM', in_channels=[64, 128, 256, 512]), bbox_head=dict( type='PANHead', in_channels=[128, 128, 128, 128], out_channels=6, loss=dict(type='PANLoss'), postprocessor=dict(type='PANPostprocessor', text_repr_type='quad')), train_cfg=None, test_cfg=None) dataset_type = 'IcdarDataset' data_root = 'data/icdar2015' train = dict( type='IcdarDataset', ann_file='data/icdar2015/instances_training.json', img_prefix='data/icdar2015/imgs', pipeline=None) test = dict( type='IcdarDataset', ann_file='data/icdar2015/instances_test.json', img_prefix='data/icdar2015/imgs', pipeline=None) train_list = [ dict( type='IcdarDataset', ann_file='data/icdar2015/instances_training.json', img_prefix='data/icdar2015/imgs', pipeline=None) ] test_list = [ dict( type='IcdarDataset', ann_file='data/icdar2015/instances_test.json', img_prefix='data/icdar2015/imgs', pipeline=None) ] img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) img_scale_train_ctw1500 = [(3000, 640)] shrink_ratio_train_ctw1500 = (1.0, 0.7) target_size_train_ctw1500 = (640, 640) train_pipeline_ctw1500 = [ dict(type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='LoadTextAnnotations', with_bbox=True, with_mask=True, poly2mask=False), dict(type='ColorJitter', brightness=0.12549019607843137, saturation=0.5), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict( type='ScaleAspectJitter', img_scale=[(3000, 640)], ratio_range=(0.7, 1.3), aspect_ratio_range=(0.9, 1.1), multiscale_mode='value', keep_ratio=False), dict(type='PANetTargets', shrink_ratio=(1.0, 0.7)), dict(type='RandomFlip', flip_ratio=0.5, direction='horizontal'), dict(type='RandomRotateTextDet'), dict( type='RandomCropInstances', target_size=(640, 640), instance_key='gt_kernels'), dict(type='Pad', size_divisor=32), dict( type='CustomFormatBundle', keys=['gt_kernels', 'gt_mask'], visualize=dict(flag=False, boundary_key='gt_kernels')), dict(type='Collect', keys=['img', 'gt_kernels', 'gt_mask']) ] img_scale_test_ctw1500 = (3000, 640) test_pipeline_ctw1500 = [ dict(type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='MultiScaleFlipAug', img_scale=(3000, 640), flip=False, transforms=[ dict(type='Resize', img_scale=(3000, 640), keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ] img_scale_train_icdar2015 = [(3000, 736)] shrink_ratio_train_icdar2015 = (1.0, 0.5) target_size_train_icdar2015 = (736, 736) train_pipeline_icdar2015 = [ dict(type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='LoadTextAnnotations', with_bbox=True, with_mask=True, poly2mask=False), dict(type='ColorJitter', brightness=0.12549019607843137, saturation=0.5), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict( type='ScaleAspectJitter', img_scale=[(3000, 736)], ratio_range=(0.7, 1.3), aspect_ratio_range=(0.9, 1.1), multiscale_mode='value', keep_ratio=False), dict(type='PANetTargets', shrink_ratio=(1.0, 0.5)), dict(type='RandomFlip', flip_ratio=0.5, direction='horizontal'), dict(type='RandomRotateTextDet'), dict( type='RandomCropInstances', target_size=(736, 736), instance_key='gt_kernels'), dict(type='Pad', size_divisor=32), dict( type='CustomFormatBundle', keys=['gt_kernels', 'gt_mask'], visualize=dict(flag=False, boundary_key='gt_kernels')), dict(type='Collect', keys=['img', 'gt_kernels', 'gt_mask']) ] img_scale_test_icdar2015 = (1333, 736) test_pipeline_icdar2015 = [ dict(type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='MultiScaleFlipAug', img_scale=(1333, 736), flip=False, transforms=[ dict(type='Resize', img_scale=(1333, 736), keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ] img_scale_train_icdar2017 = [(3000, 800)] shrink_ratio_train_icdar2017 = (1.0, 0.5) target_size_train_icdar2017 = (800, 800) train_pipeline_icdar2017 = [ dict(type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='LoadTextAnnotations', with_bbox=True, with_mask=True, poly2mask=False), dict(type='ColorJitter', brightness=0.12549019607843137, saturation=0.5), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict( type='ScaleAspectJitter', img_scale=[(3000, 800)], ratio_range=(0.7, 1.3), aspect_ratio_range=(0.9, 1.1), multiscale_mode='value', keep_ratio=False), dict(type='PANetTargets', shrink_ratio=(1.0, 0.5)), dict(type='RandomFlip', flip_ratio=0.5, direction='horizontal'), dict(type='RandomRotateTextDet'), dict( type='RandomCropInstances', target_size=(800, 800), instance_key='gt_kernels'), dict(type='Pad', size_divisor=32), dict( type='CustomFormatBundle', keys=['gt_kernels', 'gt_mask'], visualize=dict(flag=False, boundary_key='gt_kernels')), dict(type='Collect', keys=['img', 'gt_kernels', 'gt_mask']) ] img_scale_test_icdar2017 = (1333, 800) test_pipeline_icdar2017 = [ dict(type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='MultiScaleFlipAug', img_scale=(1333, 800), flip=False, transforms=[ dict(type='Resize', img_scale=(3000, 640), keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ] model = dict( type='PANet', backbone=dict( type='mmdet.ResNet', depth=18, num_stages=4, out_indices=(0, 1, 2, 3), frozen_stages=-1, norm_cfg=dict(type='SyncBN', requires_grad=True), init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet18'), norm_eval=True, style='caffe'), neck=dict(type='FPEM_FFM', in_channels=[64, 128, 256, 512]), bbox_head=dict( type='PANHead', in_channels=[128, 128, 128, 128], out_channels=6, loss=dict(type='PANLoss'), postprocessor=dict(type='PANPostprocessor', text_repr_type='quad')), train_cfg=None, test_cfg=None) data = dict( samples_per_gpu=16, workers_per_gpu=2, val_dataloader=dict(samples_per_gpu=1), test_dataloader=dict(samples_per_gpu=1), train=dict( type='UniformConcatDataset', datasets=[ dict( type='IcdarDataset', ann_file='data/icdar2015/instances_training.json', img_prefix='data/icdar2015/imgs', pipeline=None) ], pipeline=[ dict( type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='LoadTextAnnotations', with_bbox=True, with_mask=True, poly2mask=False), dict( type='ColorJitter', brightness=0.12549019607843137, saturation=0.5), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict( type='ScaleAspectJitter', img_scale=[(3000, 736)], ratio_range=(0.7, 1.3), aspect_ratio_range=(0.9, 1.1), multiscale_mode='value', keep_ratio=False), dict(type='PANetTargets', shrink_ratio=(1.0, 0.5)), dict(type='RandomFlip', flip_ratio=0.5, direction='horizontal'), dict(type='RandomRotateTextDet'), dict( type='RandomCropInstances', target_size=(736, 736), instance_key='gt_kernels'), dict(type='Pad', size_divisor=32), dict( type='CustomFormatBundle', keys=['gt_kernels', 'gt_mask'], visualize=dict(flag=False, boundary_key='gt_kernels')), dict(type='Collect', keys=['img', 'gt_kernels', 'gt_mask']) ]), val=dict( type='UniformConcatDataset', datasets=[ dict( type='IcdarDataset', ann_file='data/icdar2015/instances_test.json', img_prefix='data/icdar2015/imgs', pipeline=None) ], pipeline=[ dict( type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='MultiScaleFlipAug', img_scale=(1333, 736), flip=False, transforms=[ dict( type='Resize', img_scale=(1333, 736), keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ]), test=dict( type='UniformConcatDataset', datasets=[ dict( type='IcdarDataset', ann_file='data/icdar2015/instances_test.json', img_prefix='data/icdar2015/imgs', pipeline=None) ], pipeline=[ dict( type='LoadImageFromFile', color_type='color_ignore_orientation'), dict( type='MultiScaleFlipAug', img_scale=(1333, 736), flip=False, transforms=[ dict( type='Resize', img_scale=(1333, 736), keep_ratio=True), dict( type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']) ]) ])) evaluation = dict(interval=10, metric='hmean-iou') work_dir = './work_dirs/panet_r18_fpem_ffm_600e_icdar2015' gpu_ids = [1]
{"mode": "val", "epoch": 430, "iter": 500, "lr": 0.00032, "0_hmean-iou:recall": 0.71016, "0_hmean-iou:precision": 0.80557, "0_hmean-iou:hmean": 0.75486}
请问训练结果和您训练的差距很大是什么造成的
gpu_ids
in our reference log shows the training was conducted on 8 GPUs. You will need to scale the learning rate according to the actual batch size to obtain similar performance.
{"mode": "val", "epoch": 430, "iter": 500, "lr": 0.00032, "0_hmean-iou:recall": 0.71016, "0_hmean-iou:precision": 0.80557, "0_hmean-iou:hmean": 0.75486}
Hello, I have a similar problem with you, my performance on ic15 is also very low, please have you solved this problem now? I also tried to reduce the learning rate to 0.0002 with batch 8, but the performance still did not work, I didn't obtain similar performance.