인프런 커뮤니티 질문&답변

안준우님의 프로필 이미지
안준우

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

Mask RCNN의 config와 모델의 최종 평가에 관해 질문 드립니다.

작성

·

377

0

안녕하십니까!

 

먼저 좋은 강의를 해 주셔서 감사드립니다.

질문 드리겠습니다.

 

1. Mask RCNN 학습을 위해 config파일을 불러오고 파라미터를 설정을 합니다.

그리고 inference를 하기 이해 위에서 설정 된 config를 사용을 합니다.

 

만약. 학습과 inference를 각각 한다면(inference를 이한 주피터 노트북을 따로 생성)

inference를 하기 위해 학습때와 동일하게 config를 파일을 불러오고 파라미터를 설정하고 사용을 해야 되나요?

예를 들어 학습시에 config를 파일을 불러오고 파라미터를 설정한 config를 파일로 저장하고 inference시에 그 파일을 불러와서

사용을 할 수도 있나요?

 

2. Mask RCNN 학습 시에 train과 validation dataset을 구성합니다.

validation으로 검증을 하면서 학습을 하고 모델을 생성합니다.

생성된 모델을 평가하기 위해서는 Test 데이터셋으로 평가하는 방법이 궁급합니다.

 

부탁드립니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

강의를 잘 듣고 계시다니, 저도 감사드립니다. 

1. 가급적이면 강의에서 언급한대로 default config를 읽어들인다음 개별 config 값을 수정하는 것을 권장드립니다. config 파일은 mmdetection/configs/_base_ 디렉토리에 서로 다른 개별 config값이 서로 다른 위치에 기재되어 있습니다. 때문에 _base_를 굳이 수정하실 필요는 없을 것 같습니다. 

만약 config 파일 수정을 원하신다면 아래와 같이 _base_에 default config를 설정하신 뒤에 변경 개별 config를 아래와 같이 입력하셔서 manual_change_config.py와 같은 형태로 만드시고, 이를 train시 로드 하셔야 합니다.  

# The new config inherits a base config to highlight the necessary modification
_base_ = 'mask_rcnn/mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_coco.py'

# We also need to change the num_classes in head to match the dataset's annotation
model = dict(
    roi_head=dict(
        bbox_head=dict(num_classes=1),
        mask_head=dict(num_classes=1)))

# Modify dataset related settings
dataset_type = 'COCODataset'
classes = ('balloon',)
data = dict(
    train=dict(
        img_prefix='balloon/train/',
        classes=classes,
        ann_file='balloon/train/annotation_coco.json'),
    val=dict(
        img_prefix='balloon/val/',
        classes=classes,
        ann_file='balloon/val/annotation_coco.json'),
    test=dict(
        img_prefix='balloon/val/',
        classes=classes,
        ann_file='balloon/val/annotation_coco.json'))

# We can use the pre-trained Mask RCNN model to obtain higher performance
load_from = 'checkpoints/mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco_bbox_mAP-0.408__segm_mAP-0.37_20200504_163245-42aa3d00.pth'

이걸 하시려면 mmdetection/tools/train.py 로 해당 config를 사용하면 됩니다. 

python tools/train.py manual_change_config.py

2. 적용이 가능합니다만, 제가 강의에서 설명을 드리지는 않아서 tools 밑에 test.py를 이용하셔야 할 것 같습니다. 

mmdetection/tools 디렉토리에 가시면 test.py 파일이 있습니다. 여기에 인자로 config 파일, 학습된 pretrained 모델 파일, evaluation 평가 지표(bbox segm), 작업결과 디렉토리 값을 인자로 넣어주면 도비니다. 

python tools/test.py \

    configs/manual_change.py #config 파일 입니다. 

    work_dirs/latest.pth  #학습된 pretrained 모델입니다. 

    --eval bbox segm # evaluation 평가 지표 입니다. 

    --show-dir results/balloon #작업 결과 디렉토리입니다. 

안준우님의 프로필 이미지
안준우
질문자

답변 감사합니다.

안준우님의 프로필 이미지
안준우

작성한 질문수

질문하기