코딩하는 해맑은 거북이
[부스트캠프 AI Tech 5기] LV2 - Object Detection 본문
본 게시물의 내용은 '부스트캠프 AI Tech lv2' Object Detection 대회를 마치고 작성하였다.
Object Detection 대회를 마치며...
해당 대회는 쓰레기를 Detection 하여 분리수거하는 모델을 만드는 것이다.
쓰레기는 General trash, Paper, Paper pack, Metal, Glass, Plastic, Styrofoam, Plastic bag, Battery, Clothing 으로 총 10개의 클래스를 구분하는 문제이다.
총 9754장의 일상에서 찍은 데이터셋을 제공해주었고, 전체 데이터셋 중 4883장은 train, 4871장은 test 데이터셋으로 활용된다.
평가방법은 mAP50(Mean Average Precision)이다.
- 프로젝트 전체 기간 : 23년 5월 2일 (화) 10:00 ~ 5월 18일 (목) 19:00
- 랩업 리포트 및 동료피드백 제출 : 23년 5월 22일 (월) 14:00 까지
총 프로젝트 기간은 약 3주지만,
이전 Image Classification 대회와 마찬가지로 강의를 듣는 시간 1주,
detecion 라이브러리 이해하는 시간 3일 등의 시간을 빼면, 약 1주 반의 대회기간이었다.
이전 대회를 통해 깨달은 점을 이번 대회에 많이 적용해보려 노력했었던 것 같다.
이전 대회에선 큰 성과를 보여주긴 했어도, 협업이 아닌 단독행동을 많이 했었던 것 같다 느꼈었다.
이번에는 팀원들과 협업을 위주로 계획적인 실험을 목표로 삼고 대회를 임했었다. (팀원들도 마찬가지!)
대회 종료 전날까지 우리팀은 리더보드 결과에 신경쓰지 않고 꿋꿋이 계획적인 실험을 이어나간 것 같다..!
마지막날 드디어 지금까지 실험했던 모델들에 대해 Ensemble을 시도했었는데, 13위에서 6위로 순위가 확 오르는 것을 보았다.
그전까지 다들 리더보드에 신경쓰진 않았지만, 마지막날에는 그래도 확 순위가 오르니 다같이 기뻐했었다..!
(기쁨에 잠시 제 정신을 못차리기도 했던..)
리더보드 순위에 연연하지 않기로 했지만, 협업을 놓치지 않으면서 중상위권으로 마무리 지을 수 있어서 만족스러웠다😊
이번 대회에서도
- EDA를 통해 세운 가설에 대해 검정을 못한 점
- PR 코드리뷰를 꼼꼼하게 못한 점
- 비슷한 Task에 대한 Search를 먼저 하지 못한 점
- 모델에 대한 정확한 이해도 없이 선택하여 사용한 점
등등 팀원 모두가 공통적으로 이와 같은 아쉬움을 표현했다.
부스트캠프 기간동안 혹은 그 이후에도 앞으로도 많은 대회나 프로젝트들이 남아있으니..
아쉬움은 교훈으로 승화시키고, 다음에 더욱 성장한 모습이 보일 것으로 기대된다.
나의 역할
팀원 모두가 맡았던 역할은 EDA, dataset split, online augmentation 이다.
각자 EDA를 해와서 공유를 진행하였고, Dataset을 Train과 Validation으로 분리했을 때, 어떤 방법이 가장 좋은 성능을 냈는지 확인하였다. 또한, 16개의 Augmentation을 분담하여 성능을 확인해보았다.
이 외에 제가 맡은 역할은 아래와 같이 크게 offline augmentation, optimizer, pseudo labeling, ensemble로 4개이다.
optimizer는 해당 부분 코드만 바꿔서 성능을 비교해본 것이 전부여서 아래 설명에선 생략한다.
- offline augmentation
먼저 EDA를 진행했을 때, 이전 대회와 마찬가지로 클래스별 불균형이 있는 것을 파악했었다. 특히 가장 부족했던 Battery 클래스에 대해 Up-Sampling이 필요해보아 진행하였고 성능을 개선시켰었다. 하지만, 뒤늦게 Confusion Matrix를 통해 확인해보니 Battery 클래스를 가장 예측을 잘하는 것으로 확인하였다. 이는 Battery는 대부분의 모양이 일정하게 형성되어 있어 그런 것 같다는 결론을 내렸다. 즉, Battery 클래스는 데이터셋이 가장 적지만 큰 문제가 되지 않는다는 것을 뒤늦게 발견한 점이 아쉬웠다. 다음에는 좀 더 꼼꼼한 EDA를 진행해봐야겠다..!
그리고 mmdetection 내에 online augmentation으로 mosaic이 존재하였지만, 데이터셋을 증강시키는 효과를 없었으므로 아직도 부족한 클래스에 대해 Mosaic을 진행해보았고 기대했던 대로 성능을 개선시킬 수 있었다. Mosaic을 구현해볼 때, 4개의 이미지의 bbox의 위치를 선정하는데 꽤 애먹었지만, 직접 시도하고나니 어떻게 동작하는지 정확하게 이해할 수 있었다.
- pseudo labeling
Pseudo Labeling이란 Annotation이 없는 Test Dataset에 대해 학습시킨 모델을 통해 가짜 라벨을 만들어 Train Dataset으로 활용하는 방법이다. 이는 강의에서 kaggle의 Top Solution에서 Pseudo Labeling으로 성능 향상을 시킨 것을 소개시켜주어 시도해보았다. 이번에 처음 시도해보는 것이라 Pseudo Labeling에 대한 임계값을 어느 정도로 설정해서 학습해야 하는지 잘 알지 못했었다. 다음에는 임계값을 설정하는데 임의로 정하지 않고, 다양한 지표를 확인 후에 정할 수 있도록 해봐야 겠다.
- ensemble
Ensemble은 우리 팀에 맞는 코드로 재구성을 하여 공유하였고, 마지막날에 줌으로 화면 공유하여 Ensemble을 시도하고 결과를 비교하여 보여주는 역할을 맡았었다. Ensemble할 모델들과 기법들은 팀원들과 모두 의논 끝에 정하게 되었고 최종적으로 Ensemble로 높은 성능 향상을 보였었다!
배웠던 키워드들
- git flow
- Mosaic
- pseudo labeling
- Tmux
- bash script
- confusion matrix
- mmdetection
- PR Curve
- CosineAnnealingLR
- sklearn의 train_test_split function
Github
GitHub - boostcampaitech5/level2_objectdetection-cv-03: level2_objectdetection-cv-03 created by GitHub Classroom
level2_objectdetection-cv-03 created by GitHub Classroom - GitHub - boostcampaitech5/level2_objectdetection-cv-03: level2_objectdetection-cv-03 created by GitHub Classroom
github.com
Notion
Object Detection Project
A new tool for teams & individuals that blends everyday work apps into one.
calico-dance-4bf.notion.site
'AI > 부스트캠프 AI Tech' 카테고리의 다른 글
[부스트캠프 AI Tech 5기] Week 13 학습 정리 및 회고 (0) | 2023.06.02 |
---|---|
[부스트캠프 AI Tech 5기] Week 12 학습 정리 및 회고 (0) | 2023.05.26 |
[부스트캠프 AI Tech 5기] Week 11 학습 정리 및 회고 (0) | 2023.05.19 |
[부스트캠프 AI Tech 5기] Week 10 학습 정리 및 회고 (0) | 2023.05.12 |
[부스트캠프 AI Tech 5기] Week 9 학습 정리 및 회고 (0) | 2023.05.04 |