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

전처리에 관한 고찰 (private 0.74014)

2023.03.13 17:11 1,214 조회
weather.csv

안녕하세요, 제가 했던 전처리에 대한 피드백을 듣고, 여러분이 어떤 전처리를 사용했는지 알고 싶어 이렇게 글을 씁니다.


이번 대회가 제대로 참여하는 첫 대회라서 GPU서버 설정부터 데이터 전처리까지 하나하나 알아가며 해서 초반에 많이 헤맸던 것 같습니다.


ego+crash, timing은 val F1 Score가 잘 나와서 대부분의 전처리는 Weather에 했었는데 전처리들이 성능이 좋지 않았던 이유가 뭘지 생각해 봤습니다.

  1. 전처리 자체의 성능이 좋지 않았다.
  2. 코드를 잘못 짰다.
  3. label이 test의 기준과 달랐다.
  4. 데이터 수가 부족해서 어떤 전처리를 하여도 성능 향상이 없다.

정확한 이유는 모르겠지만 시도했던 전처리 절반 이상이 별로였습니다. 혹시 예상 가는 이유가 있다면 알려주세요!


성능 향상 o

  • ego+crash, timing, weather 3 가지 주제로 나누기
  • normalize -> 3D ResNet 18의 pre-trained dataset (kinetics-400)의 mean, std 사용 (성능 많이 상승)
  • 이상치 제거 -> 데이터 중 터널 안, 셀카, 바닥 보는 것 등등 구도가 블랙박스의 그것과는 다르거나 낮/밤, 날씨를 알 수 없는 데이터는 제거했습니다만, test dataset을 보니 제거하지 않는 것이 나았을지도 모르겠습니다.
  • label 0 datset labeling 및 잘못 labeling된 data re-labeling -> 제 생각엔 성능 향상에 가장 큰 영향을 미친 것 같습니다.
  • Img size resizing -> 이미지 크기를 키워도 보고 줄여도 봤는데 대체적으로 128 ~ 200이 좋은 것 같습니다.
  • train_test_split -> 개인적으로 영향이 크다고 생각합니다. 좋은 데이터라면 그 수가 많을수록 유리하기 때문에 labeling이 잘 되어 있고, 학습 방법이 올바르다고 생각한다면 validation 비율을 줄일 수 있습니다.

성능 향상 x

  • ego, crash, timing, weather 4 가지 주제로 나누기
  • Resampling -> weather의 class imbalance issue를 해결하기 위해 Oversampling, Undersampling 모두 시도해 보았지만 둘 다 성능이 거의 좋아지진 않았습니다.. (Oversampling은 Augmentation과 섞어서 사용한다면 좋을 것 같습니다.)
  • weather를 normal / others, snowy / rainy로 나누기 -> snowy / rainy는 잘 분류하지만 예상 외로 normal / others를 잘 분류하지 못했습니다.
  • Video to Image -> weather를 이미지로 분류하는 방법에 대한 토크를 보고 Xception을 이용해 학습해 val f1 score 0.86까지 도달했지만 막상 test val f1에서는 더 좋지 않은 성능을 나타냈습니다.
  • Video Augmentation: 1) train 밝기 감소, val, test 그대로, 2) train 그대로, val, test 밝기 증가, 3)  colorjitter 및 randomcrop, Randomflip, 4) centercrop, 5) Adversarial Training

그 외 시도들

  1. classifier에 Dense Layer 대신 SVM 써보기
  2. Ensemble
  3. Focal Loss (성능이 하락했는데 많은 분들이 채택하신 걸로 보아 제가 구현을 잘못 했나 봅니다.)
  4. 3D ResNet 50, slowfast -> 모델이 깊을수록 overfitting이 일어나 가벼운 model이 좋은 성능을 냈습니다, (ex. 3D ResNet 18)
  5. L2 Regularization -> optimizer에 weight_decay 추가하시면 됩니다.


Best Val F1 Score (train_test_split = 0.1, 0.2, 0.2 기준)

ego+crash: 0.962       img size = 128

timing: 0.985              img size = 200

weather: 0.820           img size = 200


피드백은 언제나 환영입니다!

로그인이 필요합니다
0 / 1000
orangeblue
2023.03.13 17:20

좋은 글 잘 봤습니다. 고생하셨습니다:)

설빙더아이스
2023.03.13 17:24

감사합니다 :) 막상 써놓고 보니 부끄럽네요,, orangeblue님도 고생하셨습니다!!

캣_지피티
2023.03.13 18:03

설빙더아이스님 좋은 인사이트 공유 감사합니다. 수고하셨습니다 !! 🥳

설빙더아이스
2023.03.13 18:30

감사합니다!! 멜라토닌님도 수고 많으셨습니다!