记低级错误-mmdet-centernet

mmdet训练、测试centernet,经常使用框架,却对里面的参数细节研究不深入,发生严重低级错误。

训练和测试pipline代码

train_pipeline = [
    dict(type='LoadImageFromFile', to_float32=True, color_type='color'),
    dict(type='LoadAnnotations', with_bbox=True),
    dict(
        type='RandomCenterCropPad',
        crop_size=(512, 512),
        ratios=(0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3),
        mean=[0, 0, 0],
        std=[1, 1, 1],
        to_rgb=True,
        test_pad_mode=None),
    dict(type='Resize', img_scale=(512, 512), keep_ratio=True),
    dict(type='RandomFlip', flip_ratio=0.5),
    dict(type='Normalize', **img_norm_cfg),
    #dict(type='Pad', size_divisor=32),
    dict(type='DefaultFormatBundle'),
    dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
]
test_pipeline = [
    dict(type='LoadImageFromFile', to_float32=True),
    dict(
        type='MultiScaleFlipAug',
        image_scale=(512,512),
        flip=False,
        transforms=[
            dict(type='Resize', keep_ratio=True),
            dict(
                type='RandomCenterCropPad',
                ratios=None,
                border=None,
                mean=[0, 0, 0],
                std=[1, 1, 1],
                to_rgb=True,
                test_mode=True,
                test_pad_mode=['logical_or', 31],
                test_pad_add_pix=1),
            dict(type='RandomFlip'),
            dict(type='Normalize', **img_norm_cfg),
            dict(type='DefaultFormatBundle'),
            dict(
                type='Collect',
                meta_keys=('filename', 'ori_filename', 'ori_shape',
                           'img_shape', 'pad_shape', 'scale_factor', 'flip',
                           'flip_direction', 'img_norm_cfg', 'border'),
                keys=['img'])
        ])
]


在训练和测试中,都涉及到图像的resize操作,代码中均有resize到(512,512)的操作

但是,仔细校对原始算法中,在测试时,并没有resize到512,而是用了如下代码

dict(
        type='MultiScaleFlipAug',
        scale_factor=1.0,

经跟踪调试,结论是测试时,pipline中并没有resize数据

这个改动,导致test的map相差了4个点

按常理说,图片最终是一定会被resize到512的,有待进一步分析。

————————————————————————————————

又仔细看了算法,centernet是全卷积的网络,算法从头到尾,只有卷积核尺寸,输入、输出深度的现在,对图像的长、宽没有限制。

所以,不需要限制图像尺寸。

测试也表明了,resize操作,会大幅度影响准确率。

你可能感兴趣的:(mmdet,centernet,算法,python,人工智能)