Computer Vision/Object Detection, Segmentation

[MMRotate] Tutorial

Tutorial 1: Learn about Configs [link]

Config file을 검사하려면  python tools/misc/print_config.py /PATH/TO/CONFIG 를 실행하여 전체 구성을 볼 수 있다.

mmrotate는 mmdet을 기반으로 하므로 mmdet의 기본 사항을 배우는 것이 좋다.

 

Modify a config through script arguments

"tools/train.py" 나 "tools/test.py"를 사용해서 작업을 제출할 때, --cfg-options 를 지정해서 config를 수정할 수 있다.

 

- dict chains의 config file을 업데이트
config 옵션은 원래 config의 dict 키(key) 순서에 따라 지정할 수 있습니다. 예를 들어 --cfg-options model.backbone.norm_eval=False는 모델 백본의 모든 BN 모듈을 학습 모드로 변경합니다.

- configs 목록 내에서 key를 업데이트 
일부 config dicts는 당신의 config에서 list로 구성됩니다.
예를 들어 훈련 파이프라인 data.train.pipeline은 일반적으로 목록입니다. [dict(type='LoadImageFromFile'), ...].
파이프라인에서 'LoadImageFromFile'을 'LoadImageFromWebcam'으로 변경하려면 --cfg-options data.train.pipeline.0.type=LoadImageFromWebcam을 지정할 수 있습니다.목록/튜플의 값을 업데이트합니다.

- list/tuples의 값을 업데이트
업데이트할 값이 목록 또는 튜플인 경우. 예를 들어 구성 파일은 일반적으로 workflow=[('train', 1)]로 설정합니다. 이 키를 변경하려면 --cfg-options workflow="[(train,1),(val,1)]"을 지정할 수 있습니다.
따옴표 "는 list/tuple 데이터 유형을 지원하는 데 필요하며 지정된 값의 따옴표 안에 공백이 허용되지 않습니다.

 

Config file naming convention (config file 명명규칙)

{model}_[model setting]_{backbone}_{neck}_[norm setting]_[misc]_[gpu x batch_per_gpu]_{dataset}_{data setting}_{angle version}

{  } 는 필수 항목이고, [  ] 는 선택 항목

  • {model}: 모델 종류. 예) rotated_faster_rcnn, rotated_retinanet, etc.
  • [model setting]: rotated_retinanet 용 hbb 등과 같은 일부 모델에 대한 특정 설정
  • {backbone}: backbone 종류. 예를 들어 r50 (ResNet-50), swin_tiny (SWIN-tiny).
  • {neck}: neck 종류. 예를 들어 fpn, refpn.
  • [norm_setting]: bn(Batch Normalization)이 지정되지 않는 한 사용되며, 다른 norm layer 유형은 gn(Group Normalization), syncbn(Synchronized Batch Normalization)일 수 있습니다. gn-head/gn-neck은 GN이 헤드/넥에만 적용됨을 나타내고, gn-all은 GN이 전체 모델에 적용됨을 의미합니다. e.g. backbone, neck, head.
  • [misc]: 여러가지 잡다한 setting/plugins of the model, e.g. dconv, gcb, attention, albu, mstrain.
  • [gpu x batch_per_gpu]: GPUs and samples per GPU, 1xb2 가 기본적으로 사용됨
  • {dataset}: dataset like dota.
  • {angle version}: like oc, le135, or le90.

Tutorial 3: Customize Models [link]

기본적으로 모델의 구성요소를 5가지로 분류한다.

  • backbone : 일반적으로 feature maps을 추출하기 위한 FCN 네트워크(예: ResNet, Swin).
  • neck : backbones와 heads 사이의 구성요소 (예: FPN, ReFPN)
  • head : bbox prediction과 같은 특정한 작업을 위한 구성 요소
  • roi extractor : feature maps에서 RoI features을 추출하기 위한 부분(예: RoI Align Rotated).
  • loss : losses 계산을 위한 헤드의 구성 요소(예: FocalLoss, GWDLoss 및 KFIoULoss).