• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

MMdetection COCO dataset metric 질문입니다

21.08.23 22:06 작성 조회수 362

0

안녕하세요 선생님.

현재 Custom dataset을 COCO dataset format으로 변환하여 MMdetection 기반으로 모델을 학습시켰습니다.

COCO format으로 트레이닝한 모델의 mAP 결과를 COCO metric 형태가 아닌, 아래의 middle format을 기반으로 학습한 결과 처럼 instance별로 AP와 mAP를 볼 수 있는 방법이 있는지 궁금합니다.

또한 train 및 test 시에 image scale이 1333, 800으로 셋팅되어 있는 것 같은데, config기반으로 image scale에 대한 환경 파라미터 수정 시 어떻게 코드를 작성해야하는지 여쭤봅니다!

답변 1

답변을 작성해보세요.

0

안녕하십니까, 

1. 여러가지 살펴보았는데, 해당 포맷으로 바꾸려면 소스 코드 레벨에서 작업이 필요할 것 같아서 어렵겠습니다. 

2. 저도 image scale을 바꿔본적은 없는데 image scale을 바꾸려면 아래와 같이 cfg.data.train.pipeline, cfg.data.val.pipeline, cfg.train_pipeline, cfg_test_pipeline 을 모두 바꿔져야 할 것 같습니다. 아래에서img_scale = (1500, 900)으로 기존 config 설정을 바꿔서 돌리시면 됩니다. 

cfg.data.train.pipeline=[
            dict(type='LoadImageFromFile'),
            dict(type='LoadAnnotations', with_bbox=True),
            dict(type='Resize', img_scale=(1500900), keep_ratio=True),
            dict(type='RandomFlip', flip_ratio=0.5),
            dict(
                type='Normalize',
                mean=[123.675116.28103.53],
                std=[58.39557.1257.375],
                to_rgb=True),
            dict(type='Pad', size_divisor=32),
            dict(type='DefaultFormatBundle'),
            dict(type='Collect', keys=['img''gt_bboxes''gt_labels'])
        ]

cfg.data.val.pipeline=[
            dict(type='LoadImageFromFile'),
            dict(
                type='MultiScaleFlipAug',
                img_scale=(1500900),
                flip=False,
                transforms=[
                    dict(type='Resize', keep_ratio=True),
                    dict(type='RandomFlip'),
                    dict(
                        type='Normalize',
                        mean=[123.675116.28103.53],
                        std=[58.39557.1257.375],
                        to_rgb=True),
                    dict(type='Pad', size_divisor=32),
                    dict(type='ImageToTensor', keys=['img']),
                    dict(type='Collect', keys=['img'])
                ])
        ]
  
cfg.train_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='LoadAnnotations', with_bbox=True),
    dict(type='Resize', img_scale=(1500900), keep_ratio=True),
    dict(type='RandomFlip', flip_ratio=0.5),
    dict(
        type='Normalize',
        mean=[123.675116.28103.53],
        std=[58.39557.1257.375],
        to_rgb=True),
    dict(type='Pad', size_divisor=32),
    dict(type='DefaultFormatBundle'),
    dict(type='Collect', keys=['img''gt_bboxes''gt_labels'])
]
cfg.test_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(
        type='MultiScaleFlipAug',
        img_scale=(1500900),
        flip=False,
        transforms=[
            dict(type='Resize', keep_ratio=True),
            dict(type='RandomFlip'),
            dict(
                type='Normalize',
                mean=[123.675116.28103.53],
                std=[58.39557.1257.375],
                to_rgb=True),
            dict(type='Pad', size_divisor=32),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='Collect', keys=['img'])
        ])
]
DH K님의 프로필

DH K

질문자

2021.08.24

선생님, 답변을 통해 많은 도움이 되었습니다. 귀한 시간 내주셔서 감사합니다!