segmentation model list up
→ Mask R-CNN, Cascade Mask R-CNN, Mask Scoring R-CNN, Hybrid Task Cascade, YOLACT, SOLO, PointRend, DetectoRS, SOLOv2, SCNet, QueryInst
조원들에게 model 분배 후 제출
→ ✔️ Model을 분배했던 이유: MMDetection엔 많은 Instance Segmentation model이 존재하는데 각 model을 공부한 다음 data와 맞다고 생각되는 model을 정하기엔 시간이 촉박하여 조원들에게 model 분배 후 performance를 보고 model을 선정하기로 함.
점수가 높은 model 선정
→ SCNet, Mask Scoring R-CNN, Cascade Mask R-CNN, Mask R-CNN
(0.57 이상의 점수가 나오는 model로 선정)
offline augmentation시 performance는 더 떨어져서 사용하지 않았다.
(cf. rotate vs rotation: rotate는 전체 이미지를 돌리는 것, rotation은 이미지 사이즈는 고정하되 이미지 자체가 회전되고 남는 부분은 padding 시킴.)
기존의 모델과 비교했을때 performance가 증가하는 건 이미지 원본사이즈로 resize시키는 online augmentation 뿐이었다.
(cf. about offline vs online augmentation: https://yoda-it-study.tistory.com/34 )
✔️model selection 후 data 전처리 순으로 workflow를 잡은 이유:
augmentation시 data의 복잡도가 증가하는데 model마다 복잡도도 다양하기 때문에
먼저 model을 고정시키고 augmentation을 다양하게 적용시켜 성능향상을 보는것이 좋을거라 판단해 model을 먼저 선택하였다.
Backbone 분배 후 성능 확인 및 선정
최종 backbone: ResNeXt(default), ResNet strikes back
가장 상위의 performance를 내는 2개의 backbone 선택
model
online aug
backbone
score
cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
ResNeXt(default)
0.6079679485
cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
resnet strikes back
0.6045638857
✔️data 전처리 후 backbone selection 순으로 workflow를 잡은 이유:
data augmentation에 따라 data의 complexity에 변화가 생기는데 backbone은 data로 부터 feature map을 뽑아주는 과정이기 때문에 augmentation을 정한 후 그에 맞는 backbone을 선택하는게 좋을거라 판단해 augmentation후 backbone selection을 하였다.
4주차(8/1 ~ 8/8)
Optimizer 분배 후 선정
SGD(default)에서 adadelta로 변경 후 0.61점대를 넘길 수 있었다.
adadelta를 최종 optimizer로 선정
model
online aug
backbone
optimizer
score
cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
ResNeXt(default)
adadelta
0.6104731677
cascade_mask_rcnn_x101_32x4d_fpn_1x_coco.py
resize(1024, 1280)
ResNeXt(default)
adadelta
0.6110075826
cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
resnet strikes back
adadelta
0.6110104141
2주차에서 선택했던 model들에도 동일한 조건으로 둬 performance 확인
model
online aug
backbone
optimizer
score
ms_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
ResNeXt(default)
adadelta
0.613928616
ms_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
resnet strikes back
adadelta
0.6134804408
cascade mask R-CNN외에도 Mask scoring R-CNN도 높은 성능을 보여주었다.
Discussion
Cascade mask R-CNN, Mask scoring R-CNN의 performance가 더 좋았던 이유?
성능을 높이도록 hyperparameter 조정
IoU threshold 0.2~0.6으로 바꿔주면서 성능이 더 향상되는 것을 확인
왜 performance가 더 향상이 되었을 이유?
model
online aug
backbone
optimizer
IoU threshold
score
ms_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
resnet strikes back
adadelta
0.3~0.6
0.6134804408
ms_rcnn_x101_64x4d_fpn_1x_coco.py
resize(1024, 1280)
resnet strikes back
adadelta
0.2~0.6
0.6171016691
backbone을 ResNet strikes back을 사용함에 따른 performance 향상 이유?