mmdet training log analyze

HeungJun Kim·2022년 4월 5일
0
post-thumbnail
post-custom-banner

1. training log

  • mmdet을 통해 모델 학습 시 mmdet/work_dir/ 경로에 log 및 학습 모델이 저장된다.
  • mmdet/tools/analysis_tools 에는 학습 결과를 분석하기 위한 스크립트가 존재한다.

MMDet LOG ANALYSIS.Doc

python tools/analysis_tools/analyze_logs.py plot_curve [--keys ${KEYS}][--title ${TITLE}] [--legend ${LEGEND}][--backend ${BACKEND}] [--style ${STYLE}][--out ${OUT_FILE}]

학습 중인 casecade-mask-rcnn-swin-tiny 모델의 로그를 분석해보자.
--keys 인자에는 확인하고자 하는 loss의 name을 넣어주자(여러개 가능)

python tools/analysis_tools/analyze_logs.py plot_curve work_dirs/cascade_mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_1x_coco/20220405_090800.log.json --keys s0.loss_bbox s1.loss_bbox s2.loss_bbox s0.loss_mask s1.loss_mask s2.loss_mask --out result.png

현재 1 Epoch 학습중이지만,
bbox loss는 증가 후 수렴.
mask loss는 감소 후 수렴 추세를 보인다.

각각의 loss가 s0, s1, s2로 3개씩 존재하는 이유는 cascade rcnn 계열 모델이 IOU 크기별로 모델을 연결하는 방식으로, 각각 loss를 계산하기 때문이라고 한다.

2. cascade_mask_rcnn_swin_tiny / custom datasets

  • 커스텀 데이터셋(classes_num = 4)에 대한 트레이닝 결과
  • EpochBasedRunnerAmp / max epoch = 36
  • best 결과(mAP 0.5:0.95) : 0.776(31/36)
  • 결과해석

    레퍼런스 모델의 COCO 데이터셋에서의 성능은 50.4(2번째 행의 Swin-T/3x)로 기대 성능보다 좋은 결과가 나왔다.
    (참고사항: COCO데이터셋에 HTC/Swin을 적용한 SOTA 결과가 mAP 63.3)
    80개의 클래스를 분류하는 coco에 비해, 커스텀 데이터셋은 {4클래스, 밸런싱, 데이터 수} 로 인해 성능이 더 잘나오는 것 같다.
    파란색 그래프는 모든 사이즈에 대한 mAP, 노란색은 small size에 대한 mAP이다.
  • mmdet의 기본 evaluation은 mAP 0.5:0.95, mAP 0.5, mAP 0.75 로 평가한다.
    mAP보다 recall/fppi가 중요한 커스텀 데이터셋에서는 그동안 mAP 0.3(IoU)를 사용해왔는데,
    IoU 0.3을 기준으로 평가하면 recall, mAP는 더 높아질 것으로 예상된다. 아래의 그림 참조.

    GT box 비교 시 IoU 0.3에 대한 검증을 위해서 mmdet/datasets/coco.py 의 414 line에 아래의 코드를 추가해줬다.
414   iou_thrs = [0.3,]
415   print(iou_thrs)
  • mAP(IoU=0.5:0.95) 결과

  • mAP(IoU=0.3) 결과

mAP(IoU=0.3)은 mAP(IoU=0.5:0.95) 대비 훨씬 높은 {Precision/Recall/mAP} 가 계산된다.
아래는 같은 모델로 평가 시 IoU 값에 따른 mAP 비교이다.

mAP(IoU=0.3)      = 0.976
mAP(IoU=0.5)      = 0.973
mAP(IoU=0.75)     = 0.898
mAP(IoU=0.5:0.95) = 0.776

IoU=0.3/0.5의 차이는 크지 않다.
YOLO 원저자는 IoU 0.5를 성능지표로 써야한다고 주장했다.
다크프로그래머 - YOLO와 성능지표(mAP, AP50) 참조

profile
Computer Vision / ADAS / DMS / Face Recognition
post-custom-banner

0개의 댓글