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를 계산하기 때문이라고 한다.
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) 참조