코스포 x 데이콘 자동차 충돌 분석 AI경진대회 채용

도와주세요....

2023.03.12 20:26 1,434 조회

안녕하세요. 대회에 참가하고 있는 학생입니다.

validation f1_score와 test f1_score의 간극이 너무 커 도저히 해결할 방법이 떠오르지 않아 질문글을 남기게 되었습니다.


현재 validation f1_score는 0.95555이고 test f1_score는 0.3 중후반이 나오고 있습니다.


각각 모델 또한 f1_score가 0.9가 넘어간 상태입니다. 각각의 label 별 accuracy도 괜찮은 편입니다.


하지만 결과물을 제출하면 0.3 중후반대에 머물고 있습니다.



제가 validaition f1_score과 test f1_score간에 간극이 생각하는 이유로는

  1. train 데이터와 test 데이터의 라벨 비율이 달라서 validation f1_score와 test f1_score가 다를 수있다.
  2. model이 과적합 되었다.
  3. inference코드에 문제가 있다.

그러하여 확인하기 위해 test 영상과 제출 값들을 직접 200개가량 제출본이랑 영상이랑 비교해보았습니다. 하지만 소수 몇개 뺴고는 정답이었습니다.

그러하여 더욱 미궁에 빠지게 되었고 도저히 해결을 할 방법이 떠오르지 않는 단계까지 도달 하였습니다.


혹시 저와 같은 문제를 겪으신 분 계시는가요? 있으시면 도움 주시면 감사하겠습니다. ㅠㅠㅠ



모델 및 데이터 설명:

모델은 crash+ ego-involve만 분류하는 모델과 weather + timing만 분류하는 모델을 따로따로 만들었습니다.

crash+ ego-involve만 분류하는 모델은 slowfast_r50 pretrained 모델을 사용하였고 weather + timing모델은 efficentnetv2_s 모델을 사용하였습니다.


crash+ ego-involve만 분류하는 모델 영상을 input_data로 사용하였고

weather + timing은 모델은 훈련할 때는 영상을 frame 단위로 쪼개 이미지를 input_data로 사용하였고 inference 단계에서는 쪼갠 이미지를 input으로 넣고 같은 영상끼리의 output 데이터를 합쳐 classificaion하도록 만들었습니다.

loss는 focal loss를 사용했습니다.

로그인이 필요합니다
0 / 1000
건조한안구는싫어
2023.03.12 21:35

실수가 없다면 과적합 아닐까요? 그리고 macro가 점수가 잘 안 나오는 평가산식인 것 같아요.

inthecode
2023.03.12 21:47

모델을  parameter 작은 거로 바꿔보고 확인해 봐야겠네요.
조언 감사합니다.

Redix6
2023.03.12 21:36

1. validation이 높다고 test에서 항상 높을 수는 없습니다. 
2. 해당 test는 public에서 고작 30%만 채점 됩니다.
3. inference code label의 number가 정확한지 train dataset으로 확인해보세요.
답변이 좀 애매모호하다고 느껴지실 수 있는데, 원래 좀 알기 힘든 문제입니다. 
간단하게 test set에서 모델이 잘 추론하고 있는지 확인 할 수 있는 방법은
test set에 대해서 전부 inference 후 label이 전부 잘 나오고 있는지 확인해보세요. 
예를 들어, 추론했는데, 특정 label에 대해서 전혀 추론되고 있지 않다던가, 
이상하게 한 label의 분포가 예상과는 다르게 나온다던가 할 수 있습니다.
제가 보기에 글 쓰신 분의 경우 전자일 것으로 추정됩니다. 
즉 test가 분류하기 어려운 케이스를 많이 포함하고 있는데, 그 어려운 케이스에 대해 추정하지 못하고 있는 상태고
그 비율이 높아 30%내에 들지 않아 (쉬운 케이스에 대해 채점이 안되게 되어)점수가 매우 낮게 나오는 현상일 수 있습니다.
이건 제 추측일 뿐이고, 다른 문제가 있을 수도 있습니다.

inthecode
2023.03.12 21:51

실수가 없다면 redix6님 말대로 1번이거나 3번처럼 test가 어려운경우 라고 생각이 되네요.
조언 감사합니다!!!
시간이 없어서 2번이라 믿고 싶네요 ㅋㅋㅋ

재애애영
2023.03.12 21:45

삭제된 댓글입니다

재애애영
2023.03.12 21:46

혹시 train test split 에서 stratify 옵션 지정하셨나요??

inthecode
2023.03.12 21:53

아니요 startify 적용을 안했었네요. 적용하고 한번 돌려보겠습니다
감사합니다!!!