CastleJo의 개발일지

Image Classification - 세 번째 시도

|

오류

뼈아픈 실수를 했다.

훈련 코드에 Indent블럭 하나가 잘못되어있어서 훈련이 제대로 안되고있었다.
분명 처음 할땐 괜찮은 정확도가 나와서, 잘 되는줄알았다.

고치기전엔 무려 0.01%, 뒤에서 최고의 점수가 나왔었다.

고친 뒤에는 60%를 좀 넘기는 정확도. 별로 만족스럽지 않았다.

그래서 이유를 찾아봤는데, 다음과 같다.

  • 각각의 모델의 정확도가 90% 언저리였다.
  • 단순 산술계산으로 생각해보자. 18개의 레이블에 정답을 맞출 확률은 3개의 모델이 전부 정답을 맞춰야 할 때이다.
  • 즉, (0.9)^3의 확률, 70% 언저리이다. 거기에 여러 변수를 생각해보니… 3개의 모델이 적어도 95% 이상 확률을 보증해주지 못한다면, 적절하지 않은 방법이라고 생각했다.
  • 또한, 가중치를 가진 모델 3개를 합친 모델에 대해서는 훈련시키지 않았다. 사실 그때는 할 줄 몰랐다는 변명이 더 어울리지만, 어쨋든 못했다.

다시 돌아가

결국 다시 18개의 클래스의 분류 문제로 돌아왔다.

여러 모델을 써봤는데, 몇몇개만 추려본다면 다음과 같다.

  • ResNet50
    결국 최종적으로 채택한 Backbone이다.
    이미지의 특징점을 추출하는데에 매우 좋았고, 가벼웠다.
  • EfficentNet_b2
    메모리의 한계로 학습속도가 너무나도 느렸다.
    또한, 전체적인 특징을 너무 많이 잡아내다보니 얼굴에 집중하지 않는 경향을 보였다.
  • ViT
    상당히 효과적인 모델이라고 하지만 적은 데이터수로는 턱없이 부족한 성능이였다.