Project Outline
Task
눈바디 사진을 이용해 각 신체 부위(body parts) 별로 Semantic Segmentation AI 모델 개발
Metric
- inference 방식으로 제출.
- 별도의 Public, Private 구분 없음.
- mIoU (Mean Intersection over Union) : 각 클래스 별 IoU를 계산하고, 이 값들의 평균을 구한다.
Dataset
"Dense coco2014 데이터 셋" 및 "Alchera에서 제공한 데이터 셋" 제공.
데이터 셋 labeling은 다음과 같다.
(배경 - 0 / 몸통 - 1 / 오른손 - 2 / 왼손 - 3 / 왼발 - 4 / 오른발 - 5 / 오른쪽 허벅지 - 6 / 왼쪽 허벅지 - 7 / 오른쪽 종아리 - 8 / 왼쪽 종아리 - 9 / 왼쪽 팔 - 10 / 오른쪽 팔 - 11 / 왼쪽 전완 - 12 / 오른쪽 전완 - 13 / 머리 - 14)
머리(14)는 평가에는 사용하지 않는다.
Result
LB : 0.6732(mIoU), 4등
Trial and Errors
EDA
"Dense coco2014 데이터 셋"과 "Alchera에서 제공한 데이터 셋"을 중점적으로 비교
Dense coco 2014 | Alchera | |
Average Image Size | (499, 566) | (1661, 1268) |
Target Object | People in various situations | People in intended situation |
Num of Object in Image | Several | One |
Labeling | Based on Person | Based on Picture |
우선적으로, 라벨링의 통일이 필요했다. 관련하여 남긴 문의의 답변은 다음과 같다.
추가로, 골반 부근의 Body Part를 나누는 기준이 다소 다른 점을 발견했다. 이를 해결하기 위해서, 학습을 마친 뒤 "Alchera 데이터 셋"으로 추가적인 fine tuning을 적용했다. 아쉽게도, 대회 운영방식상 효과가 있었는지는 확인할 수 없었다.
Model
이번 대회에서는 다소 특이한 규정이 있었는데, 제출할 코드와 모델의 용량이 100mb로 제한이 있었다. 시간에 대한 조건은 없이, 성능으로만 비교하기 때문에 적은 용량으로 높은 성능을 보여주는 EfficientNet_b3를 Backbone으로 사용했다.
또한, 학습과는 별도로 제출하기 위한 Pipeline을 구축하여 용량을 최소화시켰다.
Fine tuning
골반 부근을 Test에 맞추기 위해서 fine tuning을 진행했다. 단일 모델을 fine tuning을 통해 골반 부근을 학습한 모델과 더 적은 용량의 모델을 사용하여 골반을 잘 잡는 모델에 가중치를 주어 Soft Voting을 시도했다. 아쉽게도, 위와 같은 이유로 효과가 있었는지는 확인할 수 없었다.
Collarboration Tool
이번 대회에서는 이전처럼 외부의 툴을 사용하기보다는 Github을 최대한으로 활용해서 사용했다. 진행사항을 공유하기 위해서 Project의 칸반 보드를 활용하고, 또한 Issue를 통해서 그때 필요한 부분을 의논하는 용도로 사용했다. 그 외에도 Pull request나 Milestone 등 다양한 Github의 기능을 활용해보는 경험을 쌓았다.
Retrospective
아쉬움이 많은 대회
많은 시도를 진행하지 못했고, 다양한 방법을 적용하지 못했다고 생각한다. 사실 EDA를 통해서 학습 데이터가 부적절하다는 것을 알았지만, 학습을 통해서만 해결하려고 했고, 데이터를 수정하거나 제작하는 방법은 고려하지 않은 점이 아쉬웠다. 또한, 중간까지는 높은 순위를 유지했지만, 최종 순위에서 밀리고 말았다.
대회의 특성상 바로 점수를 확인할 수 없고, 라벨링의 오류 문제로 점수를 확인할 수 있는 기회도 많이 적었던 상황에서 시도한 방법에 대한 피드백을 얻을 수 없어 많이 방황했다. 가장 중요하다고 생각한 골반 부근의 라벨링을 해결하기 위해서 다양한 방법을 사용했고, 실제로 외부 사진으로 테스트를 진행하였을 때 좋은 결과물을 확인할 수 있었다. 하지만, 실제로 정말 좋은 방법이었는가? 확인할 수 없었다. 항상 대회가 생각대로 잘 진행된다는 보장이 없으며, 항상 동일한 조건일 수는 없을 것이다. 실제 현업에서도 위 같은 예상 하지 못 한 상황이 있을 수 있다. 이런 경우에도 자체적으로 성능을 평가할 수 있는 객관적인 방법이 있으면 도움이 될 것 같다.
끝으로
처음으로 시도한 외부 대회에서 아쉽게도 수상을 하지는 못했지만, 항상 부스트캠프에서 준비한 대회만 진행하다 처음으로 외부 대회를 진행하면서 다양한 어려움을 직면했고 이를 통해서 많이 배울 수 있었다. 대회가 끝날 때 까지도, 이 상황을 헤쳐 나갈 방법이 막막하고 잘 떠오르지 않았다. 이후에 동일한 대회에 참여했었던 다른 팀과 대회 솔루션을 공유하면서 미쳐 생각하지 못한 부분을 볼 수 있었다. 다음에 또 다른 대회를 참여하게 된다면, 이번 대회에서 얻었던 경험을 잘 활용하고 싶다.
'Project' 카테고리의 다른 글
올바른 손 씻기 교육을 위한 손 씻기 단계 인식 모델 (0) | 2022.01.18 |
---|---|
재활용 품목 분류를 위한 Semantic Segmentation 대회 Wrap-up (0) | 2021.11.06 |
재활용 품목 분류를 위한 Semantic Segmentation 대회 [3/3] (0) | 2021.11.04 |
재활용 품목 분류를 위한 Semantic Segmentation 대회 [2/3] (0) | 2021.10.29 |
재활용 품목 분류를 위한 Semantic Segmentation 대회 [1/3] (0) | 2021.10.22 |