나는 문어~ 꿈을 꾸는 문어~
[Object Detection] 데이콘 - 병변검출 (4) WBF 앙상블~제출 본문
전체 코드 : https://github.com/euiraekim/dacon-lesion-detection
GitHub - euiraekim/dacon-lesion-detection
Contribute to euiraekim/dacon-lesion-detection development by creating an account on GitHub.
github.com
목표
mmdetection을 사용하여 2개의 모델을 학습시키고, yolov5 라이브러리를 사용해 학습하여 총 3개의 모델이 탄생했다.
3개의 모델의 제출 점수를 확인해보고, 3개를 WBF 앙상블하여 제출하고 성능이 얼마나 향상됐는지 비교해본다.
학습된 모델 점수 확인
우선 지금까지 만든 3개 모델의 submission 파일들을 모두 root/result_csv 폴더 아래에 넣어주자.
각각의 점수는 다음과 같다.
Faster RCNN + Swin Transformer L
public score : 0.7302202662
private score : 0.7839559367
RetinaNet + Swin Transformer T
public score : 0.7306795314
private score : 0.783346738
YOLOv5
public score : 0.7133540038
private score : 0.7666140273
WBF (Weighted Boxes Fusion)
WBF는 Object Detection 분야에서 많이 사용되는 앙상블 기법이다. 속도 측면에서 좀 느리긴하지만 대회에서는 그런거 고려하지 않는다.
위 사진에서 빨간 box가 prediction, 파란박스가 ground truth라고 하자. NMS는 3개의 예측 중 가장 맞는 box를 제외하고 다 버린다. 반면에 WBF는 모든 예측을 이용하여 최종 예측을 만들어낸다. 따라서 더 정확하다고한다. 진짜 정확한지 확인해보자.
nms, soft nms, wbf 등을 시원하게 지원해주는 라이브러리가 있다. 이를 먼저 설치하자.
pip install ensemble-boxes
프로젝트 루트 폴더 아래 result_csv 폴더에 3개 모델의 제출 파일들이 들어있는 상태에서 시작한다. test 이미지 폴더의 모든 이미지에 대해 3개 모델의 추론 결과를 wbf한다.
이에 대한 코드는 최상단 프로젝트 코드 링크의 utils/wbf_ensemble.py에서 확인할 수 있다. 다음 명령어를 통해 코드를 실행하자.
cd utils
python wbf_ensemble.py --img-path ../data/data_splited/data_coco/test_images/ --result-path ../result_csv/
- --img-path : test 이미지 폴더
- --result-path : 앙상블 결과 csv 파일이 저장될 폴더. 이 폴더 아래에 ensemble.csv라는 이름으로 저장된다.
ensemble을 완료하고 제출 파일을 저장했으니 제출을 해보도록 할까??!
제출
두구두구두구두구두구...
짠!
위가 public 아래가 private 점수다.
효과(은)는 굉장했다.
'대회 & 프로젝트' 카테고리의 다른 글
[Instance Segmentation] 캐글 - Sartorius (2) YOLOX 학습 (0) | 2022.04.04 |
---|---|
[Instance Segmentation] 캐글 - Sartorius (1) 데이터 전처리 (0) | 2022.04.03 |
[Object Detection] 데이콘 - 병변검출 (3) YOLOv5 학습~제출 (0) | 2022.03.30 |
[Object Detection] 데이콘 - 병변검출 (2) mmdetection학습~제출 (0) | 2022.02.20 |
[Object Detection] 데이콘 - 병변검출 (1) 데이터 전처리 (0) | 2022.02.16 |